文章目录

  • CAN(Controller Area Network)是什么?
  • 总线拓扑图
  • CAN特征
  • CAN协议
    • 数据帧
    • 遥控帧
    • 遥控帧和数据帧相关?
  • 仲裁优先级决定
    • 数据帧和遥控帧的优先级
    • 标准格式和扩展格式的优先级
  • 位填充
  • 位时序

CAN(Controller Area Network)是什么?

控制器局域网CAN(Controller Area Network)1986 年,为适应“减少线束的数量”、“通过多个 LAN,进行大量数据的高速通信”的需要,德国电气商博世公司开发出面向汽车的 CAN 通信协议。
1991年9月,Philips半导体公司制定并发布CAN技术规范:CAN2.0 A/B
1993年11月,ISO组织正式颁布CAN国际标准ISO11898 及 ISO11519
CAN-bus是唯一成为国际标准的现场总线,也是国际上应用最广泛的现场总线之一。

总线拓扑图

CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。

CAN特征

1、多主控制
在总线空闲时,所有的单元都可开始发送消息(多主控制)。
最先访问总线的单元可获得发送权。
多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权。
2、消息的发送
在 CAN 协议中,所有的消息都以固定的格式发送。
总线空闲时,所有与总线相连的单元都可以开始发送新消息。
两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。
ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。
两个以上的单元同时开始发送消息时,对各消息 ID 的每个位进行逐个仲裁比较。
仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。
3、系统的柔软性
与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。
4、通信速度
根据整个网络的规模,可设定适合的通信速度。
在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。
5、远程数据
请求可通过发送“遥控帧” 请求其他单元发送数据。
6、错误检测功能·错误通知功能·错误恢复功能
所有的单元都可以检测错误(错误检测功能)。
检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。
正在发送消息的单元一旦检测出错误,会强制结束当前的发送。
强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。
7、故障封闭
CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。
8、连接
CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。
但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。
降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

CAN协议

数据帧和遥控帧有标准格式和扩展格式两种格式。 标准格式有 11 个位的标识符(Identifier: 以下称 ID) ,扩展格式有 29 个位的 ID。通信是通过以下 5 种类型的帧进行的。

帧用途
数据帧 用于发送单元向接收单元传送数据的帧。
遥控帧 用于接收单元向具有相同 ID 的发送单元请求数据的帧。
错误帧 用于当检测出错误时向其它单元通知错误的帧。
过载帧 用于接收单元通知其尚未做好接收准备的帧。
帧间隔 用于将数据帧及遥控帧与前面的帧分离开来的帧。

数据帧

数据帧由 7 个段构成

帧起始 帧起始表示数据帧开始的段。
仲裁段 表示该帧优先级的段。
控制段 表示数据的字节数及保留位的段。
数据段 数据的内容,可发送 0~8 个字节的数据。
CRC 段 检查帧的传输错误的段。
ACK 段 表示确认正常接收的段。
帧结束 表示数据帧结束的段
显性电平和隐性电平
总线上的电平有显性电平和隐性电平两种。
总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。
“显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平。
“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强。)

(1) 帧起始(标准、扩展格式相同)表示帧开始的段。 1 个位的显性位。

(2) 仲裁段表示数据的优先级的段。标准格式和扩展格式在此的构成有所不同。

注:ID标准格式的 ID 有 11 个位。从 ID28 到 ID18 被依次发送。禁止高 7 位都为隐性。(禁止设定: ID=1111111XXXX)
扩展格式的 ID 有 29 个位。基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到 ID0 表示。基本 ID 和标准格式的 ID 相同。禁止高 7 位都为隐性。(禁止设定:基本 ID=1111111XXXX)

(3) 控制段控制段由 6 个位构成,表示数据段的字节数。标准格式和扩展格式的构成有所不同。

注:保留位( r0、 r1)保留位必须全部以显性电平发送。但接收方可以接收显性、隐性及其任意组合的电平。
数据长度码( DLC)数据长度码与数据的字节数的对应关系如表 8 所示。数据的字节数必须为 0~8 字节。但接收方对 DLC = 9~15 的情况并不视为错误。

(4) 数据段(标准、扩展格式相同)数据段可包含 0~8 个字节的数据。从 MSB(最高位)开始输出。

