CAN总线通信协议详讲

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总线发送总流程

  • 49
    点赞
  • 381
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CAN(Controller Area Network)协议是一种用于实时应用的通信协议,广泛应用于汽车、工业控制和航空航天等领域。CAN协议通过两根差分线(CAN_H和CAN_L)进行数据传输,具有高可靠性、抗干扰能力强和低功耗等特点。 PDF(Portable Document Format)是一种可移植文档格式,由Adobe公司创建,用于电子文档的交换和共享。PDF文件可以在不同操作系统、软件和设备上进行跨平台的浏览和打印。 将CAN协议与PDF结合起来,我们可以将CAN网络相关的技术文档、规范和报告等以PDF格式进行保存、传输和共享。这样,CAN协议的相关信息可以以统一的格式被各个领域的相关人员和设备所使用。 使用PDF格式保存CAN协议的好处有很多。首先,PDF格式文件具有良好的可读性和兼容性,不受不同操作系统和软件的限制,任何设备都可以打开和查看。其次,PDF文件可以保留原始文档的格式、布局和字体等信息,确保文档的完整性。此外,PDF还支持文档的加密和数字签名,可以保护文档的安全性。 对于CAN协议的应用领域来说,使用PDF格式保存相关文档可以方便技术人员进行查阅和研究。同时,供应商和用户之间可以通过共享PDF文件来交流和验证相关技术规范和要求。 综上所述,将CAN协议与PDF格式结合,可以提高CAN网络在各个领域中的应用效率和便利性,促进相关技术的发展和交流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值