CAN简介

CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519 进行了标准化。现在在欧洲已是汽车网络的标准协议。
CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。
CAN具有很高的可靠性,广泛应用于:汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。
CAN协议的特点:
①多主控制。
总线空闲时,所有单元都可发送消息,而两个以上的单元同时开始发送消息时,根据标识符(ID,非地址)决定优先级。两个以上的单元同时开始发送消息时,对各消息ID
的每个位进行逐个仲裁比较。仲裁获胜(优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。
②系统柔软性。
连接总线的单元,没有类似“地址”的信息,因此,在总线上添加单元时,已连接的其他单元的软硬件和应用层都不需要做改变。
③速度快,距离远。
最高1Mbps(距离<40M),最远可达10KM(速率<5Kbps)。
④ 具有错误检测、错误通知和错误恢复功能。
所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能),正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。
⑤故障封闭功能。
CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。
⑥连接节点多。
CAN总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

ISO11898标准物理层特性:
CAN 控制器根据CAN_L和CAN_H上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。
显性电平对应逻辑:0
CAN_H和CAN_L之差为2V左右。
隐性电平对应逻辑:1
CAN_H和CAN_L之差为0V。

显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。另外,在CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。

上述内容参考(原文链接:https://blog.csdn.net/weixin_44502943/article/details/120511993)并做适当修改。
重点:
CAN的特性;
CAN的显性电平优先权;
01逻辑对应的电平差。

CAN的报文格式

在总线中传送的报文,每帧由7部分组成CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。

在标准格式中,报文的起始位称为帧起始(SOF)然后是由11位标识符和远程发送请求位(RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。

**控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。**它还包括一个保留位 (ro),为将来扩展使用。它的最后四个位用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。

应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。

报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。

如图11所示,具体某一位或某几位下面会详细介绍。

图11 CAN总线报文结构

数据帧

数据帧是使用最多的帧,结构上由7段组成,其中根据仲裁段ID码长度的不同,分为标准帧(CAN2.0A)和扩展帧(CAN2.0B)。

数据帧是由:帧起始,仲裁断,控制端,数据段,CRC段,ACK段和帧结束构成。

如图21所示(具体的帧结构下面会详细介绍)。

图2–1数据帧类型及结构

帧起始和帧结束
帧起始:由单个显性位组成,总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。

帧结束:由7个连续的隐形位组成。

(注:显性电平和隐性电平是相对于CAN_H和CAN_L而言的差分信号电平,并非TTL电平上的高低电平,需要注意)如图2-2所示。


图2–2帧起始和帧结束

仲裁段

CAN-bus是如何解决多个节点同时发送数据,即总线竞争的问题?该问题由仲裁段给出答案。

CAN-bus并没有规定节点的优先级,但通过仲裁段帧ID规定了数据帧的优先级。根据CAN2.0标准版本不同,帧ID分为11位和29位两种。如图23所示


图2–3数据帧结构

如图24所示CAN控制器在发送数据的同时监测数据线的电平是否与发送数据对应电平相同,如果不同,则停止发送并做其他处理。

图2–4仲裁处理

假设节点A、B和C都发送相同格式相同类型的帧,如标准格式数据帧,它们竞争总线的过程是(如图16所示):

图2–5仲裁机制

从该分析过程得出结论是:帧ID值越小,优先级越高;

对于同为扩展格式数据帧、标准格式远程帧和扩展格式远程帧的情况同理

控制段
控制段共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成如图17所示。


图2–6数据帧结构

数据段

一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合如图27所示。


图2–7数据段

数据量小,发送和接收时间短,实时性高,被干扰的概率小,抗干扰能力强。

CRC段

CAN-bus使用CRC校验进行数据检错,CRC校验值存放于CRC段。 CRC校验段由15位CRC值和1位CRC界定符构成如图28所示。
图2–8CRC段

ACK段

当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平如图29所示。
图2–9 ACK段

远程帧

与数据帧相比,远程帧结构上无数据段,由6个段组成,同理分为标准格式和扩展格式,且RTR位为1(隐性电平)如图31所示。

图3–1远程帧结构

如下图所示由于数据帧的RTR位为显性电平,远程帧的RTR位为隐性电平。

所以帧格式和帧ID都相同情况下,数据帧的优先级比远程帧优先级高如图32所示:

图3–2数据帧于远程帧仲裁机制
图3–3数据帧远程帧比较

数据帧与远程帧的区别如图33所示。

错误帧

尽管CAN-bus是可靠性很高的总线,但依然可能出现错误;CAN-bus的错误类型共有5种(如图41所示)。

图4–1错误帧类型

当出现5种错误类型之一时,发送或接收节点将发送错误帧。错误帧的结构如下,其中错误标识分为主动错误标识和被动错误标识如图42所示。

![在这里插入图片描述](https://img-blog.csdnimg.cn/3cf82eb1b1b6492cb377047097f50bf4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiO5ZCb6K-0,size_20,color_FFFFFF,t_70,g_se,x_16

图4–2错误帧电平结构

为防止自身由于某些原因导致无法正常接收的节点一直发送错误帧,干扰其他节点通信,CAN-bus规定了节点的3种状态及其行为如图43所示。
图4–3错误处理机制

(注:这些错误处理的机制是由硬件自主完成的这样做的目的就是只要CAN在收到数据肯定是正确的数据)。

过载帧与帧间隔

过载帧
当某个接收节点没有做好接收下一帧数据的准备时,将发送过载帧以通知发送节点;过载帧由过载标志和过载帧界定符组成如所示图51。
图5–1过载帧结构

由于存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志叠加后超过6个位的现象如所示图52。
图5–2过载帧具体结构

帧间隔

帧间隔用于将数据帧或远程帧和他们之前的帧分离开,但过载帧和错误帧前面不会插入帧间隔。

帧间隔过后,如果无节点发送帧,则总线进入空闲。

帧间隔过后,如果被动错误节点要发送帧,则先发送8个隐性电平的传输延迟,再发送帧。

CAN总线发送总流程

CAN-bus整个链路层处理数据的流程是如图61所示:
图6–1CAN总线发送总流程

CAN总线通信协议详讲相关推荐

  1. 基于STM32开发板I²C总线通信协议浅析

    基于STM32开发板I²C总线通信协议浅析 一.前言 I²C(Inter-Integrated Circuit),中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,是由飞利浦公司在1980 ...

  2. IIC通信协议详解 PCF8591应用(Verilog实现FPGA)

    IIC通信协议详解 & PCF8591应用(Verilog实现/FPGA) 该文章结合PCF8591 8-bit AD/DA 模数/数模转换器来详细介绍IIC通信协议,尽量做到条理清晰,通俗易 ...

  3. STM32 CAN通信协议详解—小白入门(二)

    文章目录 (一)CAN通信协议简介 (二)CAN物理层 2.1.闭环总线网络2.2.开环总线网络2.3.通信节点2.4.差分信号2.5.CAN协议的差分信号 (三)协议层 3.1.CAN的波特率及位同 ...

  4. 【STM32】STM32标准库与HAL库对照学习教程特别篇--系统时钟RCC详讲

    [STM32]STM32标准库与HAL库对照学习教程特别篇--系统时钟RCC详讲 一.前言 二.时钟是什么 三.时钟树 1.时钟树图 2.时钟树讲解 左边部分 中间部分 右边部分 特殊部分 四.初始化 ...

  5. RS-485总线通信协议解析

    RS-485总线技术只是规定了接口的电气标准,并没有规定RS-485接口的电缆,插件以及通信协议,只是OSI规范中物理层的一个标准,由于RS-485总线采用差分平衡传输方式,一般使用的电缆建议采用屏蔽 ...

  6. [I2C]I2C通信协议详解(一) --- 什么是I2C

    [I2C]I2C通信协议详解(一) --- 什么是I2C 摘要:内部集成电路()I2C(Inter-Integrated Circuit)总线是一种两线串行接口,最初由菲利普斯公司开发,用于消费产品. ...

  7. 网络流题目详讲+题单(提高版)(持续更新中......)

    网络流题目详讲+题单(提高版)(持续更新中......) 标签:图论--网络流 PS:如果你觉得自己还不够强(和我一样弱),可以去入门版看看 阅读体验:https://zybuluo.com/Junl ...

  8. 黑猫带你学UFS协议第1篇:全网最全UFS协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

    文/黑猫学长 1 作者想说 笔者本人从事于存储芯片行业多年,对eMMC/UFS/SD等芯片有深入研究,协议尤甚.而今看来,UFS协议在整个存储产品中(包括U盘.SPI.SD卡,NM卡.emmc.SSD ...

  9. linux软raid mdadm命令详讲

    软 RAID mdadm 详讲 一.RAID 介绍 RAID 0 RAID 0(在某些 LaCie 设备中也称为 FAST 模式)是速度最快的一种 RAID 模式.它 需要至少两个驱动器,并且会将数据 ...

  10. 【I²C总线通信协议总结】

    I²C总线通信协议 (1)I²C概述 I²C(Inter-Intergrated Circuit)集成电路总线,该总线是由飞利浦公司在1980年代初设计出来的.主要是用来连接整体电路,是一种多向控制总 ...

最新文章

  1. linux 应用网络连接失败的原因,PuTTY网络错误:软件导致连接中止
  2. linux端口零内存拷贝,Linux设备驱动之I/O端口与I/O内存
  3. [JS+CSS] - 新浪微博滚动特效[兼容FF,Chrome和IE6,7,8]
  4. C#设计模式学习(类型对象模式)
  5. 人机身份验证开发资料
  6. [android]qq输入法手机版 v1.0 build0580,腾讯Android版手写输入法惊艳亮相 手写更畅快...
  7. 搜索关键词,生成云图
  8. Linux Kernel compile
  9. zblog php建站教程_开源建站程序ZBlogPHP博客安装图文教程
  10. Google Spanner原理:地球上最大的单一数据库
  11. HBuilder开发旅游类APP(一) ----- 实现地图插件调用、苹果和安卓同步混合开发
  12. 利用photoprism搭建私有云相册
  13. 根据邮箱地址怎么知道服务器,如何通过技术手段判断邮件地址来源
  14. 计算机中的物理地址与内存
  15. NLP-Task1:基于机器学习的文本分类
  16. 【218】CS架构和BS架构以及数据放在服务端和客户端的利与弊?
  17. 《机器学习》赵卫东学习笔记 第13章推荐系统(课后习题及答案)
  18. 2021年安全员-C证考试题库及安全员-C证免费试题
  19. 基于深度学习的烟火检测——yolov5
  20. 助力陕西企业数字化转型|优炫数据库百城巡展进行时

热门文章

  1. java架构师主要是干什么的,要注意什么?
  2. 中国工业行业分类英文翻译
  3. IT程序员编程工具利器-辅助编程神器
  4. composer如何进行安装和使用
  5. 招标采购专业实务课程大纲--刘小明老师
  6. V-Rep机器人仿真软件模型导入部分
  7. Mac OSX 鼠标键盘事件的监听和模拟
  8. android蓝牙协议栈bluedroid分析,安卓系统蓝牙协议栈 bluedroid 的使能
  9. HRM人力资源管理软件选型最重要的三点
  10. 零基础必看的Html5+Css3+移动端前端教程(四)