2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【通信接口】CAN总线协议

【通信接口】CAN总线协议

时间:2021-12-31 03:15:40

相关推荐

【通信接口】CAN总线协议

目录

一、什么是CAN

1、CAN 的概念

2、节点构成(CAN 总线通信模型)

3、差分信号(电平特性)

4、CAN 总线的特点

二、CAN 总线协议的通信过程

1、发送过程

2、接收过程

3、概括

三、CAN 通信帧的分类

一、什么是CAN

1、CAN 的概念

CAN 是 Controller Area Network 的缩写,即控制器局域网络。最初的动机是为了解决电子控制系统中不断增加的信号线,CAN总线是一个单一的总线,所有的外围器件都可以被挂载到该总线。(大致示意图见下图)

ps:120Ω 的电阻用于匹配总线阻抗,吸收信号发射及回拨,提高数据通信的抗干扰能力

2、节点构成(CAN 总线通信模型)

每一个节点都对应一个外围器件,每个外围器件要接入到CAN总线都需包含:CAN 控制器、CAN收发器

CAN控制器负责上层应用层信号和逻辑电平之间的转换。CAN 收发负责逻辑电平和物理信号之间的转换。

3、差分信号(电平特性)

CAN 总线使用两根线来连接各个单元:CAN_H 和 CAN_L。CAN 控制器通过判断这两根线上的电位差来得到总线电平(逻辑电平)。CAN 标准有两种,IOS11898 和 IOS11519,两者差分电平特性不同。以IOS11898 标准为例。

逻辑电平 0:也叫显性电平 CAN_H = 3.5 V,CAN_L = 1.5 V电位差 =2 V逻辑电平 1:也叫隐性电平 CAN_H =CAN_L = 2 V电位差 = 0 V

CAN 总线是通过显性电平和隐形电平的变化来将具体的数据发送出去,总线上无节点传输数据时,一直处在隐形状态。

4、CAN 总线的特点

(1) 多主控制

CAN 总线没有主从之分,每个设备都可以主动发送数据,最先访问总线的单元获得发送权,剩余总线禁止发送数据。

如果多个单元同时开始发送时,高优先级 ID(数据帧中的一个字段)的单元可获得发送权

(2) 控制通信速度

根据整个网络的规模,可设定适合的通信速度。

在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此 单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。

(3)远程数据请求

可通过发送“遥控帧” 请求其他单元发送数据。

(4)具有错误检测、通知、恢复功能

所有的单元都可以检测错误(错误检测功能)。

检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。

正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新 发送此消息直到成功发送为止(错误恢复功能)。

(5) 系统的柔软性

与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变

二、CAN 总线协议的通信过程

假设CAN总线处在隐性状态,即没有数据的传输。

1、发送过程

假设节点A开始发送数据,上层应用层发送信号,假设CAN控制器转换成了逻辑电平 0,经由 TxD 发给 CAN 收发器,然后转换成对应的电压(电压大小详见上面第二部分《差分信号》的表),这样就完成了 1 bit 数据的发送。

发送完一帧数据以后,接下来我们要考虑的是接收了。

2、接收过程

CAN是广播式地给当前局部网络的所有节点发送数据帧的,即接收时总线上的每一个设备都会收到这一帧的数据。CAN 的帧格式是面向内容的编址方案,可以认为报文是通过内容寻址,也就是说,报文的内容隐式地确定其地址。

节点B:检查了内容发现不是发给自己的,直接过滤

节点C:同样发现不是发给自己的,直接过滤

节点D:读取这一帧数据

节点D 的CAN收发器将总线上的差分电平转换成逻辑电平,随后再由CAN控制器转换成信号发送给上层。

3、概括

发送方通过使总线电平发生变化,将其信息传递到CAN总线上。接收方通过监听总线电平,将总线上的消息读入自己的接收器。

三、CAN 通信帧的分类

了解了通信的过程,接下来我们要进一步了解每一个节点发送的一帧报文。其实CAN 通信帧有很多种,有用于数据传输的、远程控制的、错误通知等等。其中最为常用的就是用于传输数据的数据帧。

下面重点介绍数据帧。其他帧可以参考:深入理解CAN总线

数据帧还可以根据仲裁段长度不同,分为标准帧、扩展帧。

(1) 帧起始、帧结束

帧起始由一个显性位(低电平)组成,帧结束由7个隐形位(高电平)组成

(2) 仲裁段

表示该帧优先级的段,仲裁段的作用是解决多点竞争问题。

每次可能有好几个设备同时要往总线发送数据,仲裁段包含帧ID,帧ID越小,优先级越高,优先级高拥有优先使用总线的权利。

(3) 控制段

表示数据的字节数及保留位的段。

(4) 数据段

为0-8字节,短帧结构,实时性好,适合汽车和工控领域。CAN-FD的数据段最高可以发送 64 字节

(5) CRC段

检查帧的传输错误的段。

(6) ACK段

表示确认正常接收的段。任何节点如果准确无误地接收到帧,都要向总线上发送显性位(逻辑电平0),该显性位将掩盖发送节点输出的隐性位,使总线上表现为显性;如果发送节点检测应答位为隐性,那么说明没有节点收到有效帧。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。