1.CAN总线是一双绞线的差分信号如下图所示,CAN H 和CAN L都处于相同的电平2.5V时,呈隐性电平,逻辑1;当CAN H 处于3.5V 而CAN L处于1.5V时 总线呈显性电平逻辑0;对于为什么要叫隐性电平,是因为隐性电平比较"隐秘"两者的电压差察觉不出来都是一条横着的直线;对于为什么要叫显性电平,是因为两者的电压差明显,一下子就能看到,并且显性的样子像嘴巴张开的时候,意味就是0.
2.当我用逻辑分析仪接入CAN 检测总线电平的时候,我们要注意一般逻辑分析仪是不允许同时设置多段的电平阈值逻辑,因为CAN H 和CAN L 对应逻辑 0 和逻辑1 的分段电平阈值不一致 。(我这里对CAN L 设置的是低于1.6V为低电平高于他为高电平),一般来说我们可以将CAN L接入逻辑分析仪去检测电平逻辑,我们CAN总线的高低电平逻辑,需要你主动去配置阈值电压,所以建议用示波器去观察CAN H 和CAN L的压差去判断0 1 逻辑,如下图 我只接入了CAN L ,阈值电压设置的是高于1.6是高电平低于1.6是低电平![](https://i-blog.csdnimg.cn/blog_migrate/e0f93b75c88b7b158014d0119bf9bcf6.png)
我用CAN上位机发送了一针 ID为0 数据域为00 11 22 33 44 55 66 77的数据,可以看出逻辑分析是可以根据CAN H 或者 CAN L 之间一段的信号来解析数据,但是需要我们设置正确的阈值电压,根据CAN L 解析出来的数据,可以根据图上观察,CAN总线只要有五个相同的数据,下一位数据会产生一个相反的电平位这个插入的位被称为“填充位”或“位填充”。它不是用户数据的一部分,而是由CAN控制器在传输数据时自动插入和移除的。这种位填充的机制有助于保持CAN总线上的电平变化,防止由于过长的连续相同电平导致的时钟同步问题。这有助于确保在CAN通信中的时钟同步和数据传输的准确性(CAN 总线不允许出现6个相同的Bit位)
3.可以观察发现,其实CAN L跟我们串口所在通信机制是类似的,CAN L 拉低的时候 信号开始传输 拉高的时候 是EOF停止信号
4.还有一个是值得注意的:CAN 收发器 (我这里使用的是TAJ1050)的GND要接到单片机 形成共地,否则波形会无法产生。
5.CAN总线在进行ID仲裁的时候硬件会自动屏蔽位填充。