CAN(Controller Area Network)总线是一种多主控制、串行通信协议,采用差分信号线实现数据传输,广泛应用于汽车、工程机械、医疗设备等行业。CAN总线上的报文分为标准帧和扩展帧两种,一般的CAN报文格式如下:
CAN报文由CAN帧和CAN数据组成,其中CAN帧又分为标准帧和扩展帧,标准帧有11位ID,扩展帧有29位ID。CAN数据长度最长为8字节。
每个CAN报文都是由发送者发送到CAN总线上,然后由总线广播到所有CAN节点,各个节点根据自己存储在CAN帧ID中的信息,判断是否处理该报文,只有符合条件的节点才会处理该CAN报文。
标准帧CAN报文的ID为11位,由4位的优先级标识符(高位优先)和7位的ID标识符组成,其中优先级标识符越小,报文的优先级越高。标准帧CAN报文格式如下:
起始位-SOF:说明该帧报文的起始,位值为逻辑值0。
ID:标识一个数据包,包括了优先级、扩展标志和标准帧ID。
RTR:远程传输请求标志,指示数据包的类型。
IDE:扩展标识符标志,标志该帧报文是否是扩展帧(IDE=1为扩展帧)。
DLC:数据长度为4位。
Data:8个字节的数据。
CRC:循环冗余校验码,用于确认CAN报文的有效性。
结束位-EOF:CAN报文的结束标志,位值为逻辑值1。
扩展帧CAN报文的ID为29位,由4位的优先级标识符和29位的ID标识符组成,优先级标识符的意义同标准帧CAN报文格式。扩展帧CAN报文格式如下:
起始位-SOF、ID、RTR、IDE:含义同标准帧CAN报文格式。
长度长度-IDL:指明Data段的长度。
Data:8个字节的数据。
CRC:含义同标准帧CAN报文格式。
结束位-EOF:含义同标准帧CAN报文格式。
一般的CAN报文格式分为标准帧和扩展帧两种,分别用于不同场合和应用。标准帧CAN报文格式包含11位的ID,扩展帧CAN报文格式包含29位的ID,由于扩展帧的ID更长,因此可以支持更多的设备。