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

什么是 CAN 汇流排

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

CAN 汇流排网路拓扑结构

CAN 汇流排的物理连接只需要两根线,常称为 CAN_H 和 CAN_L,通过差分信号进行数据的传输。CAN 汇流排有两种电平,分别为 隐性电平 和 显性电平,这两种电平有著类似漏极 I/O 电平信号之间「与」的关系:

若隐性电平相遇,则汇流排表现为隐性电平;

若显性电平相遇,则汇流排表现为显性电平;

若隐性电平和显性电平相遇,则汇流排表现为显性电平。

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

CAN汇流排数据链路层包括

CAN汇流排数据链路层包括

1、通信机制

2、数据帧

3、错误检测

4、帧格式

5、位定时与同步

CAN汇流排帧格式

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

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

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

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

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

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

仲裁段

CAN汇流排是如何解决多点竞争的问题?由仲裁段给出答案。

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

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

控制段

数据段

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

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

ACK段

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

远程帧

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

CAN是可靠性很高的汇流排,但是它也有五种错误。

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

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

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

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

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

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

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

过载帧

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

帧间隔

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

物联网开发入门直播课 - NB-IoT智慧消防项目开发 - 创客学院直播室?

www.makeru.com.cn
图标
物联网开发入门直播课 - NB-IOT通信协议开发 - 创客学院直播室?

www.makeru.com.cn
图标

推荐阅读:
相关文章