(完整版)CAN总线解析

(完整版)CAN总线解析
(完整版)CAN总线解析

概述

CAN ( Controller Area Network )即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。

想到CAN 就要想到德国的Bosch 公司,因为CAN 就是这个公司开发的(和Intel ) CAN 有很多优秀的特点,使得它能够被广泛的应用。比如:传输速度最高到1Mbps ,通信距离最远到

10KM ,无损位仲裁机制,多主结构。

近些年来,CAN 控制器价格越来越低,很多MCU 也集成了CAN 控制器。现在每一辆汽车上都装有CAN 总线。

个典型的CAN 应用场景:

CAN 总线标准

CAN 总线标准只规定了物理层和数据链路层,需要用户来自定义应用层。不同的CAN 标准仅物理层不同。

CAN 收发器负责逻辑电平和物理信号之间的转换,将逻辑信号转换成物理信号(差分电平)或者将物理信号转换成逻辑电平。

CAN 标准有两个,即IOS11898 和IOS11519 ,两者差分电平特性不同。(有信号时,CANH 3.5V,CANL 1.5V ,即显性;没有信号时,CANH 2.5V ,CANL 2.5V ,即隐性)

IOS11898 高速CAN 电平中,高低电平的幅度低,对应的传输速度快。

双绞线共模消除干扰,是因为电平同时变化,电压差不变

2.1物理层

CAN 有三种接口器件

多个节点连接,只要有一个为低电平,总线就为低电平,只有所有的节点都输出高电平时, 才

为高电平。所谓“线与”

CAN 总线有 5 个连续性相同的位后,就会插入一个相反位,产生跳变沿,用于同步。从而 消

除累计误差。

和 485 、 232 一样, CAN 的传输速度与距离成反比

CAN

总线终端电阻的接法:

特点:低速CAN 在CANH 和CANL 上串入2.2k Ω的电阻;高速CAN 在CANH 和CANL

之间并入120 Ω电阻。为什么是120 Ω,因为电缆的特性阻抗为120 Ω,为了模拟无限远的传输

120 欧姆只是为了保证阻抗完整性,消除回波反射,提升通信可靠性的,因此,其只需要在总线最远的两端接上120 欧姆电阻即可,而中间节点并不需要接(接了反而有可能会引起问题)。因此各位在使用CAN Omega 做CAN 总线侦听的时候,大多数情况下是不需要这个120 欧姆电阻的,当然,即使当前网络中并没有终端匹配电阻,只要传输线长度不长(比如SysCan360 比赛环境中,传输线只有1-2 米)CAN 节点数量不多的情况下,不要这个120 欧姆电阻也完全可以工作,甚至,你接任意电阻都是不会有影响的。因为此时传输线长度和波长还相差甚远,节点不多的情况下,反射波的叠加信号强度也不会很强,因此传输线效应完全可以忽略。

而哪些情况需要呢,主要就是,当使用2 个CAN Omega 对发或者当前网络中仅有2 个

CAN 设备的时候,此时两个端点最好都加上终端匹配电阻,当然,前面也说过了,传输线长度不长的时候,也可以不需要2 端120 欧姆电阻,但为了信号完整性考虑,加上这两个电阻才是严谨的。

2 个120 欧姆电阻的意义在于,使用USB CAN 调试某些不带终端电阻的中间节点设备时,有时候CAN 总线上没有2 个120 欧姆电阻通信可能会异常,此时可以接入2 个120 欧姆电阻作为2 个终端电阻来作阻抗匹配,这时候其他端点不应接入任何终端电阻!并且,这2 个120

欧姆电阻不可用1 个60 欧姆电阻代替!

125kHz 载波的波长大概在 (c / f) = (3e8m/s) / (125e3Hz)=2.4km ,其临界长度为 2.4kM

/ 10 = 240m >> 2m ,也即传输线长度不超过 240m ,分布阻抗带来的影响可以忽略不计

2.2 数据链路层

CAN 总线传输的是 CAN 帧, CAN 的通信帧分成五种,分别为数据帧、远程帧、错误帧、 过载帧和帧间隔。

数据帧用来节点之间收发数据, 是使用最多的帧类型; 远程帧用来接收节点向发送节点接收 数据; 错误帧是某节点发现帧错误时用来向其他节点通知的帧; 过载帧是接收节点用来向发送节 点告知自身接收能力的帧; 用于将数据帧、 远程帧与前面帧隔离的帧。 数据帧根据仲裁段长度不 同分为标准帧( 2.0A )和扩展帧( 2.0B )

2.3 帧起始

帧起始由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;帧结 束由 7 个隐形位(高电平)组成。

2.4 仲裁段

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

CAN 总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处 理。

如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。

帧 ID 越小,优先级越高。由于数据帧的 RTR 位为显性电平,远程帧为隐性电平,所以帧格 式和帧 ID 相同的情况下, 数据帧优先于远程帧; 由于标准帧的 IDE 位为显性电平, 扩展帧的 IDE 位为隐形电平,对于前 11 位 ID 相同的标准帧和扩展帧,标准帧优先级比扩展帧高。 2.5 控制段 2.6 数据段 为 0-8 字节,短帧结构,实时性好,适合汽车和工控领域; 2.7 CRC 段 CRC 校验段由 15 位 CRC 值和 CRC 界定符组成 共 6 位,标准帧的控制段由扩展帧标志位 IDE 、保留位 r0 和数据长度代码 DLC 组成;扩展 帧控制段则由 IDE 、 r1 、r0 和 DLC 组成

2.8ACK 段

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

2.9远程帧

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

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

CRC 错误:发送与接收的CRC 值不同发生该错误;格式错误:帧格式不合法发生该错误;应答错误:发送节点在ACK 阶段没有收到应答信息发生该错误;位发送错误:发送节点在发送信息时发现总线电平与发送电平不符发生该错误;位填充错误:通信线缆上违反通信规则时发生该错误。

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

为防止某些节点自身出错而一直发送错误帧,干扰其他节点通信,

3 种状态及行为

2.10过载帧

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

CAN 协议规定了节点的

相关主题
相关文档
最新文档