什么是CAN总线?-2

描述

在前文一文读懂CAN总线(一)中我们简单介绍了CAN通讯协议,讲了标准CAN和扩展CAN以及CAN消息类型,在本文中将继续为大家深入讲解CAN总线的位填充机制、错误检测和故障界定、网络拓扑、终端匹配、电缆与接线、差分信号电压幅值

 

位填充机制

 定义及机制形式

帧起始、仲裁域、控制域、数据域以及CRC校验和域,均通过位填充方法编码。

位填充是指:

无论何时,发送器只要检测到位流中有5个连续相同逻辑的位,便会自动在位流中插入一个补码位。

举例来说,如果连续5个显性位,则在5个显性位之后自动插入1个隐性位,接收器会自动删除这个插入的填充位。

数据帧或远程帧的剩余位域(CRC界定符、应答域和帧结尾域)形式固定,不填充;错误帧和过载帧也不填充。

作用

1.CAN网络同步需要足够多的上升沿,这是CAN协议规定位填充的目的之一。

2.确保数据帧不会被当作错误帧(由6个连续的显性或隐性位组成)、确保正确识别帧结束标志(7个连续隐性位)。

 

错误检测和故障界定

CAN总线具有很高的“健壮性”,这是因为CAN具有多种错误检查机制。

CAN协议制定了5种错误检测方法,3种位于报文层,2种位于位流层。

如果一个数据帧出现错误,那么这个帧会被丢弃,并且接收节点还会发送一个错误帧。这会强制发送节点重复发送出错的报文,直到接收节点正确接收;如果同一个报文重复出错,达到一定次数后,发送节点可以关闭发送功能以降低对总线的影响。

报文层错误检测

报文层的错误检测包括CRC和ACK。

CRC域包含15位校验、1位界定符;ACK域包括1位应答位、1位界定符。

CRC校验错误

CRC校验错误很好理解,它对数据域以及数据域之前的位生产CRC校验。由于一帧CAN报文数据流很小(最多8个用户数据),所以15位CRC的侦错能力非常优秀。

ACK校验错误

ACK域是怎么起作用的呢?

这是由CAN协议规定的,即发送节点发送一帧数据后,接收节点必须向发送节点应答,如果发送节点没有收到接收节点的应答信号,就会认为自己发送失败,从而重传数据。

报文层的第三种错误检查方法是

格式检查

。这种检查会监控报文中那些一定为隐性位的域,如果这些域中出现显性位,则检测到格式错误。这些域包括SOF、EOF、ACK的界定符和CRC的界定符。

位流层错误检测

位错误

位流层的错误检测之一是发送到总线上的每一个数据位,都会被监视,如果发现发送的位和总线上的位不相同时,产生位错误。

这种监视机制并不会监视仲裁域的位,这是因为多个节点同时竞争总线时,优先级高的节点可能会覆写总线上的仲裁域位。

位填充规则

位流层的另外一个错误检测机制是位填充规则:5个连续相同逻辑位之后,如果第6个位的逻辑还和前五个相同,则产生位填充错误。 

网络拓扑

CAN使用差分信号,需要一对信号线,推荐使用双绞线,网络拓扑如下图所示。

 

CAN总线

CAN总线网络拓扑结构图

使用差分信号可以抑制共模干扰、能够增加系统可靠性,允许使用更高的速率。

高速ISO11898标准规定了CAN传输最高速率为1Mbps,在这个速率下,传输距离最长40米(挂接30个节点,CAN信号不隔离)。推荐节点分支长度最大为0.3米、使用带屏蔽或不带屏蔽的双绞线,线缆特性阻抗为120欧姆。 

终端匹配

 

终端匹配电阻大小等于传输电缆特性阻抗,传输电缆特性阻抗由电缆供应商提供,一般近似为:

Z=√(L/C)

其中L为电缆单位长度感抗,C为电缆单位长度电容。

由于CAN收发器结构,从隐性变成显性由晶体管驱动,所以都是很陡的,但是从显性回到隐性,却需要终端电阻来放电,否则就会由于导线分布电容,缓慢放电,导致位宽错误。

所以所谓的近距离、低波特率CAN总线不加终端电阻的做法,都是错误的。

RS485与CAN总线不同,由于RS485收发器中一般都内置失效保护电路,在近距离、低波特率下允许不加终端匹配电阻。 

电缆与接线

CAN总线采用差分信号传输,如果使用带屏蔽双绞线,屏蔽层应单点接地。

 

 

CAN总线

带单屏蔽层的CAN电缆剖析与连接线示范

通常电缆截面积越小,其分布电容、分布电感和直流电阻越大。当通讯距离较远时,电容、电感和直流电阻会引起信号衰减,波形失真和抖动。

一般情况下,电缆供应商会提供信号衰减图表。

 

 

CAN总线

24-AWG电缆衰减和频率的关系

 

差分信号电压幅值

 

CAN总线

CAN电平幅值

如上图所示,两条信号线CAN_H和CAN_L静态时均为2.5V左右,此时状态表示逻辑1,称作隐性;CAN_H比CAN_L高表示逻辑0,称为显性,此时通常CAN_H电压3.5V、CAN_L电压1.5V。

 

 

CAN总线

 差分电压幅值与电平极性关系

CAN标准规定,CAN总线上的差分电压>0.9V才能被识别成显性电平,<0.5V才能被识别成隐性电平,0.5~0.9之间的电平不能确定电平极性。如上图所示。 

 

CAN总线

终端匹配电阻数目与差分电压幅值关系

在实际项目布线时,容易漏加或者多加终端匹配电阻。我们可以通过测量CAN差分电压幅值来评估是否漏加或多加终端匹配电阻。

如果不计导线电阻,终端电阻固定为120欧姆,单节点CAN总线差分电压如上图所示。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分