CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。
传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。近些年来,CAN控制器价格越来越低。
CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻。为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线。
1)多主工作方式
总线空闲时,任意节点都可以向总线发送信息。
节点的优先权是根据标识符ID决定的,ID不是表示发送的目标地址,而是表示访问总线的消息的优先级,ID越小优先级越高。
2)
CAN的报文格式
CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准帧格式是11位,扩展帧格式是29位。
数据帧
数据帧是使用最多的帧,结构上由7段组成:帧起始,仲裁段,控制段,数据段,CRC段,ACK段和帧结束构成。
远程帧
通过发送远程帧,需要数据的节点可以请求另一个节点发送相应的数据帧,数据帧和相应的远程帧是由相同的识别符ID命名的。
错误帧
过载帧
帧 | 帧用途 |
---|---|
数据帧 | 用于发送单元向接收单元传送数据的帧 |
远程帧 | 用于接收单元向具有相同ID的发送单元请求数据的帧 |
错误帧 | 用于当检测出错误时向其它单元通知错误的帧 |
过载帧 | 用于接收单元通知其尚未做好接收准备的帧 |