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接纳/发送缓冲区向物理总线接纳和发送数据。