![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测 . 技术文库 . 会员区 . 开发板 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| CAN总线系统的设计与实现 | |||||
作者:李胜明 初… 文章来源:电子产品世界 点击数: 更新时间:2008-4-30 ![]() |
|||||
系统硬件设计 SJA1000独立CAN控制器是PHILIPS公司PCA82C200CAN控制器的替代产品,它是在完全兼容PCA82C200的基础上,增加了一种新的工作模式PeliCAN,SJA1000完全支持具有很多新特性的CAN2.0B协议。SJA1000的工作模式通过其内部的时钟分频寄存器中的CAN模式为来选择。SJA1000可以支持多种为处理器的时序特性,如Intel模式或Motorla模式,SJA1000与微处理器的接口非常简单,微处理器以访问外部存储器的方式来访问SJA1000。 TJA1050是控制器局域网CAN协议控制器和物理总线之间的接口,TJA1050可以为总线提供不同的发送性能,为CAN控制器提供不同的接收性能。TJA1050主要有以下特征:完全符合ISO 11898标准,最高速到达1Mb/s,输入级3.3V以及5V器件兼容,至少可以连接110个节点。本设计的微处理器为89C51负责初始化 SJA1000及通过控制SJA1000实现数据的接收和发送等通信任务,系统电路图如图2所示。 系统软件设计 本设计的系统由4个节点组成,一个节点由上位机通过并口转CAN总线的数据收发器构成,另外3个节点由图2所示的单片机CAN总线收发系统构成。单片机系统每秒发送一帧(8个字节)数据。连接上位机的CAN总线收发器有相应的上位机测试软件支持,本文主要介绍单片机CAN总线收发器的程序设计。图3是下位机软件的流程图。 系统设计的部分代码如下: main() SJA1000的初始化过程包括申请进入复位状态,设置总线波特率,设置输出方式,开放错误中断、接受和发送中断。在进行数据发送时数据包前两个字节0Xaa、0X08为描述符,包括11位长的ID(标志符)\1位RTR\4位描述数据长度的DLC共16 位。BCAN_DATA_RECEIVE(rcv_data),为89C51对SJA1000的读数据函数其具体函数定义: bit BCAN_DATA_RECEIVE(unsigned char *RcvDataBuf) 此函数仅限于CAN控制器接受数据,返回值如果为0表示接受成功,如果为1表示接受失败。 BCAN_DATA_WRITE(send_data)函数是89C51对SJA1000的写数据函数其具体定义如下: 此函数将待发送的特定帧各式的数据,送入SJA1000发送缓存区中,然后启动,函数返回0表示将数据成功的送至发送缓冲区,返回1表示上一次的数据正在发送。 系统组网相对容易只需把各个节点挂在同一条双绞线上即可,启动上位机的CAN收发器,用来监视总线数据状态。每当启动一个下位机CAN收发器,上位机的测试软件就可以每隔一秒钟收到由同一CAN收发器发送的数据帧。实验结果显示当3台下位机CAN总线同时发数时数据接收端没有数据丢失和总线冲突现象。 结语 现场总线有着巨大的发展潜力,它将给自动控制领域的变革带来深远的影响。我们设计的CAN总线收发器具有通用性,在本系统设计的基础上只需要相应的修改数据传输协议即可应用于各个CAN总线的数传系统。 参考文献: 1. 陈立元主编. Visual Basic实现串并行通信技术. 清华大学出版社,2001 2. 张学忠,王福成主编. Visual Basic控件应用编程实例教程. 北京希望电子出版社,2002 3. 马希荣主编. Visual Basic 6.0 程序设计. 机械工业出版社,2004 4. 彭禹皓. 基于单片机和CAN控制器的嵌入式系统. 微计算机信息,2007,4-2:33-35 |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 没有相关文章 |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|