CAN总线学习笔记(单线CAN-bus、低速CAN-bus、高速CAN-bus物理层和数据链路层)

时间:2024-05-23 16:01:32

高速CAN:ISO 11898

低速CAN:ISO 11519-2

单线CAN:SAE J2411

1.通信层次

OSI开放系统互连模型

层次 功能
应用层 用户、软件、网络终端等之间用来进行信息交换
表示层 将两个应用不同数据格式的系统信息转化为能共同理解的格式
会话层 依靠低层的通信功能来进行数据的有效传递
传输层 两通信节点之间数据传输控制,操作如:数据重发,数据错误修复
网络层 规定了网络连接的建立、维持和拆除的协议,如:路由和寻址
数据链路层 规定了在介质上传输数据位的排列和组织,如:数据校验和帧结构
物理层 规定通信介质的物理特性,如:电气特性和信号交换的解释

2.CAN简介

​ Controller Area Network,控制器局域网。CAN-bus规范定义了物理层和数据链路层,CANopen、DeviceNet等定义应用层,应用层可自行设计。支持多主通信模式。

​ 通信 = 相同层次间的信息沟通

3.CAN总线物理层

​ 物理层把各种信息用收发器转换成物理信号,并将这些信号由电缆传输到其它目标设备。物理层相同的节点才能进行通信。

CAN总线学习笔记(单线CAN-bus、低速CAN-bus、高速CAN-bus物理层和数据链路层)

单线CAN:

显性电平为4V(接收时高于1.8-2.2V就会被判为显性),隐性电平为0V;

正常通讯模式波特率为33.333Kbps,高速通讯模式的波特率为83.333Kbps;

单条CAN-bus

3.1 逻辑信号定义

CAN收发器将逻辑信号(TXD、RXD)和物理信号(CANH、CANL)相互转换。CANH和CANL连接双绞线,信号差分传输,可以有效抑制共模干扰。CANH-CANL > 0.9V时为显性,对应逻辑信号为0,CANH-CANL < 0.5v时为隐性,对应逻辑信号为1。显性电平优先级高于隐性电平。

3.2 同步和位填充

​ 为了消除波特率偏差带来的影响,CAN总线规定在信号的跳变沿时刻进行同步(重同步),对于连续多个相同电平导致误差累加的情况,通过连续5个相同位后面插一个相反位的位填充规则来得到跳变沿进行同步。硬同步只发生在帧起始。同步都发生在隐性电平到显性电平转换的跳变沿。

3.3 通信距离和速率

​ CAN-bus的通信距离和通信速率成反比,传输速率最快可以达到1Mbps,通信距离最远可以达到10km。

3.4 终端电阻

​ 低速CAN总线在CANH和CANL上分别串接2.2kΩ的电阻

CAN总线学习笔记(单线CAN-bus、低速CAN-bus、高速CAN-bus物理层和数据链路层)

​ 高速CAN总线在CANH和CANL之间串接120Ω的电阻

CAN总线学习笔记(单线CAN-bus、低速CAN-bus、高速CAN-bus物理层和数据链路层)

​ 目的:使线路阻抗连续,信号波形完整。

4.数据链路层

​ 单线CAN、低速CAN、高速CAN在数据链路层都相同,支持CAN2.0规范。数据链路层解决收发目标选择、数据校验、总线竞争、错误机制等问题。CAN-bus规定了5种通信帧——数据帧、远程帧、错误帧、过载帧、帧间隔。CAN控制器实现了数据链路层的全部功能以及物理层的位定时功能。

4.1 数据帧

​ 特点:用于传输数据,使用最多,分为标准帧CAN2.0A和扩展帧CAN2.0B。(报文滤波如何实现的?)

CAN总线学习笔记(单线CAN-bus、低速CAN-bus、高速CAN-bus物理层和数据链路层)

4.1.1 帧起始

​ 1bit显性电平,助记符为SOF。作用是进行硬同步。

4.1.2 仲裁段

​ 对于CAN2.0A,仲裁段由11bit ID和RTR位组成,ID规定了数据帧的优先级,ID越小优先级越高;RTR位是远程发送请求位,标明该帧是数据帧还是远程帧,数据帧该位为显性,远程帧该位为隐性,因此,当ID相同时,数据帧的优先级高于远程帧。ID高7位ID10-ID4不得全为隐性。

