CAN数据通信机制
本节解释帧和格式的结构(CAN数据通信的基础)以及它们各自的作用。
CAN通讯基础-“显性”与“隐性”
串行通信协议“CAN”被广泛应用于各种领域,主要是在汽车,但也在工业机器和工厂自动化(FA)。在CAN通信中,信息在传输之前先转换成由0和1组成的数字信号。在这种传播中,0称为“显性”,1称为“隐性”。如果显性和隐性同时传播,则该系统以显性为主。此外,CAN在传输前采用各种通信协议中都采用的非归零(Non-Return-to-Zero, 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网络发生了此通信错误。