新闻  |   论坛  |   博客  |   在线研讨会
CAN总线设计详解
lulu888 | 2009-06-24 12:48:44    阅读:17698   发布文章

CAN总线是德国BOSCH公司在20世纪80年代初,为了解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通讯协议。它的短帧数据结构、非破坏性总线性仲裁技术以及灵活的通讯方式适应了汽车的实时性和可靠性要求。

汽车CAN总线的技术背景来源于工业现场总线和计算机局域网这样非常成熟的技术,因此具有很高的可靠性,抗干扰性。

CAN总线的特点

CAN作为一种多主总线,支持分布式实时控制的通讯网络。其通讯介质可以是双绞线、同轴电缆或光纤。在汽车发动机控制部件、传感器、抗滑系统等应用中,总线的位速率最大可达1Mbit/s。CAN总线属于总线式串行通讯网络,由于其采用了许多新技术及独特的设计,与一般的通讯总线相比,CAN总线的数据通讯具有突出的可靠性、实时性和灵活性。其特点可以概括如下:

1) CAN为多主方式工作,网络上任一节点均可在任意时刻主动地向网络上其他节点发送信息,而不分主从,通信方式灵活,且无需站地址等节点信息。利用这一点可方便地构成多机备份系统。

 2) CAN网络上的节点信息分成不同的优先级,可满足不同的实时要求,高优先级的数据最多可在134us内得到传输。

3) CAN采用非破坏性总线性仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间。尤其是在网络负载很重的情况下也不会出现网络瘫痪情况(以太网则可能)。

4) CAN只需通过帧滤波即可实现点对点、一点对多点及全局广播等几种方式传送接受数据,无需专门的“调度”。
 5) CAN采用NRZ编码,直接通信距离最远可达10km(速率5kbps);通信速率最高可达1Mbps(此时通信距离最长为40m)。

 6) CAN上的节点数主要取决于总线驱动电路,目前可达110个;标示符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的标示符几乎不受限制。
 
7) 采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。
 
8) CAN的每帧信息都有CRC效验及其他检错措施,保证数据出错率极低。

9) CAN的通信介质可为双铰线、同轴电缆或光纤,选择灵活。

10) CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响。

CAN总线技术的优点

国内汽车品牌中已经有几款车型应用了总线技术,这些技术完全来自国外。目前应用总线的国产车中大多采用两套独立的CAN总线:一套是动力CAN数据传输系统,另一套是舒适CAN数据传输系统。

使用CAN总线后,对其优点进行了总结,得出以下结论:
1) 如果数据扩展以增加新的信息,只需升级软件即可。
 
2) 控制单元对所传输的信息进行实时检测,检测到故障后存储故障码。

3) 使用小型控制单元及小型控制单元插孔可节省空间。
 
4) 使传感器信号线减至最少,控制单元可做到高速数据传输。
 
5) CAN总线符合国际标准,因此可应用不同型号控制单元间的数据传输。

汽车CAN总线的节点设计

1 CAN节点ECU的设计(硬件)

汽车节点ECU的开发可以选择带有在片CAN的微控制器,也可以选择其它微控制器和相应的片外CAN控制器、收发器。本文以后者为例说明ECU的开发。

带有CAN接口的ECU设计是总线开发的核心与关键,其中ECU的CAN总线模块有几个功能单元构成――CAN控制器和CAN收发器。CAN控制器执行完整的CAN协议,完成通讯功能,包括信息缓冲和接收滤波。CAN控制器与物理总线之间需要一个接口――CAN收发器,它实现CAN控制器与总线之间逻辑电平信号的转换。CAN控制器和收发器完成CAN物理层和逻辑电路层的所有功能。应用层的功能则由软件来实现。

各节点的ECU主要由MCU、DSP、CAN控制器SJA1000、CAN收发器PCA2C250和其它外围器件构成。图5给出一个由51单片机开发CAN节点的原理图(图中省略了SJA1000与PCA2C250之间的光耦等细节),完全可以说明带CAN接口ECU设计的原理。

2 CAN网络通讯的实现(软件)

CAN设计的三层结构模型为:物理层、数据链路层和应用层。物理层和数据链路层的功能由CAN接口器件完成,包括硬件电路和通讯协议两部分。CAN通讯协议规定了四种不同用处的网络通讯帧,即数据帧、远程帧、错误指示帧和超载帧。CAN通讯协议的实现,包括各种通讯帧的组织和发送,均是由集成在SJA1000通讯控制器中的电路实现的,因此系统的开发主要在应用层的设计上。应用层软件的核心部分是CPU与SJA1000通讯控制器之间的数据接收和发送程序,即CPU把待发的数据发给SJA1000通讯控制器,再由SJA1000通讯控制器发到总线上;当SJA1000通讯控制器从总线接受到数据后,CPU再把数据取走。对于单片机而言,操作SJA1000就象访问外部RAM一样简单。首先,应对SJA1000中的有关控制寄存器写入控制字,进行初始化。之后,CPU即可通过SJA1000接收/发送缓冲区向物理总线接收和发送数据。


 

[大 中 小][打印]
参与讨论
登录后参与讨论
telecom  2014-03-12 22:37:00 

收到启发

推荐文章
最近访客