CAN基础

← 返回 MOC | ← 主页


🔴CAN是什么

控制器局域网CAN( Controller Area Network)属于现场总线的范畴,是一种有效支持分布式控制系统的串行通信网络。是由 德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线。 由于其高性能、高可靠性以及独特的设计而越来越受到人们的重视,被广泛应用于汽车业、航空业、工业控制、安全防护等领域。

🔴物理层与差分通信

CAN是靠can_h和can_l两根线的压差来表达0和1的

如何表达1:当两个线没有电压差的时候,就是1的意思,

如何表达0:当两个线有电压差的时候,就是0的意思,


从差分信号到逻辑电平,需要一个CAN收发器翻译为TTL电平,发送则相反


为了解决压摆率和阻抗匹配,需要加一个终端电阻,参考终端电阻


如果还是对抗干扰不满意:信号线防干扰

🔴帧类型

CAN帧格式与错误检测

🔴CAN总线特性

多主从:

在总线空闲状态(逻辑1)下,任意节点都可以向总线上发送信息 。另外:最先向总线发送信息的节点获得总线的发送权;当多个节点同时向总线发送消息时,所发送消息的优先权高的那个节点获得总线的发送权。

这里当一个节点发送完时,可能有多个节点同时发送信息,这时候是优先级的作用体现出来了

🔴错误检测与重发

CAN帧格式与错误检测

🔴总线仲裁

当节点同时发送的时候,所有的节点也会进行回读(节点在向总线上发送报文的过程中,同时也对总线上的二进制位进行“回读”,对比该节点发出的二进制位总线上当前的二进制位是否一致,就可节点数据是否被正确接收。)当发1收0则优先级较低,停止发送

前提: 前 11 位基础 ID 完全相同。 铁律: 0 (显性) 永远秒杀 1 (隐性)。

1. 终极优先级排名

标准数据帧 > 标准遥控帧 > 扩展数据帧 > 扩展遥控帧

RTR (数据/遥控开关) SRR (扩展帧专属卧底)

IDE (长短 ID 开关)

🔴报文过滤

MCU里设置CAN控制器,里面有个验收滤波器,当ID传进来,会与设定的掩码逐位匹配,不对的直接过滤掉


🔴位时序

1775983393260

采样点再两个相位缓冲段之间采样,保证采样的稳定

🔴硬同步与再同步

当检测到SOF,立即设置自己的 Sync_Seg(同步段),这是硬同步

以同步段为预期,与bit边沿对比,做再同步

如果跳变边沿滞后,相位缓冲1就增加一点

如果跳变边沿提前,相位缓冲2后边砍掉,提前进入下一个CAN位时间

不过对相位缓冲的设置受SJW限制,SJW=2则最多增减两个tq(时钟周期×分频系数)