CAN通信协议
Posted beaglebone
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAN通信协议相关的知识,希望对你有一定的参考价值。
船用发动机监控系统为什么使用CAN总线通信协议呢?
- 控制器局域网络(CAN)具有高保密性,有效的支持分布式控制或实时控制的串行通信网络;
- 速率高,CAN的位速率可达1Mbps(40m);
- 廉价,多使用与交通运载工具、发动机控制部件等;
- 采用线性总线结构,每个子系统对总线具有相同的权利,多主工作方式。任意一个节点可以在任何时候向网络上的其他节点发送信息而不分主从;
- 发送信息分为不同的优先级,采用非破坏性总线裁决技术,当两个节点同时向网络上传递信息时,优先级低的停止发送数据,而优先级高的节点不受影响的继续传递数据;
- 与总线相连的单元没有类似于“地址”的信息,因此总线上增加单元时,连接在总线上的其他单元软硬件及应用层都不需要改变,节点按照滤波器过滤接收的信息;
- 具有检错、错误通知、错误恢复的功能;
- 具有点对点,一点对多点,全局广播接收传送数据的功能。
CAN总线基础知识:
- 总线状态总线有“显性”和“隐性”两个状态,“显性”对应逻辑“0”,“隐性”对应逻辑“1”。“显性”状态和“隐性”状态相与的结果为“显性”状态,所以两个节点同时分别发送“0”和“1”时,总线上呈现“0”。也就是说在总线上显性电平具有优先权,只有所有的单元都输出隐性电平,总线上才为隐性电平。另外在CAN总线的起止端都有一个120欧的终端电阻来做阻抗匹配,以减少回波。
- CAN协议通过以下5种类型的帧进行:
数据帧
远程帧
错误帧
过载帧
间隔帧
CAN报文发送优先权抉择:
- CAN 总线以报文为单位进行数据传送,报文的优先级结合在11 位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。如图2 所示,当几个站同时发送报文时,站1 的报文标识符为011111;站2 的报文标识符为0100110;站3 的报文标识符为0100111。所有标识符都有相同的两位01,直到第3 位进行比较时,站1 的报文被丢掉,因为它的第3 位为高,而其它两个站的报文第3位为低。站2 和站3 报文的4、5、6 位相同,直到第7 位时,站3 的报文才被丢失。注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。在此例中,站2 的报文被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。
CAN数据帧组成:
-
(1) 帧起始。 表示数据开的段帧起始。
(2) 仲裁段。 表示该帧优先级的仲裁段。
(3) 控制段。 表示数据的字节及保留位控制段。
(4) 数据段。 数据的内容,一帧可发送0~8个字节的数据段。
(5) CRC段。 检查帧的传输错误段。
(6) ACK段。 表示确认正常接收的段。
(7) 帧结束。 表示数据的段帧结束。 - 数据帧的构成如下图所示:图中D表示显性电平,R表示显性电平。
-
应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文远程帧由6 个场组成:帧起始、仲裁场、控制场、CRC 场、应答场和帧结束。远程帧不存在数据场。远程帧的RTR 位必须是隐位。DLC 的数据值是独立的,它可以是0~8 中的任何数值,为对应数据帧的数据长度。
以上是关于CAN通信协议的主要内容,如果未能解决你的问题,请参考以下文章