CAN总线是什么?CAN总线数据链路层又是什么?

CAN总线是什么?CAN总线数据链路层又是什么?,第1张

在物理线路上,由于噪声干扰、信号衰减等多种原因,数据传输过程中常常出现差错,而物理层只负责透明地传输结构的原始比特流,不可能进行任何差错控制。因此,当需要在一条线路上传送数据时,除了必须有一条物理线路(链路)外,还必须有一些必要的规程来控制这些数据的传输。把实现这些规程的硬件和软件加到链路上,就构成了数据链路层(Data Link Layer)。

什么是 CAN 总线

CAN 是“Controller Area Network”的缩写,即“控制器局域网”,是一个 ISO 标准的串行通信协议。CAN 总线由德国 BOSCH 公司研发设计,用于应对汽车上日益庞大的电子控制系统的需求,其最大的特点是可拓展性好,可承受大量数据的高速通信,并且高度稳定可到。ISO 组织通过 ISO11898 和 ISO11519 对 CAN 总线进行了标准化,使其早早确立了欧洲汽车总线标准的地位。时至今日,CAN 总线已经获得业界的高度认可,其应用也从汽车电子领域延伸至工业自动化、船舶、医疗设备、工业设备等领域。

CAN 总线网络拓扑结构

若隐性电平相遇,则总线表现为隐性电平;

若显性电平相遇,则总线表现为显性电平;

若隐性电平和显性电平相遇,则总线表现为显性电平。

一个典型的 CAN 总线网络拓扑结构如图1所示,注意两端的终端电阻是必需的。

CAN总线是什么?CAN总线数据链路层又是什么?,CAN总线是什么?CAN总线数据链路又是什么?,第2张

CAN总线数据链路层包括

1、通信机制

2、数据帧

3、错误检测

4、帧格式

5、位定时与同步

CAN总线帧格式

数据就是通过这种格式按位发送出去。总线上总共有以下5种不同类型的帧。

CAN 总线协议规定了5种帧,分别是数据帧、遥控帧、错误帧、过载帧以及帧间隔,实践中数据帧的应用最为频繁。各种帧的用途如表1所示。

CAN总线是什么?CAN总线数据链路层又是什么?,CAN总线是什么?CAN总线数据链路又是什么?,第3张

数据帧用来节点之间收发数据,是使用最多的帧类型;远程帧用来接收节点向发送节点接收数据;错误帧是某节点发现帧错误时用来向其他节点通知的帧;过载帧是接收节点用来向发送节点告知自身接收能力的帧;用于将数据帧、远程帧与前面帧隔离的帧。

数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B)。

CAN总线是什么?CAN总线数据链路层又是什么?,CAN总线是什么?CAN总线数据链路又是什么?,第4张

帧起始由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;

帧结束由7个隐形位(高电平)组成。

仲裁段

CAN总线是如何解决多点竞争的问题?

由仲裁段给出答案。

CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。

CAN总线是什么?CAN总线数据链路层又是什么?,CAN总线是什么?CAN总线数据链路又是什么?,第5张

帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。

控制段

CAN总线是什么?CAN总线数据链路层又是什么?,CAN总线是什么?CAN总线数据链路又是什么?,第6张

数据段

为0-8字节,短帧结构,实时性好,适合汽车和工控领域;

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

CAN总线是什么?CAN总线数据链路层又是什么?,CAN总线是什么?CAN总线数据链路又是什么?,第7张

ACK段

当接收节点接收到的帧起始到CRC段都没错误时,它将在ACK段发送一个显性电平,发送节点发送隐性电平,线与结果为显性电平。

远程帧

远程帧分为6个段,也分为标准帧和扩展帧,且RTR位为1(隐性电平)

CAN总线是什么?CAN总线数据链路层又是什么?,CAN总线是什么?CAN总线数据链路又是什么?,第8张

CAN是可靠性很高的总线,但是它也有五种错误。

CRC错误:发送与接收的CRC值不同发生该错误;

格式错误:帧格式不合法发生该错误;

应答错误:发送节点在ACK阶段没有收到应答信息发生该错误;

位发送错误:发送节点在发送信息时发现总线电平与发送电平不符发生该错误;

位填充错误:通信线缆上违反通信规则时发生该错误。

当发生这五种错误之一时,发送节点或接受节点将发送错误帧

为防止某些节点自身出错而一直发送错误帧,干扰其他节点通信,CAN协议规定了节点的3种状态及行为

CAN总线是什么?CAN总线数据链路层又是什么?,CAN总线是什么?CAN总线数据链路又是什么?,第9张

过载帧

当某节点没有做好接收的“准备”时,将发送过载帧,以通知发送节点。

CAN总线是什么?CAN总线数据链路层又是什么?,CAN总线是什么?CAN总线数据链路又是什么?,第10张

帧间隔

用来隔离数据帧、远程帧与他们前面的帧,错误帧和过载帧前面不加帧间隔。

CAN总线是什么?CAN总线数据链路层又是什么?,CAN总线是什么?CAN总线数据链路又是什么?,第11张

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2488754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存