CAN总线通信原理分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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初始化(包括硬件使能、波特率设置、控制器工作模式设置及验收滤波器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之间对总线进行采样判别。
2.2 固定的帧结构
CAN协议中明确定义的固定的帧结构,便于CAN控制器和收发器对总线状态进行监测,在CAN2.0协议规范中,分为标准帧和扩展帧两种帧结构,两者区别只在于仲裁域,
标准帧采用11位标识符,而扩展帧有29位标识符,具体的标准帧、扩展帧帧结构如表1、表2所示。
2.3 硬同步和再同步
2.3.1 硬同步
所谓硬同步就是指在总线空闲期间(即总线电平表现为连续的隐性位),控制器一旦检测到从隐性电平到显性电平的跳变,就说明此时总线上有站点开始发送数据,则强制CAN控制器的位状态计数器同步到图2所示的SS段,同时位时钟从此开始重新计数(CAN位时间由上层软件设定)。硬同步用于帧的起始判定。
2.3.2 再同步
在CAN总线协议中,再同步是基于位填充机制实现的。与HDLC协议类似,在CAN 的帧结构中,从帧起始到CRC序列位为止,一旦检测到5个连续相同极性的位,CAN控制器自动插入一个极性相反的位。再同步就是在数据传输过程中,CAN控制器通过检测总线上的跳变沿与节点内部位时间的差异来调整相位调整段1和相位调整段2,调整大小是由同步跳转宽度编程设定的,调整大小单位为TQ。具体调整规则是,在传输过程中,由CAN控制器检测到的总线上的跳变沿如果位于节点内部的SS位时间段内,则不需要调整;若跳变沿位于TESG1段,说明总线上的位时间相对于节点的位时间有延迟,则CAN控制器延长节点的TESG1位时间段,若延迟时间值(T0值)大于同步跳转宽度,延长时间为同步跳转宽度值,否则节点的CAN控制器延长其与总线位时间的差值;若跳变沿位于TESG2段,说明总线上的位时间相对于节点的位时间有超前,则CAN控制器减少节点的TESG2位时间段,具体调整规则与TESG1段的调整规则相似。
3 CAN总线地址机制分析
不同于工业以太网、RS485等总线,CAN总线是通过数据包ID而非节点地址来收发数据的,即CAN总线上的节点没有固定的地址,取而代之的是每个节点都需要通过软件配置一个ID表(在该节点的验收滤波器单元中),如果总线上的数据包的ID号在该节点的ID 表中存在,则数据包成功通过该节点的验收滤波器单元的验收,并将被送到上层软件处理单
元并进行相应的数据处理,否则,该数据包被丢弃。举例来说,若总线上的节点A想发送数据包到节点B,则该数据包的ID号必须位于节点B的ID表中,同理,若节点A想广播数据包到总线上,则该数据包的ID号必须位于总线上所有其它节点的ID表中。如前所述,ID 表是通过软件进行配置的,但验收滤波功能却是通过CAN控制器中的验收滤波器这个硬件单元进行的,所以从速度上来说,验收造成的延迟很小。另外,采用这种地址机制的优点还在于是采用此总线的系统具有很高的灵活性,即新加入或删除的节点不会影响系统原有节点间的通信。
4 CAN总线仲裁机制分析
总线仲裁,是指当总线上有多个节点在同时发送数据时总线协议的处理方法。CAN总线采用的是无破坏性的仲裁机制,即若总线上的多个节点同时发送数据,具有高优先级数据包的节点仲裁胜出,可以继续发送数据,而其它仲裁失败的节点将退出发送状态而转为接收节点,与其他总线仲裁机制(例如局域网的CSMA/CD)相比,其不仅不会破坏已发送的数据,并且不会造成发送数据的延迟,是CAN总线与其他总线相比的优点之一,其主要是通过CAN总线所具备的如下两个特点实现:1)CAN总线的线与特性,即当总线上多个节点同时发送显性和隐形电平时,总线电平表现为显性电平。2)CAN控制器即使在发送数据的同时也在监控总线电平状态,即当在仲裁时,当控制器发送隐性电平但检测到总线为显性电平时,节点仲裁失败,转为接收节点。
5 CAN总线鲁棒性分析
CAN总线的鲁棒性是通过其对节点和总线数据包安全性的实时检测与监控来实现的,另外,CAN总线通过采用的差分信号对外界干扰信号有较强的抑制作用。具体论述如下。
5.1 实时监控总线波形
CAN控制器不仅在上电后会一直监测总线上其它节点发送的的数据包,并且在自己发送数据包得过程中也在实时监测自己发送的数据,一旦检测到位错误、填充错误、CRC错误、格式错误或者应答错误,该节点就会根据其所处的错误状态(错误激活状态或者错误认可状态)发送相应的错误标志,实际上笔者认为只有错误激活站点发送激活错误标识(即6个连续的显性位后接8个隐性位的错误标识界定符)会对总线及总线上的节点产生影响,而处