(5) CRC 段(标准/扩展格式相同)CRC 段是检查帧传输错误的帧。由 15 个位的 CRC 顺序*1 和 1 个位的 CRC 界定符(用于分隔的位)构成。

注:CRC 顺序是根据多项式生成的 CRC 值, CRC 的计算范围包括帧起始、仲裁段、控制段、数据段。接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误

(6) ACK 段ACK 段用来确认是否正常接收。由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成。

注:发送单元的 ACK 段发送单元在 ACK 段发送 2 个位的隐性位。
接收单元的 ACK 段接收到正确消息的单元在 ACK 槽(ACK Slot)发送显性位, 通知发送单元正常接收结束。 这称作“发送 ACK”或者“返回 ACK”。

(7) 帧结束帧结束是表示该该帧的结束的段。由 7 个位的隐性位构成

遥控帧

帧起始( SOF) 表示帧开始的段。
仲裁段 表示该帧优先级的段。可请求具有相同 ID 的数据帧。
控制段 表示数据的字节数及保留位的段。
CRC 段 检查帧的传输错误的段。
ACK 段 表示确认正常接收的段帧结束表示遥控帧结束的段。

遥控帧和数据帧相关?

数据帧和遥控帧的不同
遥控帧的 RTR 位为隐性位,没有数据段。没有数据段的数据帧和遥控帧可通过 RTR 位区别开来。
遥控帧没有数据段,数据长度码该如何表示?
遥控帧的数据长度码以所请求数据帧的数据长度码表示。
没有数据段的数据帧有何用途?
例如,可用于各单元的定期连接确认/应答、或仲裁段本身带有实质性信息的情况下。

仲裁优先级决定

在总线空闲态,最先开始发送消息的单元获得发送权。多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。

数据帧和遥控帧的优先级

具有相同 ID 的数据帧和遥控帧在总线上竞争时, 仲裁段的最后一位(RTR) 为显性位的数据帧具有优先权,可继续发送。

标准格式和扩展格式的优先级

标准格式 ID 与具有相同 ID 的遥控帧或者扩展格式的数据帧在总线上竞争时,标准格式的 RTR 位为显性位的具有优先权,可继续发送。

位填充

位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。

(1) 发送单元的工作在发送数据帧和遥控帧时, SOF~CRC 段间的数据,相同电平如果持续 5 位,在下一个位(第 6 个位)则要插入 1 位与前 5 位反型的电平。
(2) 接收单元的工作在接收数据帧和遥控帧时, SOF~CRC 段间的数据,相同电平如果持续 5 位,需要删除下一个位(第 6 个位)再接收。如果这个第 6 个位的电平与前 5 位相同,将被视为错误并发送错误帧。

位时序

由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。
一个位可分为 4 段。
• 同步段( SS)
• 传播时间段( PTS)
• 相位缓冲段 1( PBS1)
• 相位缓冲段 2( PBS2)
这些段又由可称为 Time Quantum(以下称为 Tq)的最小时间单位构成。
1 位分为 4 个段,每个段又由若干个 Tq 构成,这称为位时序。
1位由多少个 Tq 构成、每个段又由多少个 Tq 构成等,可以任意设定位时序。通过设定位时序,多个单元可同时采样,也可任意设定采样点。

