CAN基础
🔴CAN是什么
控制器局域网CAN( Controller Area Network)属于现场总线的范畴,是一种有效支持分布式控制系统的串行通信网络。是由 德国博世公司在20世纪80年代专门为汽车行业开发的一种串行通信总线。 由于其高性能、高可靠性以及独特的设计而越来越受到人们的重视,被广泛应用于汽车业、航空业、工业控制、安全防护等领域。
🔴物理层与差分通信
CAN是靠can_h和can_l两根线的压差来表达0和1的
如何表达1:当两个线没有电压差的时候,就是1的意思,
如何表达0:当两个线有电压差的时候,就是0的意思,
从差分信号到逻辑电平,需要一个CAN收发器翻译为TTL电平,发送则相反
为了解决压摆率和阻抗匹配,需要加一个终端电阻,参考终端电阻
如果还是对抗干扰不满意:信号线防干扰
🔴帧类型
🔴CAN总线特性
多主从:
在总线空闲状态(逻辑1)下,任意节点都可以向总线上发送信息 。另外:最先向总线发送信息的节点获得总线的发送权;当多个节点同时向总线发送消息时,所发送消息的优先权高的那个节点获得总线的发送权。
这里当一个节点发送完时,可能有多个节点同时发送信息,这时候是优先级的作用体现出来了
🔴错误检测与重发
🔴总线仲裁
当节点同时发送的时候,所有的节点也会进行回读(节点在向总线上发送报文的过程中,同时也对总线上的二进制位进行“回读”,对比该节点发出的二进制位与总线上当前的二进制位是否一致,就可节点数据是否被正确接收。)当发1收0则优先级较低,停止发送
前提: 前 11 位基础 ID 完全相同。
铁律: 0 (显性) 永远秒杀 1 (隐性)。
1. 终极优先级排名
标准数据帧 > 标准遥控帧 > 扩展数据帧 > 扩展遥控帧
RTR (数据/遥控开关) SRR (扩展帧专属卧底)
IDE (长短 ID 开关)
🔴报文过滤
MCU里设置CAN控制器,里面有个验收滤波器,当ID传进来,会与设定的掩码逐位匹配,不对的直接过滤掉
🔴位时序

采样点再两个相位缓冲段之间采样,保证采样的稳定
🔴硬同步与再同步
当检测到SOF,立即设置自己的 Sync_Seg(同步段),这是硬同步
以同步段为预期,与bit边沿对比,做再同步
如果跳变边沿滞后,相位缓冲1就增加一点
如果跳变边沿提前,相位缓冲2后边砍掉,提前进入下一个CAN位时间
不过对相位缓冲的设置受SJW限制,SJW=2则最多增减两个tq(时钟周期×分频系数)