1. 简介 CAN总线由德国BOSCH公司开发,最高速率可达到1Mbps。CAN的容错能力特别强,CAN控制器内建了强大的检错和处理机制。另外不同于传统的网络(比如USB或者以太网),CAN节点与节点之间不会传输大数据块,一帧CAN消息最多传输8字节用户数据,采用短数据包也可以使得系统获得更好的稳定性。CAN总线具有总线仲裁机制,可以组建多主系统。 2. CAN标准 CAN是一个由国际化标准组织定义的串行通讯总线。最初是用于汽车工业,使用两根信号总线代替汽车内复杂的走线。CAN总线具有高抗干扰性、自诊断和数据侦错功能,这些特性使得CAN总线在各种工业场合广泛使用,包括楼宇自动化、医疗和制造业。
图2-1:ISO 11898标准架构分层 在图2-1中,应用程序层建立了上层应用特定协议,如CANopenTM协议的通讯链路。这个协议由全世界的用户和厂商组织、CiA维护,详情可访问CiA网站:can-cia.de。许多协议是专用的,比如工业自动化、柴油发动机或航空。另外的工业标准例子,是基于CAN的协议的,由KVASER和Rockwell自动化开发的DeviceNetTM。 3. 标准CAN和扩展CAN CAN通讯协议是一个载波侦听、基于报文优先级碰撞检测和仲裁(CSMA/CD+AMP)的多路访问协议。CSMA的意思是总线上的每一个节点在企图发送报文前,必须要监听总线,当总线处于空闲时,才可发送。CD+AMP的意思是通过预定编程好的报文优先级逐位仲裁来解决碰撞,报文优先级位于每个报文的标识域。更高级别优先级标识的报文总是能获得总线访问权,即:标识符中最后保持逻辑高电平的会继续传输,因为它具有更高优先级。
3.1 标准CAN 标准CAN只有11位标识符,每帧的数据长度为51+(0~64)=(51~117)位。注:不计位填充(位填充将在本文第5节描述)。 图3-1:标准CAN---11位标识符 · SOF - 帧起始,显性(逻辑0)表示报文的开始,并用于同步总线上的节点。 · 标识符 - 标准CAN具有11位标识符,用来确定报文的优先级。此域的数值越小,优先级越高。 · RTR - 远程发送请求位,当需要从另一个节点请求信息时,此位为显性(逻辑0)。所有节点都能接收这个请求,但是帧标识符确定被指定的节点。响应数据帧同样被所有节点接收,可以被有兴趣的节点使用。 · IDE - 标识符扩展位为显性时表示这是一个标准CAN格式,为隐形表示这是扩展CAN格式。 · r0 - 保留位(可能将来标准修订会使用) · DLC - 4位数据长度代码表示传输数据的字节数目,一帧CAN最多传输8字节用户数据 · 数据0~8 – 最多可以传输8字节用户数据 · CRC - 16位(包括1位定界符)CRC校验码用来校验用户数据区之前的(包含数据区)传输数据段。 · ACK - 2位,包含应答位和应答界定符。发送节点的报文帧中,ACK两位是隐性位,当接收器正确地接收到有效的报文,接收器会在应答位期间向发送节点发送一个显性位,表示应答。如果接收器发现这帧数据有错误,则不向发送节点发送ACK应答,发送节点会稍后重传这帧数据。 · EOF – 7位帧结束标志位,全部为隐性位。如果这7位出现显性位,则会引起填充错误。 · IFS – 7位帧间隔标志位,CAN控制器将接收到的帧正确的放入消息缓冲区是需要一定时间的,帧间隔可以提供这个时间。 3.2 扩展CAN 扩展CAN具有29位标识符,每帧数据长度为71+(0~64)=(71~135)位。注:不计位填充(位填充将在本文第5节描述)。 图3-2:扩展CAN---29位标识符 扩展CAN消息相对于标准CAN消息增加的内容如下: · SRR – 代替远程请求位,为隐性。所以当标准帧与扩展帧发送相互冲突并且扩展帧的基本标识符与标准帧的标识符相同时,标准帧优先级高于扩展帧。 · IDE – 为隐性位表示标志位扩展帧,18位扩展标识符紧跟着IDE位。 · r1 – 保留 4.CAN消息 4.1仲裁 典型CAN的基本原理见图4-1所示,从图中可以看出,总线逻辑状态与驱动器输入和接收器输出逻辑是相反的。正常情况下,逻辑高电平为1,逻辑低电平为0,但是CAN总线却是逻辑高电平为0,称为显性,逻辑低电平为1,称为隐性。所以很多收发器的驱动器输入端都会内置上拉电阻,在没有任何输入时,CAN总线就会表现为隐性(逻辑低电平)。 图4-1:反转的CAN总线逻辑 在总线空闲时,最先开始发送报文的节点获得发送权。
4.2消息类型 CAN有四种不同的报文类型:数据帧、远程帧、错误帧和过载帧。 5.位填充机制 帧起始、仲裁域、控制域、数据域以及CRC校验和域,均通过位填充方法编码。位填充是指,无论何时,发送器只要检测到位流中有5个连续相同逻辑的位,便会自动在位流中插入一个补码位。举例来说,如果连续5个显性位,则在5个显性位之后自动插入1个隐性位。接收器会自动删除这个插入的填充位。
6. 错误检测和故障界定 CAN总线具有很高的健壮性,这可能要归功于CAN具有多种错误检查机制。CAN协议制定了5种错误检测方法:三种位于报文层,两种位于位流层。如果一个数据帧出现错误,那么这个帧会被丢弃,并且接收节点还会发送一个错误帧。这会强制发送节点重复发送出错的报文,直到接收节点正确接收。如果同一个报文重复出错,达到一定次数后,发送节点可以关闭发送功能以降低对总线的影响。
7.网络拓扑 CAN使用差分信号,需要一对信号线,推荐使用双绞线,网络拓扑如图7-1所示。使用差分信号可以抑制共模干扰、能够增加系统可靠性,允许使用更高的速率。
图7-1:CAN总线网络拓扑结构图 8. 终端匹配 终端匹配电阻大小等于传输电缆特性阻抗,传输电缆特性阻抗由电缆供应商提供,一般近似为Z=√(L/C)。其中L为电缆单位长度感抗,C为电缆单位长度电容。
9. 电缆与接线 CAN总线采用差分信号传输,如果使用带屏蔽双绞线,屏蔽层应单点接地。
图9-1:电缆信号分配、接地和终端匹配 通常电缆截面积越小,其分布电容、分布电感和直流电阻越大。当通讯距离较远时,电容、电感和直流电阻会引起信号衰减,波形失真和抖动。
图9-2所示的曲线显示了24-AWG电缆衰减和频率的关系。 图9-2:信号衰减 10. 差分信号电压幅值 如图10-1所示,两条信号线CAN_H和CAN_L静态时均为2.5V左右,此时状态表示逻辑1,称作隐性;CAN_H比CAN_L高表示逻辑0,称为显性,此时通常CAN_H电压3.5V、CAN_L电压1.5V。 图10-1:CAN电平幅值 CAN标准规定,CAN总线上的差分电压>0.9V才能被识别成显性电平,<> 表10-1:差分电压幅值与电平极性关系 在实际项目布线时,容易漏加或者多加终端匹配电阻。我们可以通过测量CAN差分电压幅值来评估是否漏加或多加终端匹配电阻。如果不计导线电阻,终端电阻固定为120欧姆,单节点CAN总线差分电压如表10-2所示。 表10-2:终端匹配电阻数目与差分电压幅值关系 11. 电缆截面积与通讯距离 电缆截面积对通讯距离影响很大,特别是远距离通讯。远距离传输线上的分布电容、分布电感和直流参数会引起信号衰减。很多CAN通讯应用都具有距离远、波特率低的特性。比如本公司的KTC161通讯控制系统使用10kpbs,传输距离要不小于3km。这种情况下,传输电缆的直流电阻对传输距离影响非常大,因为这个直流电阻会和终端匹配电阻分压。
图11-1:传输电缆直流电阻分压示意图 对于双绞线,假设其终端匹配电阻与电缆特性阻抗相同,则截面积与最大通讯距离可参考表11-1: 表11-1:截面积与最大通讯距离关系 为了把电缆直流电阻引起的电压衰减降到最小,较大的终端电阻值(150~300欧姆)有助于增加总线长度。比如使用截面积为1.5 mm2的双绞线电缆,电缆特性阻抗为120欧姆。传输波特率为5kpbs的数据时,使用120欧姆的匹配电阻最远可以传输5km,但使用300欧姆的匹配电阻则可以传输7km! 12. 波特率、终端匹配电阻与通讯距离 上文第11节讲述了传输线截面积与通讯距离的关系,本小节将保持传输线截面积不变,查看其它参数对通讯距离的影响。以截面积为1.5 mm2屏蔽双绞线为例,其波特率、终端匹配电阻与通讯距离的关系如图12-1所示。其中,当波特率较高,通讯距离有限。比如1Mbps,信号隔离后的CAN通讯距离大约为25~30米(大部分的实际项目中都会对CAN通讯模块电气隔离,隔离器件会降低通讯距离)。波特率较低并且将终端匹配电阻增大,可远距离通讯。比如5kbps、终端匹配电阻为390欧姆时,通讯距离可达10km! 图12-1:波特率、终端匹配电阻和通讯距离关系图 13. 信号延迟与通讯距离 高波特率情况下,制约CAN通讯距离的,是信号延迟。信号经过隔离光耦、传输电缆、ESD器件时,都会引起信号延迟。如果CAN的重同步也不足以弥补这个延迟,就会导致采样错误,最终CRC校验错误。
其中:
表13-1:最大延迟参考标准 14. 节点最小间距 CAN总线是分布式参数电路,其电气特性和响应主要由沿物理介质分布的电感和电容所决定。这里物理介质包括连接电缆、连接器、终端和沿总线挂接的CAN设备。
图14-1:负载不均衡的CAN总线原理示意图 CAN总线阻抗不匹配会产生信号反射,雪上加霜的是CAN的仲裁机制:在仲裁期间,两个或更多个节点可能同时发送多个显性位。如图14-1所示,当开关S1在t=0时刻从显性状态切换到隐性状态,CAN驱动器差分输出电压为Vs,总线上的差分信号会由显性状态(Vs)变成稳定的隐性状态(0V)。这个信号波形会沿着总线向下传播,到达总线的负载区时,阻抗不匹配引起的反射电压将返回到源端。 负载与负载之间的最小安全距离d是设备集总负载电容CL和电缆的单位长度分布电容C的函数,定义如下: 设备集总负载电容CL包括CAN收发器引脚、连接器、隔离器件、保护器件、印制电路板走线以及其它物理连线的电容总和。
图14-2:最小CAN设备间距 15. 信号位采样点位置 信号位采样点是指CAN节点识别一个电平逻辑的位置。CAN标准把总线上的每一位都细分为不同的阶段,如图15-1所示。在图中可以看到,每个位被分为同步段、传播段、相位缓冲段1和相位缓冲段2四个连续部分。其中采样点位于相位缓冲段1之后,同步段、传播段、相位缓冲段1和相位缓冲段2的持续时间都是可以编程的,因此采样点位置也是间接可编程的。 图15-1:每一个数据位的分段示意图 一般CAN节点是每个位采样一次(也可以采样3次,多用于低速场合),采样点位置都在一个位的50%以后的区域,这是为了让信号电平趋于稳定。采样点越靠后,波形越稳定。但也不是越靠后越好,采样点位置超过95%时,因为传输过程中的位偏差,可能会引起错误。CIA推荐采样点为一个位时间的87.5%处,实际项目中,一般设置为70%~90%,大部分汽车厂商规定采样点为70~80%。
16. 波特率偏差 由于受到晶振影响,CAN通讯波特率实际值与理论值会有偏差。如果两个节点之间波特率偏差较大,容易造成误码率增大或通讯失败等问题。 17. 节点容抗 在CAN通讯电路设计过程中,节点容抗是容易被忽略的。节点容抗包括收发器引脚电容、PCB走线电容、ESD器件电容以及其它连线电容。
表17-1:单节点电容最大值 18. 节点数量 可以连接到网络上的节点数量由收发器可以驱动的最小负载阻抗来决定。最大节点数量由下面的公式给出(考虑最坏情况): 其中:
19. 共模电压范围 共模电压是指总线上的发送节点地和接收节点地之间的电势差。过高的共模电压会对系统造成影响,可能造成间歇重启、死锁、误码率增高甚至损害设备。在远距离通讯系统中,共模干扰的问题会更加突出,因为随着通讯线距离的增加,地环路会拾取更多的噪声,使得共模电压增大。
20. 总线短路保护和热关断保护 总线短路保护是指总线与电源或地短路后,CAN收发器不会损坏,短路故障解除后,CAN收发器能继续工作。这个特性可以在总线极性反接、电缆绝缘层失效、意外短路到高压源时对收发器提供保护。
21. 电流隔离 远距离数据传输可能会有较大的地电势差、地环流等问题,会在CAN总线上形成高共模电压。如果共模电压超出CAN收发器容忍的最大限度,数据链路就会不正常。
图21-1:远距离通讯电流隔离电路示意图 22. CAN接口电路与RS485接口电路 CAN总线和RS485总线都是采用差分信号传输数据,它们在总线拓扑、终端匹配、信号衰减、隔离与接地、波特率与通讯距离关系等方面都是相似的。但是CAN有自己的一些特性,在接口设计中,不能照抄RS485接口电路。
|
|