CAN总线通信原理分析总线通信原理分析
文中以ISO11898协议规范为基础,从通信的角度详细分析了CAN总线的节点同步机制、节点地址机制、总线仲
裁机制(即总线冲突解决机制)及总线鲁棒性的实现原理和基础,同时简要介绍了CAN总线的应用特性以及将其应
用于实际系统中时总线的系统分层结构,对深入理解CAN总线协议和将CAN总线应用到具体工程项目中,以及
研究或开发特定要求的总线系统具有指导意义。
CAN(Controller Area Network)总线,即控制器局域网总线,在工业控制、医疗电子、家用电器及传感器领域都得到了广泛的
应用。目前国内外文献中针对CAN总线协议分析的文章主要是针对CAN协议的帧结构以或位时序特性进行分析,如文献鲜有
从通信的角度对CAN总线协议进行分析,鲜有从工程应用的角度出发,对CAN总线的通信机制进行深入分析的文章。
1 CAN应用特性及结构构成
CAN总线协议具有两个国际标准,分别是ISO11898和ISO11519。其中,IS011898是通信速率为125 kbps~1 Mbps的高速
CAN通信标准,属于闭环总线,总线最大长度为40 m/1 Mbps。ISO11519定义了通信速率为10~125 kbps的低速CAN通信
标准,属于开环总线,最大长度为1 km/40 kbps。由于电气特性限制,即总线分布电容和分布电阻对总线波形的影响,CAN
总线上最大节点数目为110个。对于应用工程师,只需正确配置收发端的波特率和位参数即可实现收发节点的数据同步。通过
CAN控制器硬件对报文的标示符滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据。同时,由于CAN报
文采用短帧结构,并且每帧均包含CRC校验部分,保证了数据出错率极低。CAN总线在工程应用中结构构成如图1所示。
系统实现中的CAN应用层、操作系统(在无操作系统的应用中以后台程序实现)及驱动程序共同实现了ISO参考模型中的应用层
功能。其中,CAN应用层定义ID分组、发送数据装包、接收数据处理以及应用层总线安全监测;操作系统/后台程序用于在
CAN中断到达后调度CAN驱动程序对数据进行处理;驱动程序包括初始化(控制器工作状态设置、波特率设置、验收滤波器配
置)、收发驱动及异常处理程序。
对于传输介质层,需要根据环境干扰噪声、总线长度等来确定。在强干扰噪声的情况下必须采用屏蔽线;由于分布电容造成的
总线波形失真及分布电阻造成的总线电平的衰减,总线长度需要考虑采用的传输介质的分布电阻和分布电容特性;同时,若采
用高速总线还需通过实验确定总线的匹配电阻值。
对于CAN控制器的实现,可以选用集成于系统主控芯片的CAN控制器实现,如恩智浦公司出品的LPC2000系列的微控制器,
或者也可以选用分立元件的CAN控制器,如SJA1000。对于CAN收发器的实现,可以选用CTM1050、TJA1050等。若环境干
扰噪声较大,则需在控制器和收发器之间添加隔离芯片或采用集成了隔离功能的CAN收发器。值得一提的是,恩智浦公司新
推出的LPC11C24微控制器芯片中不仅集成了CAN控制器,同时集成了CAN收发器功能,对于CAN总线系统的快速开发提供
了良好的支持。另外,根据实际应用的总线长度及总线上的节点数目,还需考虑收发器芯片的发送和接收的延迟时间。
对于CAN驱动层和应用层,驱动程序包括CAN初始化(包括硬件使能、波特率设置、控制器工作模式设置及验收滤波器ID表配
置)、收/发驱动并向上层提供接口函数,其中需要说明的是验收滤波器的ID表配置需要根据应用层对系统ID的分组来进行;
CAN应用层根据总线上各节点之间的数据收发关系进行数据包的ID分组、发送数据装包、接收数据处理及应用层总线安全监
测等。另外,常用的CAN总线上层协议主要有CANOpen、DeviceNet以及iCAN等。
2 CAN总线同步机制分析
在进行通信过程中,需要解决的最重要的问题之一就是如何实现收发端数据的同步,即接收端可以正确接收和解析发送端发送
的数据。CAN总线协议是一种异步串行通信协议,属于基带通信,其同步的实现源于高级数据链路控制协议(HDLC)。具体来
说,CAN总线协议的同步是通过如下所述的3个方面来实现的。
2.1 参数设定
通信双方通过软件设置相同的波特率、相同的相位调整段长度、相同的同步跳转宽度,通过以上3个元素设置,定义了CAN总
线传输过程中的位时间长度以及采样点位置,位结构如图2所示,图中的CAN时钟即是协议中定义的TQ时间,该时钟是通过
外部时钟或者CPU外设时钟分频后得到的CAN控制器的基本时钟信号,SS段对应于起始段,总线上的跳变沿应发生在此段时
间内,TESG1对应于传输段和相位调整段1,TESG2对应于相位调整段2,对于高速总线,控制器在TESG1和TESG2之间对
总线进行采样判别。