​ 对于CAN2.0B,差别仅仅在于在标准帧11位ID后面插入了1bit显性的替代远程帧请求位SRR,将标准帧中位于控制段的扩展识别位IDE接在SRR后面,然后接上扩展的18bit ID。扩展帧ID有29位。标准帧的优先级高于扩展帧。标准帧IDE为显性,扩展帧为隐性。

​ CAN控制器会监测数据线上的电平与发送位的电平,如果不相同,停止发送,如果该位在仲裁段,则退出总线竞争,如果不在仲裁段,则产生错误(除了ACK段和被动错误标志传输时)。

​ ID禁止高7位全为隐性。在任何情况下,总线上不可能有多个设备在同一时刻使用同一个ID传输数据帧。

(疑问:标准远程帧和扩展远程帧如何仲裁?标准帧位于控制段的IDE是否参与仲裁?为什么要将标准帧IDE归于控制段?)
目前的理解:这种情况下,即使过了仲裁段,总线上的竞争还在继续,同一时刻存在显性和隐性电平竞争总线时总是显性电平获得总线,而此时扩展帧仍处于仲裁段,还是会进入只听模式,相当于标准帧的IDE参与了仲裁,至于为什么标准帧IDE被归于控制段,暂时没有查到依据。

4.1.3 控制段

​ 对于CAN2.0A,控制段由IDE、保留位r0、4位的数据段长度码DLC共6位组成。DLC表示数据段数据的字节数,取值0到8,用BCD码表示。

​ 对于CAN2.0B,控制段由保留位r1、r0和4位长度码DLC共6bit组成。

4.1.4 数据段

​ 数据段包含0到8个字节,byte0在前,每个字节先传MSB。数据量小,实时性高。

4.1.5 CRC段

​ CRC校验,将前4段所有位进行模2除以多项式[X15+X14+X10+X8+X7+X4+X^3+1]得到15位CRC值,再加上一位隐性的CRC界定符组成16位的CRC段。

4.1.6 ACK段

​ 由一位ACK槽和一位ACK界定符组成。ACK槽期间发送节点发送隐性电平,接收正确节点发送显性电平将总线上信号拉低。ACK界定符位1位隐性电平。要保证发送节点在应答间隙期间接收到应答的显性位,对总线长度有了限制。

4.1.7 帧结束

​ 7个连续的隐性位,助记符EOF。

4.2 远程帧

​ 远程帧与数据帧点区别在于没有数据段,RTR为隐性,其余相同。

CAN总线学习笔记(单线CAN-bus、低速CAN-bus、高速CAN-bus物理层和数据链路层)

​ 具有同样ID的数据帧被请求。

​ 远程帧的数据长度码的值表示对应请求的数据帧的数据长度码。

​ 区别于数据长度为0的数据帧,这种帧可以被各单元用来作为周期连接确认/应答,或者仲裁域本身带有实质性信息。

4.3 错误帧

​ CAN-bus错误类型:CRC错误、应答错误、位发送错误、帧格式错误、位填充错误。

​ 错误帧 = 错误标志 + 错误界定符

​ 主动错误发送6显+8隐;被动错误6隐+8隐

​ 发送错误>255时总线关闭。

4.4 过载帧

​ 接收节点没有做好接收下一帧的准备,发出过载帧。

​ 6显过载标志+8隐过载帧界定符

4.5 帧间隔

​ 将数据帧或远程帧和他们之前的帧分离开,错误帧和过载帧前不能插帧间隔。

5.应用层

​ 通过应用层协议来规范,工业领域主要有CANopen、Devicenet等协议。

数据类型 特点
实时数据 优先级高,采用无连接无应答点传输方式
非实时数据 优先级较低,通常基于连接和应答机制
状态数据 主站可以了解各个从站节点是否工作正常

节点间的传递模式:

生产者消费者模式——无论是否有听众,都发,听众选择需要的频道。

客户端服务器模式——一对一,开始前建立联系,结束后断开联系,通常传输非实时数据。

参考书目:周立功《项目驱动CAN-bus现场总线基础教程》