在学习CAN总线时,经常会看到CAN总线的电平分为显性电平与隐性电平,那何为显性,何为隐性呢?显性、隐性与逻辑0、逻辑1又有什么样的对应关系呢?
CAN通讯逻辑0与1,显性与隐性
电信号的传输在物理层面都是靠电压高低区分来实现的,CAN通信也一样。CAN总线的两条信号线被称为CAN高(CAN_H)和CAN低(CAN_L),关于CAN的逻辑0、逻辑1和CAN总线的显性与隐性,整理了如下图表帮助大家有个清晰的认识。
CAN_H | CAN_L | CAN_diff | 逻辑 | 显隐性 |
---|---|---|---|---|
3.5V | 1.5V | 2V | 0 | 显性 |
2.5V | 2.5V | 0V | 1 | 隐性 |
如下图 1 所示:
图 1
注 1:实际开发中两条线的电压都会在标准值上下附近波动,这也是用差分传输的好处,减少误差和噪声带来的干扰;
注 2:CAN总线采用“线与”规则进行总线仲裁,即当多个CAN信号同时发送时,有的发1有的发0,而只要有0,当前总线就是0(1&0 = 0),因此,总线上显性电平用逻辑“0”表示,隐性电平用逻辑“1”表示;
CAN通讯与双绞线
CAN-H是高位数据线,CAN-L是低位数据线,CAN通常以差分形式进行数据传输,差分数据传输可以有效减少外界电磁噪声对信号的干扰,尤其是共模噪声,当总线受到干扰时,两根总线会同时受影响,但其差分电压并不会受影响,如下图 2 所示。相对于单端信号传输方式来说,差分信号传输方式具有更好的抗干扰能力。
图 2
虽然差分信号有较好的抗干扰能力,但是长距离信号传输时,我们通常会采用双绞线进行数据传输,以此来从物理上减弱噪声对信号传输过程中的耦合。
如下图 3、4、5所示,双绞线由两根相互绝缘的导线相互缠绕而成,特别适合差分信号传输场合,与平行线相比,双绞线不仅可以降低自身对外界的干扰,同时可以消除与外界干扰源的电容耦合和感应耦合,因此CAN通讯中经常使用双绞线进行数据传输。
图 3 消除电容耦合
图 4 消除电感耦合
图 5 消除对外界的干扰