CAN协议学习记录1

前言

CAN 总线对于汽车相当于人的神经系统,其重要性不言而喻。所以懂一些CAN总线相关的知识对于汽车人来说是必不可少的,今天开始研究CAN总线。这个系列算是读书笔记,只记录最干的干货,有些知识点我记的时候也不是很懂,只能先记下来,等以后弄懂了再说。所以以后有很大概率会对此进行更新。
因为我也是个初学者,先踩踩坑,以后如果有能力的话会考虑写一个系统一点的。
入门材料传送门


介绍

CAN总线是广播类型的总线。这意味着所有节点都可以侦听到所有传输的报文,无法将报文单独发送给指定节点。但是CAN硬件能够提供本地过滤功能,让每个节点对报文有选择性地做出响应。
总线使用不归零位填充。模块以线与逻辑连接到总线:如果只有一个节点向总线传输逻辑0,那么不管有多少个节点向总线传输逻辑1,整个总线都处于逻辑0状态。

CAN标准定义四种不同的报文类型。报文使用逐位仲裁智能方案来控制对总线的访问,每条报文都带有优先级标记。

CAN报文

CAN使用短报文 ——最大实用负载是94位。报文中没有任何明确的地址;相反,可以认为报文是通过内容寻址,也就是说,报文的内容隐式地确定其地址。

报文类型

CAN总线上有四种不同的报文类型(或“帧”):

  1. 数据帧
  2. 远程帧
  3. 错误帧
  4. 过载帧

1. 数据帧

数据帧是最常见的报文类型,由下列主要部分组成:

  • 仲裁字段: 当两个或多个节点竞争总线时,确定报文的优先级。
            仲裁字段包含:
            a. 对于CAN 2.0A,一个11位的标识符和一个支配数据帧的RTR位。
            b. 对于CAN 2.0B,一个29位的标识符(其中还包含两个隐性位:SRR和IDE)和RTR位。
  • 数据字段:包含0到8字节数据。
  • CRC字段:包含一个基于报文大部分数据计算得到的15位校验和。校验和用于错误检测。

校验和checksum:用于校验目的地一组数据项的和,在云居里通信中保证数据的完整性和准确性。
用法:当传输结束时,接收者可以根据这个数值判断是否接到了所有的数据。如果数值匹配,那么说明传送已经完成。

  • 应答时隙:任何能够正确接收报文的CAN控制器都会在每条报文的末尾发送一个应答位。传送节点检查应答位是否存在,如果没有检测到应答位,会重新发送报文。

未完待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容