前言
CAN 总线对于汽车相当于人的神经系统,其重要性不言而喻。所以懂一些CAN总线相关的知识对于汽车人来说是必不可少的,今天开始研究CAN总线。这个系列算是读书笔记,只记录最干的干货,有些知识点我记的时候也不是很懂,只能先记下来,等以后弄懂了再说。所以以后有很大概率会对此进行更新。
因为我也是个初学者,先踩踩坑,以后如果有能力的话会考虑写一个系统一点的。
入门材料传送门
介绍
CAN总线是广播类型的总线。这意味着所有节点都可以侦听到所有传输的报文,无法将报文单独发送给指定节点。但是CAN硬件能够提供本地过滤功能,让每个节点对报文有选择性地做出响应。
总线使用不归零位填充。模块以线与逻辑连接到总线:如果只有一个节点向总线传输逻辑0,那么不管有多少个节点向总线传输逻辑1,整个总线都处于逻辑0状态。
CAN标准定义四种不同的报文类型。报文使用逐位仲裁智能方案来控制对总线的访问,每条报文都带有优先级标记。
CAN报文
CAN使用短报文 ——最大实用负载是94位。报文中没有任何明确的地址;相反,可以认为报文是通过内容寻址,也就是说,报文的内容隐式地确定其地址。
报文类型
CAN总线上有四种不同的报文类型(或“帧”):
- 数据帧
- 远程帧
- 错误帧
- 过载帧
1. 数据帧
数据帧是最常见的报文类型,由下列主要部分组成:
-
仲裁字段: 当两个或多个节点竞争总线时,确定报文的优先级。
仲裁字段包含:
a. 对于CAN 2.0A,一个11位的标识符和一个支配数据帧的RTR位。
b. 对于CAN 2.0B,一个29位的标识符(其中还包含两个隐性位:SRR和IDE)和RTR位。 - 数据字段:包含0到8字节数据。
- CRC字段:包含一个基于报文大部分数据计算得到的15位校验和。校验和用于错误检测。
校验和checksum:用于校验目的地一组数据项的和,在云居里通信中保证数据的完整性和准确性。
用法:当传输结束时,接收者可以根据这个数值判断是否接到了所有的数据。如果数值匹配,那么说明传送已经完成。
- 应答时隙:任何能够正确接收报文的CAN控制器都会在每条报文的末尾发送一个应答位。传送节点检查应答位是否存在,如果没有检测到应答位,会重新发送报文。
未完待续