CAN数据通信机制

本节解释帧和格式的结构(CAN数据通信的基础)以及它们各自的作用。

CAN通讯基础-“显性”与“隐性”

串行通信协议“CAN”被广泛应用于各种领域,主要是在汽车,但也在工业机器和工厂自动化(FA)。在CAN通信中,信息在传输之前先转换成由0和1组成的数字信号。在这种传播中,0称为“显性”,1称为“隐性”。如果显性和隐性同时传播,则该系统以显性为主。此外,CAN在传输前采用各种通信协议中都采用的非归零(Non-Return-to-Zero, NRZ)方法进行数据转换。

不归零制(NRZ)方法
不归零制(NRZ)方法

CAN通信单元“帧”

CAN通信数字信号有一组称为“帧”的帧,有四种类型的帧:数据帧、远程帧、过载帧和错误帧。

数据帧

数据传输的格式称为“数据帧”。数据帧有两种类型:标准格式和扩展格式。

标准格式框架结构

下面对主要用于汽车CAN通信的“标准格式”框架结构进行说明。

标准格式框架结构

这里所示的值显示了每个字段的最大位长。上面的线表示隐性的,下面的线表示显性的。如果一条线只显示为优势线,则该场固定为优势场。类似地,如果一行只显示为隐性,则字段固定为隐性。如果线显示为显性和隐性,它可以根据传输的数据而变化。

SOF
首先从相关节点传输的部分。这个字段被称为“开始帧(SOF)”,因为它表示开始位置,也用于同步节点之间。
ID
确定数据内容、传输节点标识符、优先级仲裁等。该字段由标准格式的11位和扩展格式的29位(11位+ 18位)组成。
RTR
远程传输请求(RTR)字段用于区分数据帧和远程帧,对于数据帧来说是显性的,而对于远程帧来说是隐性的。与ID一样,这个字段也用于仲裁
控制领域
由标识符扩展位(IDE)、保留位“r”(每个1位)和4位数据长度代码(DLC)组成。
数据字段
传输数据的主体称为“数据字段”。根据DLC设置,长度在0到8字节(0到64位)之间变化,设计师可以决定分配什么数据。
CRC序列
发送节点计算出SOF、ID、控制字段和数据字段需要发送的值,并将结果作为循环冗余校验(CRC)序列进行传输。接收节点也进行相同的计算,以确定它是否正确地接收了数据。
CRC分隔符
表示CRC序列的结束。CRC序列和CRC定界符的组合称为CRC字段。
ACK槽
判断传输到CRC字段的数据是否被正确接收。
ACK分隔符
ACK槽位的结束。ACK槽和ACK分隔符的组合称为ACK字段。
EOF
帧结束(EOF)字段在数据帧结束时传输。
ITM
虽然这个字段不在数据帧的范围内,但它指出了ITM(间歇),并且总线在ITM之后变为空闲。ITM只能在过载帧中传输。

框架结构在扩展格式

在扩展格式中,ID到RTR字段不同于标准格式。这种格式主要用于大型车辆,如公共汽车和卡车进行CAN通信。

框架结构在扩展格式
基地ID
标准格式的ID被描述为扩展格式的基本ID。内容与标准格式相同。
SRR
替代远程请求(SRR)位字段是1位隐性的。
IDE
标识符扩展(IDE)位字段是1位隐性的。
扩展的ID
一个11位的标准ID加上一个18位的扩展ID,得到一个29位的字段。标准格式有2048个可识别类型,扩展格式有大约540万个可识别类型。

远程帧

在CAN通信中,将请求某些数据的节点发送一个远程帧,然后拥有数据的节点返回一个数据帧。远程帧基本上是通过从数据帧中删除数据字段来构建的(或者,通过将DLC和数据字段设置为0字节)。RTR被设置为隐性以识别远程帧(它在数据帧中被设置为显性)。然而,为了降低数据占用率,远程帧近年来很少被使用。相反,数据帧通常会定期传输到每个节点。

远程帧
远程帧

过载帧

在CAN出现后的日子里,处理能力微控制器能控制器低,所以“过载框架”被开发来解决这个问题。此帧的主要作用是传送给处理数据帧较慢的节点,从而延迟下一数据帧的开始传输。

过载帧

错误帧

当通信错误(在各种通信错误中)发生时,发送此帧,从而表明CAN网络发生了此通信错误。

错误帧

指数