1. CAN简介
CAN是控制器局域网络(Controller Area Network)的简称,1986年被德国研发和生产汽车电子产品著称的BOSCH公司所开发,并最终成为国际标准(ISO11898),是国际上应用最广泛的现场总线之一。
- 1986年:BOSCH(博世)开发了CAN协议作为解决方案
- 1991年:BOSCH(博世)发布了CAN 2.0(CAN 2.0A:11位,2.0B:29位)
- 1993年:CAN被采用为国际标准(ISO 11898)
- 2003年:ISO 11898成为标准系列
- 2012年:博世发布了CAN FD 1.0
- 2015年:CAN FD协议标准化(ISO 11898-1)
- 2016年:CAN物理层,数据速率高达5 Mbit/s,已通过ISO 11898-2标准化
- 2021年:CAN FD的轻量级版本CAN FD Light 标准CiA 604-1发布
根据速率不同,CAN总线分为两类:高速CAN、低速CAN(又称容错CAN)。其中低速CAN总线在协议层面上具有容错性,当其中一根线(如CAN_H或CAN_L)出现故障时,系统可以通过调整信号传输策略,利用剩余的完好线路进行数据传输。高速CAN和低速CAN由于物理层电气特性的不同因此互不兼容。
2. CAN总线特征
- 两根通信线(CAN_H、CAN_L),差分信号通信,线路少,无需共地,抗干扰能力强
- 高速CAN(ISO11898-2):125k~1Mbps, <40m
- 低速CAN(ISO11519-2)(ISO11898-3):10k~125kbps, <1km
- 异步,无需时钟线,通信速率由设备各自约定
- 半双工,可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序
- 11位/29位报文ID,用于区分消息功能,同时决定优先级(ID越小,优先级越高,11位ID优先级大于29位ID)
- 可配置1~8字节的有效载荷
- 可实现广播式和请求式两种传输方式
- 多主控制,在总线空闲时,所有的单元都可开始发送消息,最先访问总线的单元可获得发送权;多个单元同时开始发送时,发送高优先级ID消息的单元可获得发送权
- 错误检测功能。所有节点均可检测错误,检测出错误的单元会立即通知其它所有单元
- 发送消息出错后,节点会自动重发
- 故障限制,具有自动关闭总线的功能,节点控制器可以判断错误是暂时的数据错误还是持续性错误,当总线上发生持续数据错误时,控制器可将节点从总线上隔离,以使总线上的其他操作不受影响
- 每帧信息都有CRC校验及其他检错措施,数据错误率极低
- 可连接节点总数理论上无限制,但实际受总线上时间延迟及电气负载的限制
3. CAN硬件连接
CAN节点通常由三部分组成:CAN收发器、CAN控制器和MCU。
通常MCU内部已经集成了CAN控制器,只需要外加CAN收发器,即MCU+CAN收发器就组成一个CAN设备节点。
CAN收发器是用于TTL电平与差分电压信号相互转换的,TTL电平即单片机引脚直接提供的电平,逻辑0代表低电平,逻辑1代表高电平;而差分电压信号则为固定的电压值分别表示显性电平和隐性电平。 如下图所示:
高速CAN使用闭环网络,CAN_H和CAN_L两端添加120Ω的终端电阻
低速CAN使用开环网络,CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻
总线不加终端电阻分析:
https://zhuanlan.zhihu.com/p/662412979
CAN总线终端电阻的作用:
https://zhuanlan.zhihu.com/p/456959022
4. CAN物理电气特性
CAN总线采用差分信号,即两线电压差(Vcan_high - Vcan_low)传输数据位
高速CAN规定:
电压差为0V时表示逻辑1(隐性电平)
电压差为2V时表示逻辑0(显性电平)
低速CAN规定:
电压差为-1.5V时表示逻辑1(隐性电平)
电压差为3V时表示逻辑0(显性电平)
(注意:以上所述的电压差为典型值,实际应用中受总线上电气负载的影响,有一定的容错范围)
5. 高速CAN收发器
常用的高速CAN收发器芯片有:TJA1050T、TJA1042、SIT1050T
以TJA1050T为例:
TJA1050是一款高速CAN收发器芯片,可用于波特率从40k到1M,至少可以连接110个节点。
PIN脚定义:
Vref是参考电压输出,可以悬空
S:高速 /静默模式选择(低电平为高速),通常下拉到地即可
VCC要求5V供电
系统框图:
CAN_H和CAN_L是通过收发器内部MOS管的导通或关闭,来实现总线上的不同电压。
当MOS1和MOS2同时关闭时,Vcc-分压电阻-地的通路关闭,CAN_H与CAN_L电压相同,则显示隐性电压。
当MOS1和MOS2同时开启时,Vcc-分压电阻-地的通路闭合,经过电阻分压CAN_H电压升高,CAN_L电压降低,形成显性电压。
常见应用:
低速CAN收发器
低速容错CAN最早被定义在ISO 11519协议中,后续因为符合ISO 11898-3协议标准的样件也完全符合ISO11519-2协议的要求,同时因为ISO 11898协议应用的范围更全更广,所以在2006年ISO11519-2协议彻底的被11898-3协议所替代。ISO11898-3定义了低速容错CAN的物理层、低速容错CAN的工作机制以及容错机制的实现。
ISO 11519-2:1994( 低速控制器局域网(CAN)),指定CAN的数据链路层和物理层,这是用于公路车辆应用的高达125 Kbit/s的通信网络。 低速CAN是一种串行通信协议,支持分布式实时控制和多路复用。 根据ISO 7498在ISO-OSI模型中定义的层次结构层中定义网络的一般体系结构。该标准允许在CAN总线连线失败时CAN总线通信得以继续进行。
ISO 11898-3:2006( 道路车辆—控制器局域网(CAN)—第3部分:低速,容错,介质相关的接口),规定了在配备有控制器局域网(CAN)的道路车辆电子控制单元之间以40 Kbit/s至125Kbit/s的传输速率建立数字信息交换的特性。
下面介绍一款适用于低速容错CAN的收发器芯片-TJA1054。
TJA1054芯片引脚定义:
TJA1054芯片结构:
常见应用:
低速CAN网络上的每个设备每条CAN数据线都需要一个终端电阻:RTH用于CAN_H,RTL用于CAN_L。
Philips建议低速CAN网络,一个整体的RTH和RTL终端电阻为100Ω到500Ω(每个)。
低速容错CAN的容错机制则是通过故障检测器监测总线电平,在监测到其中一条总线故障后,监测器便会切换到相应的模式,模式图如下表所示。满足了ISO11898-3中定义的正常工作模式下的三种故障检测机制。
6. 单线CAN
除了上文介绍的高速CAN和低速CAN外,还有标准定义另外一种CAN物理层结构,即Single Wire CAN。主要在美国通用汽车上应用。
单线CAN又称SWC(Singer Wire CAN),在通用车系别克、雪佛兰车载总线中又称为GMLAN、GM_CAN。
单线CAN可以减少一根传输线,但是要求节点间有良好的共地特性(相当于第二根信号线)。单线CAN的信号抗干扰能力相对较弱,在设计中需要提高信号幅度以增加信噪比,如此又会让它自身的辐射能力增加,因此必须降低其信号传输速率以达到电磁兼容的要求。综上,单线CAN仅适合应用在低速的车身电子单元、舒适及娱乐控制领域。
单线CAN:
显性电平为4V(接收时高于1.8-2.2V就会被判为显性),隐性电平为0V;
正常通讯模式波特率为33.333Kbps,高速通讯模式的波特率为83.333Kbps;
单线CAN每个设备都有一个终端电阻:
SAE J2411是美国汽车工程师学会(SAE International)发布的标准,主要描述了单线CAN总线网络在车辆上的应用。
7. CAN总线常见拓扑结构
1.线型拓扑
线型拓扑,也称为总线型拓扑,是一种所有节点都连接到同一总线上的结构。这种拓扑的优点在于布线简单,阻抗匹配固定,且接线操作方便。然而,随着节点数量的增加,总线线缆变长可能会影响传输效率,且支线长度不宜过长。
2. 星型拓扑
星型拓扑中,每个节点通过一个中央设备连接。这种拓扑便于节点扩展,但如果中央设备出现故障,可能会导致整个网络瘫痪。此外,当分支长度不同时,阻抗匹配变得复杂,就需要使用集线器对通讯进行控制,保证数据的稳定传输。
3. 树状拓扑
树状拓扑具有多个分支,且分支长度不同。这种拓扑便于布线施工,可以最大限度地缩短布线距离。但是,由于网络拓扑复杂,施工人员难以进行阻抗匹配,通常需要增加集线器或中继器来分割网络拓扑。
4. 环形拓扑
环形拓扑通过将CAN总线的两端连接,形成环状结构,即使线缆在任意位置断开,也能保持通讯。但这种拓扑在断线后信号反射严重,不适合用于高波特率和远距离传输。
总结:
参考
https://blog.csdn.net/weixin_44793491/article/details/107298426
https://blog.csdn.net/m0_38106923/article/details/126088489
https://blog.csdn.net/m0_73633088/article/details/141105168
https://blog.csdn.net/Deep_l_zh/article/details/83182081
https://baijiahao.baidu.com/s?id=1758665016765467919&wfr=spider&for=pc 低速容错CAN的容错机制介绍