总线(二)CAN通讯协议介绍相关推荐

  1. HSMS/SECS/GEM/GEM300半导体通讯协议介绍

    HSMS/SECS/GEM/GEM300半导体通讯协议解决方案介绍 目录 SECS/GEM协议通讯 1 目录 2 1.介绍 3 1.1 产品概述 3 1.1.1 高扩展性 4 1.2 通讯实现 4 1 ...

  2. 关于物联网通信协议(通讯协议)

    一.区分通讯与通信协议: 1.传统意义上的"通讯"主要指电话.电报.电传.通讯的"讯"指消息(Message),媒体讯息通过通讯网络从一端传递到另外一端.媒体讯 ...

  3. 关于Socket通讯时通讯协议的制定

    在系统开发过程中,如果涉及到了Socket通讯,那就要制定好通讯的协议,只有制定好了规则,后面的工作才方便顺利展开,制作通讯协议时要考虑到通讯的安全性,必要的信息要经过加密处理,同时也要考虑到系统的可 ...

  4. 网络层ICMP和ARP协议介绍

    第四章.网络层协议介绍 文章目录 第四章.网络层协议介绍 一.IP数据包格式 二.ICMP协议介绍(Internet控制报文协议) ping命令的用法:结合具体在什么场景使用什么选项 三.ARP协议介 ...

  5. STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、图像(硬件IIC)

    参考:基于STM32-Oled(IIC)的使用 作者:奋斗的小殷 发布时间: 2021-05-07 13:09:26 网址:https://blog.csdn.net/boybs/article/de ...

  6. ADAS自动驾驶辅助系统通讯协议「ADASIS Protocol」接口定义解析(二)详细

    「ADASIS Protocol Introduction」 --信号接口解析 本文来自微信公众号:[阿波兹得][续]ADASIS Protocol介绍 (2) 信号解析https://mp.weix ...

  7. CAN通讯程序C语言,嵌入式C语言环境下的CAN总线通讯协议

    培训.咨询.项目开发,请与[思想]联系 1.结构体 通过前面文章<>的介绍,对于CAN通讯协议有三个非常重要的信息,分别是报文ID.数据场.解析与偏移.实现通讯协议的第一步就是定义一个报文 ...

  8. 串口RS232 RS485最本质的区别!-!I2C通讯协议 最简单的总线通讯!-深入理解SPi通讯协议!

    5分钟看懂!串口RS232 RS485最本质的区别!-4分钟看懂!I2C通讯协议 最简单的总线通讯!-深入理解SPi通讯协议,5分钟看懂! 一.5分钟看懂!串口RS232 RS485最本质的区别! 二 ...

  9. 动物电子耳标阅读器|识读器|读卡器L8600系列Modbus RTU通讯协议与二次开发说明

    动物电子耳标阅读器|识读器|读卡器L8600系列Modbus RTU通讯协议与二次开发说明适用于L8600-S-02.L8600-R-02,更多MODBUS TCP协议资料欢迎交流! 出厂默认配置: ...

最新文章

  1. [导入]XML for Analysis(XMLA)开发详解-(3)各版本的SQL Server及Windows下配置XMLA over HTTP访问SASS(OLAP)的文档合集...
  2. 【Android游戏开发十八】解放手指,利用传感器开发游戏!
  3. delphi打包python_使用Delphi 编写Python Extension
  4. 静态网站任何优化怎么设置_网站关键词怎么设置对网站推广优化有利?
  5. matlab图像信息熵交叉熵,【机器学习】信息量,信息熵,交叉熵,KL散度和互信息(信息增益)...
  6. 小球进盒子C语言,N个小球放进M个盒子算法-Go语言中文社区
  7. checkbox怎么判断是否选中
  8. python3 super_python3的super详解
  9. Exchange Server 2016 独立部署/共存部署 (四)—— 配置DAG(上)
  10. 次数匹配(不需要在前面加“\”)
  11. mapred linuxtaskcontroller目录权限问题探究
  12. 基于DFA算法的敏感词过滤的go语言实现
  13. 2022-02-03:有一队人(两人或以上)想要在一个地方碰面,他们希望能够最小化他们的总行走距离。 给你一个 2D 网格,其中各个格子内的值要么是 0,要么是
  14. 织梦php调用模型,织梦dede新建模型中自定义联动类别调用
  15. 如何关闭coreldraw x4检测弹出非法软件您的产品已被禁用怎么办?
  16. 计算机学院毕业设计文化衫,毕业文化衫设计大赛
  17. 吴恩达机器学习神经网络 8-1非线性假设
  18. iOS 内购APP显示下载失败问题解决
  19. 机器学习期中考复习(md全是证明题)
  20. 来,看一个真实的用户分析案例!

热门文章

  1. 视频 伪原创 教程 去除视频md5
  2. 李宏毅机器学习|Task02
  3. 四甲基环四硅氧烷D4H
  4. TeeChart 商业版 [2022.4.8] TeeChart.NET 专业版
  5. 【元胞自动机】元胞自动机生命游戏【含Matlab源码 655期】
  6. php收银系统如何连接pos机,如何实现POS机与进销存系统相连接_店铺ERP_企业服务汇...
  7. python画河流图_《Python数据可视化之Matplotlib与Pyecharts》之主题河流图
  8. Endnote X7导入中文文献时,出现信息不全
  9. GBase 8s SQLCODE
  10. ENGLISH资料收集(18)-蔬菜名