我们对CAN总线的通信内部消息机制需要进行重点介绍下,了解背后通信的具体内容。
CAN Frame
通过CAN总线进行通信是通过CAN帧完成的。
下面是一个带有11位标识符(CAN 2.0A)的标准CAN帧,这是大多数汽车中使用的类型。扩展的29位标识符帧(CAN 2.0B)除了更长的ID外是相同的。例如,它在重型车辆的J1939协议中使用。
请注意CAN ID和数据部分——这些在记录CAN总线数据时很重要,稍后我们将看到原因。
CAN总线协议的8个消息字段包括:
● SOF:帧起始(Start of Frame)是一个'主导0',用来告诉其他节点一个CAN节点打算发送信息。
● ID:ID是帧标识符——值越低,优先级越高。
● RTR:远程传输请求(Remote Transmission Request)表示一个节点是发送数据还是请求从另一个节点接收特定数据。
● 控制:控制字段包含标识符扩展位(IDE),对于11位标识符是'主导0'。它还包含4位数据长度码(DLC),指定要传输的数据字节长度(0到8字节)。
● 数据:数据字段包含数据字节,也称为有效载荷,其中包括可以提取和解码以获取信息的CAN信号。
● CRC:循环冗余校验(Cyclic Redundancy Check)用于确保数据的完整性。
● ACK:确认(ACK slot)表示节点是否已确认并正确接收了数据。
● EOF:帧结束(EOF)标记了CAN帧的结束。
Extended CAN
扩展CAN帧使用29位标识符以及一些额外的位。在11位标识符之后,扩展消息有一个替代远程请求(Substitute Remote Request,SRR)位,它作为占位符以保持与标准CAN相同的结构。这一次,标识符扩展(IDE)位应该是隐性的,表示随后是扩展标识符。远程传输请求(RTR)位在18位ID之后,紧接着是第二个保留位r1。消息的其余部分保持不变。
扩展CAN消息与标准消息相同,增加了以下内容:
参考链接: