1. 简介
CAN总线由德国BOSCH公司开发,最高速率可达到1Mbps。CAN的容错能力特别强,CAN控制器内建了强大的检错和处理机制。另外不同于传统的网络(比如USB或者以太网),CAN节点与节点之间不会传输大数据块,一帧CAN消息最多传输8字节用户数据,采用短数据包也可以使得系统获得更好的稳定性。CAN总线具有总线仲裁机制,可以组建多主系统。
2. CAN标准
CAN是一个由国际化标准组织定义的串行通讯总线。最初是用于汽车工业,使用两根信号总线代替汽车内复杂的走线。CAN总线具有高抗干扰性、自诊断和数据侦错功能,这些特性使得CAN总线在各种工业场合广泛使用,包括楼宇自动化、医疗和制造业。
CAN通讯协议ISO-11898:2003标准介绍网络上的设备间信息是如何传递的,以及符合开放系统互联参考模型(OSI)的哪些分层项。实际通讯是在连接设备的物理介质中进行,物理介质的特性由模型中的物理层定义。ISO11898体系结构定义七层,OSI模型中的最低两层作为数据链路层和物理层,见图2-1。
图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的意思是通过预定编程好的报文优先级逐位仲裁来解决碰撞,报文优先级位于每个报文的标识域。更高级别优先级标识的报文总是能获得总线访问权,即:标识符中最后保持逻辑高电平的会继续传输,因为它具有更高优先级。
ISO-11898:2003标准,带有11位标识符,提供的最高信号速率从125Kbps到1Mbps。更迟一些的修订标准使用了扩展的29位标识符。标准11位标识符位域参见图3-1,提供2048个不同的报文标识符,扩展29位标识符位域参见图3-2,提供537百万个不同报文标识符。
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控制器将接收到的帧正确的放入消息缓冲区是需要一定时间的,帧间隔可以提供这个时间。
· SRR – 代替远程请求位,为隐性。所以当标准帧与扩展帧发送相互冲突并且扩展帧的基本标识符与标准帧的标识符相同时,标准帧优先级高于扩展帧。
· IDE – 为隐性位表示标志位扩展帧,18位扩展标识符紧跟着IDE位。
· r1 – 保留
图14-2给出了更明了的图表显示.
来源:汽车ECU开发