汽车CAN总线的数据帧结构 信息想要在CAN-BUS局域网内有效、快速的传递,就要把它转换为适合CAN-BUS总线的传输格式。我们把这种信息称之为报文,把适合CAN-BUS总线传输的格式称之为报文格式。总线上的信息是以不同的固定报文格式发送的,但长度受限。
报文传输格式有以下四种不同的帧类型所表示和控制,所谓帧就是一个计量单位,它的数据由两部分组成:帧头和帧数据。
数据帧:数据帧携带数据,是数据在网络上传输时的一个数据单元。
远程帧:总线单元发送的远程帧,请求发送具有统一识别符的数据帧。
错误帧:任何电控单元检测到总线错误就会发出错误帧。
过载帧:用以在先行和后续的数据帧之间提供以附加的延时。
本次我们主要讲述有关数据帧的相关内容。数据帧由7个不同的位场组成:
1.帧起始SOF(START OF FRAME)
标志数据帧和远程帧的起始,由单个显性位构成。只有当总线位空闲状态时,才允许节点开始发送,所有节点必须同步于首先发送节点的帧起始引起的上升沿。
2.仲裁场AF(Arbitration Field)
在CAN2.0A中,仲裁场由11位标识符和远程发送请求位RTR(Remote Transmission Request)组成;而在CAN2.0B中,仲裁场由29位标识符和远程发送请求位RTR构成。也就是说CAN协议支持两种报文格式,其唯一的区别是标识符(ID)长度的不同,标准格式为11位,扩展格式为29位。
(1)标识符ID(Identifier):标识符分为标准格式标识符和扩展格式标识符。在CAN2.0A中标准格式标识符的长度为11位,这些位以ID-10至ID-0的顺序发送,最低位为ID-0,其中最高7位(ID-10到ID-4)必须不是全隐性。
(2)远程发送请求位RTR (Remote Transmission Request):在数据帧中,远程发送请求位必须是显性电平,而在远程帧中,远程发送请求位必须是隐性电平。在扩展格式中,先发送基本标识符,其后是标识符扩展位和替代远程请求位。扩展标识符在替代远程请求位后发送。
(3)替代远程请求位SRR (Substitute Remote Request): SRR位为隐性位。在扩展格式中,它在标准格式的远程发送请求位位置上被发送,并替代标准格式中的远程发送请求位。这样,可以解决标准格式和扩展格式的冲突。
(4)标识符扩展位IDE (Identifier Extension Bit): IDE位对于扩展格式而言属于仲裁场,对于标准格式来说属于控制场。标识符扩展位在标准格式中以显性电平发送,而在扩展格式中为隐性电平。
3.控制场CF(Control Field)
两种格式的控制场格式不同。在标准格式中,控制场包括DLC (Data Length Code)、IDE位(显性)和保留位0r(显性)。在扩展格式中,包括DLC和两个保留位1r、
2r,这两个保留位必须发送显性电平。DLC为4位,允许使用0到8之间的数字。
4.数据场DF(Data Field)
数据场由数据帧中被发送的数据组成,它可包括从0到8个字节,每个字节8位,其中首先发送最高有效位。
5.循环冗余校验场CRC (Cyclic Redundancy Check)
CRC场包括15位CRC序列和1位CRC界定符(隐性)。CRC生成器所使用的多项式是:X15 + X14+ X10 + X8 + X7 + X4 + X3 + 1,这个多项式除法的余数就是发送到总线上的“循环冗余校验码”,它只用于检测错误而不能校正。
6.应答场ACK (Acknowledge)
ACK场为两位,包括应答间隙(ACK SLOT)和应答界定符(ACK DELIMITER)。在应答场里,发送站发送两个隐性位。当接收器接收到有效的报文时,接收器就会在应答间隙期间发送应答信号,向发送器发送一显性位以示回答。
7.帧结束EOF (END OF FRAME)
每个数据帧和远程帧均由一标志序列界定,也就是帧结尾,这个标志序列由7个隐性位组成。