CAN协议概览
CAN报文,第1页/共3页
CAN总线是一种广播类型的总线。这表示所有节点都可以“听到”所有传输的报文。没有任何方法可以把报文只发送给特定的节点;所有节点都将收到所有报文。但是,CAN硬件提供有本地过滤,这样,每个节点可以只对感兴趣的报文进行响应。
CAN报文
CAN使用短报文 – 最大利用载荷是94位。报文中没有任何明确的地址。但是,可以认为报文是通过内容寻址,也就是说,报文的内容隐含确定了它们的地址。
报文类型
CAN总线上有四种不同的报文类型(或“帧”):
- 数据帧
- 远程帧
- 错误帧和
- 过载帧。
数据帧
概要:“大家好,这是一些标签为X的数据,希望您喜欢!”
数据帧是最常见的报文类型。它由下列主要的部分组成(出于简洁的目的,忽略了一些细节):
- 仲裁字段。当两个或多个节点竞争总线资源时,确定报文的优先级。仲裁字段包括:
- 对于CAN 2.0A,一个11位的标识符和一个控制数据帧的位(RTR位)。
- 对于CAN 2.0B,一个29位的标识符(它还包含两个隐性位:SRR和IDE)和RTR位。
- 数据字段。包含0到8字节的数据。
- CRC字段。包含根据报文大部分内容计算得到的15位检验和。这个检验和用于错误检测。
- 确认槽。任何能够正确接收报文的CAN控制器都将在每条报文的结尾发送一个确认位。发送方检查确认位是否存在,如果没有检测到确认位,将重传报文。
注释1:值得注意的是,总线上存在确认位不表示任何目的地址已经收到报文。我们所知的唯一事情是总线上的一个或多个节点已经正确收到此报文。
注释2:仲裁字段中的标识符(尽管名称有歧义)并不一定标识报文的内容。
CAN 2.0A(“标准CAN”)数据帧CAN 2.0B(“扩展CAN”)数据帧