CAN协议帧类型有哪些

连接到CAN网络的每个ECU都可以在CAN总线上广播4种类型的CAN消息帧:
1.数据帧
2.远程帧
3.错误帧
4.过载帧

数据帧

数据帧是节点实际传输数据的帧,它可以应用于标准CAN格式,也可以用于扩展CAN格式,具体发送格式取决于CAN网络配置。

标准CAN中的数据帧
如上表中看到的黄色高亮显示部分,对于数据帧传输,RTR位必须为0。

例如
假设ECU想要通过标准CAN以ID为0x2F发送一个字节0x02到CAN总线上,那么数据帧在CAN总线上会以怎样的形式呈现。

数据帧在CAN总线上的显示

扩展CAN中的数据帧格式

除了仲裁段外,扩展CAN中的数据帧格式与标准CAN完全相同,标准CAN中的数据帧标识符字段的长度为11位,而扩展CAN,则为29位标识符。

远程帧

任何节点都可以随时或定期在CAN总线上广播其信息,但是有时如果ECU需要向CAN总线上的另一个ECU请求数据帧,则需要通过远程帧来完成对数据帧的请求。

注意:

  1. 远程帧中没有数据段;
  2. 远程帧中RTR必须为隐性电平(1)
远程帧格式

注意:
在“远程帧”中,没有数据段,但DLC将按原样显示请求的数据大小。

例如:
假设一个ECU向另一个ECU请求ID为0x02F发送一个字节数据,那么标准CAN的远程帧如下所示:

标准CAN远程帧格式

错误帧

根据CAN标准,CAN总线上仅允许消息中的SOF和CRC字段之间极性相同连续的位数为5,但是如果ECU要连续发送5个以上,则必须遵循位填充规范,否则接收节点会将该帧判定为故障或损坏并传输错误帧。

根据CAN标准,错误帧有两个字段:

  1. 错误标志(6-12个显性/隐性位)
  2. 错误定界符(8个隐性位)
    错误标记可能是显性的,也可能是隐性的,这都取决于错误类型。我会在“错误检测和错误限制”一章中详细介绍。

过载帧

过载帧与错误帧格式类似,如果节点太忙,它可以通过任意节点传输,以获得一些时间,以便完成挂起的任务。如今控制器中不再使用,因为过载处理是通过硬件完成的。

由于“错误帧”和“过载帧”之间非常相似,因此有时很难区分。有一个要点可以加以区分,过载帧总是在帧间间隔(消息完成)之后开始,而错误帧不等待消息完成,任何首先检测到错误的节点都将在下一个比特周期内开始发送错误帧。