文章插图
图2 c
报文传输
帧类型
CAN总线在报文传输中,可传输以下4种不同类型的帧报文:
数据帧:数据帧装载的是发送数据,它将数据从发送节点传输到接收节点;
远程帧:远程帧请求具有相同标识符(CANID)的数据帧的发送,实际很少使用;
错误帧:任何节点检测到总线错误时都可以发送错误帧 。由于总线错误帧没有CANID,所以当检测到错误帧时,只知道有错误,但无法定位该错误帧是哪个模块发送的;
过载帧:过载帧用于在先行的和后续的数据帧之间提供附加的延时 。
帧格式
在CAN2.0B规范中,数据帧和远程帧有两种帧格式,其区别主要在于标识符(即CANID)的长度:具有11位标识符的称为标准帧,而具有29位的帧称为扩展帧,如下图3所示 。数据帧和远程帧都可以使用标准帧或远程帧格式 。帧与帧之间是通过帧间隔进行分开 。
数据帧格式
数据帧由7部分组成:帧起始、仲裁段、控制段、数据段、CRC段、ACK段、帧结束 。
文章插图
图3
帧起始
长度为1位,帧起始(SOF)表示数据帧的起始,由一个单独的显性位组成 。CAN节点发送数据的原则是先监听后发送,即如果CAN节点需要发送数据,先监听总线是否空闲,如果总线空闲,则往总线发送帧起始(SOF),获得发送权,否则一直等待直到总线空闲才发送帧起始(SOF) 。
仲裁段
标准帧和扩展帧的仲裁段不同,长度分别是12bit和32bit 。如上图3所示,在标准帧格式中,仲裁段由11位标识符(CANID)和远程发送请求位(RTR)组成 。在扩展帧中,仲裁段由29位标识符(CANID)、代替远程请求位(SRR)、扩展位(IDE)、远程发送请求位(RTR)组成 。扩展帧标识符由11位基本ID和18位扩展ID组成 。在标准帧中,远程发送请求位(RTR)和IDE固定位0 。而扩展帧中,代替远程请求位(SRR)和IDE固定为1, 远程发送请求位(RTR)固定位0 。
标识符(CANID):用于区分发送数据内容,比如我们定义ID 234发送某传感器采集到的温度值,ID 235发送某传感器采集到的电流值 。对于发送节点来讲,当它需要发送温度数据值,只需要将温度值装入ID为234的报文,需要发送电流数据时,只需要将采集到的电流数据装入ID为235的报文 。对报文接收节点来讲,一旦收到ID为234时,就知道里面装载的是温度值,一收到ID为235时,就知道里面装载的是电流值 。
代替远程请求位(SRR):SRR是一个隐性位 。在扩展帧中11位标识符的下一位是SRR位,而在标准帧中11位标识符的下一位是RTR位,因此SRR称作代替远程请求位 。当标准帧和扩展帧冲突时,并且扩展帧的基本标识符与标准帧的标识符相同时,标准帧优先级高于扩展帧 。
标识符扩展位(IDE):表示该报文为标准格式或扩展格式 。为显性时,表示为标准帧,为隐性时,表示为扩展帧 。
注:如前所述,CAN模块采用先监听后发送的原则,即如果CAN模块需要发送数据时,先监听总线,如果发现总线空闲,则开始发送报文 。如果网络上两个CAN模块刚好同时需要发送报文,他们同时检测到总线空闲 。且同时发送帧起始(SOF) 。那么CANID小的模块发送优先级高,抢占发送权 。
控制段
控制段表示数据段的数据段的长度,由保留位和数据长度码共6bit组成,如下图3所示 。发送数据段的长度是可变的,具体长度由控制段决定 。长度位0-8字节 。DLC编码和数据段长度对应关系如下表所示 。
文章插图
表1
保留位:在标准格式由R1(显性)和R0(隐形)组成 。
CRC段
包括CRC序列(15bit)和CRC界定符(1位,固定为隐性),图下图3所示 。
CRC序列:该序列是对帧起始、帧仲裁段、控制段、数据段的进行CRC计算 。
CRC界定符:CRC界定符是一个位隐性位 。
ACK段
ACK段包含2bit,包括应答位和应答界定符 。
在ACK段,发送节点发送两个隐性位 。当接收节点正确接收到有效报文后,接收模块就会在ACK段的第一位发送隐性位来告知发送模块数据被正常接收了 。应答界定符固定为高电平 。
帧结束(EOF):
帧结束由7个隐性位组成,每个数据帧和远程帧都必须包含完整的帧结束分 。
标准数据帧的长度
因此一帧报文最大长度为:1(SOF)+11(ID)+1(RTR)+6(控制段)+64(数据段)+15(CRC)+1(CRC界定符)+2(ACK)+7(EOF)+3(帧间隔)=111位 。在不考虑位填充的情况下,一帧8个字节的标准帧,需要占用111位 。
推荐阅读
- 从TCP协议的原理来谈谈rst复位攻击
- 单点登录协议有哪些?CAS、OAuth、OIDC等有何异同?
- 详解三种不同的身份验证协议
- 大学|国内3所“神秘”的大学,入学要签保密协议,毕业后就从事铁饭碗
- 安全工具OWASP、Burp Suite、Appscan对比
- 为什么 TCP 协议有粘包问题
- 从一个HTTP请求来读懂HTTP、TCP协议
- ICMP协议及应用
- 比亚迪|比亚迪汉EV巴西上市:价格堪比宝马X5!老外:能打保时捷Taycan
- TCP/IP协议 网络层