can总线系统的设计与实现

can总线系统的设计与实现

ID:18481961

大小:87.00 KB

页数:7页

时间:2018-09-18

can总线系统的设计与实现_第1页
can总线系统的设计与实现_第2页
can总线系统的设计与实现_第3页
can总线系统的设计与实现_第4页
can总线系统的设计与实现_第5页
资源描述:

《can总线系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、CAN总线系统的设计与实现  在现场总线概念的出现到现在的近20年时间里,已经出现了好几种现场总线技术并走向成熟。其中CAN总线已被公认为几种最有前途的现场总线之一。CAN是一种由带有CAN控制器组成的高性能串行数据局域通信网络,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通信,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。由于其具有通信速度快、可靠性高和性能价格比好等突出优点,它正越拉越广泛地应用于汽车、机械工业、纺织机械、农业用机械、机器人、数控机床、医疗器械、家用电器及传感器等领域。图1所示是典型

2、的CAN总线节点的系统框图。  系统硬件设计  SJA1000独立CAN控制器是PHILIPS公司PCA82C200CAN控制器的替代产品,它是在完全兼容PCA82C200的基础上,增加了一种新的工作模式PeliCAN,SJA1000完全支持具有很多新特性的CAN2.0B协议。SJA1000的工作模式通过其内部的时钟分频寄存器中的CAN模式为来选择。SJA1000可以支持多种为处理器的时序特性,如Intel模式或Motorla模式,SJA1000与微处理器的接口非常简单,微处理器以访问外部存储器的方式来访问SJA1000。  TJA1050是控制器局

3、域网CAN协议控制器和物理总线之间的接口,TJA1050可以为总线提供不同的发送性能,为CAN控制器提供不同的接收性能。TJA1050主要有以下特征:完全符合ISO11898标准,最高速到达1Mb/s,输入级3.3V以及5V器件兼容,至少可以连接110个节点。本设计的微处理器为89C51负责初始化SJA1000及通过控制SJA1000实现数据的接收和发送等通信任务,系统电路图如图2所示。  CAN控制器SJA1000的数据线AD0~AD7连接到51单片机的P0口,连接到基址为0xFA00的外部存储器片选信号,当访问地址0xFA00~0xFA31时,C

4、PU可对SJA1000执行相应的读写操作。SJA1000的、、分别与51对应的引脚相连,接51的使51可以通过中断方式访问SJA1000。  系统软件设计  本设计的系统由4个节点组成,一个节点由上位机通过并口转CAN总线的数据收发器构成,另外3个节点由图2所示的单片机CAN总线收发系统构成。单片机系统每秒发送一帧(8个字节)数据。连接上位机的CAN总线收发器有相应的上位机测试软件支持,本文主要介绍单片机CAN总线收发器的程序设计。图3是下位机软件的流程图。  系统设计的部分代码如下:  main()  { Sja_1000_Init();    /

5、/初始化SJA1000 Init_Cpu();     //初始化CPU Init_T0();      //初始化定时器 flag_init=0x00; while(1) { if(rcv_flag)   //rcv_flag为接受标志位,有接收则单片机进行处理 {  rcv_flag=0;BCAN_DATA_RECEIVE(rcv_data); BCAN_CMD_PRG(0X04);  disp_rec(); }if(flag_sec)   //定时中断标志为,定时时间到则发送数据帧 { flag_sec=0; send_data[0]=0xaa

6、; send_data[1]=0x08; send_data[2]=DA1; send_data[3]=DA2;  send_data[4]=DA3;  send_data[5]=DA4;  send_data[6]=DA5;  send_data[7]=DA6;  send_data[8]=DA7;  send_data[9]=DA8;BCAN_DATA_WRITE(send_data); BCAN_CMD_PRG(0X01); } if(err_flag) {  err_flag=0;  disp_err(); Sja_1000_Init(); 

7、} display(a); //循环显示接受数据  SJA1000的初始化过程包括申请进入复位状态,设置总线波特率,设置输出方式,开放错误中断、接受和发送中断。在进行数据发送时数据包前两个字节0Xaa、0X08为描述符,包括11位长的ID(标志符)1位RTR4位描述数据长度的DLC共16位。BCAN_DATA_RECEIVE(rcv_data),为89C51对SJA1000的读数据函数其具体函数定义: bit BCAN_DATA_RECEIVE(unsignedchar*RcvDataBuf) {  unsigned char TempCount

8、;  SJA_BCANAdr=REG_STATUS;             //访问地址指向状态寄存器  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。