2、物理层基础:差分信号原理、CAN_H与CAN_L电平定义、显性电平与隐性电平、总线终端电阻的作用

大家好,我是老周。今天咱们聊聊CAN总线的物理层。说实话,很多工程师做CAN开发好几年,对协议栈倒背如流,但问到物理层细节,反而容易卡壳。我个人觉得,物理层才是CAN总线最精妙的地方——它决定了总线能不能在那么恶劣的汽车环境下稳定工作。

2.1 为什么CAN要用差分信号?

先问大家一个问题:为什么CAN不直接用单端信号,非要搞两根线?

你想想看,汽车发动机舱里,温度能到125°C,点火线圈一打火,电磁干扰能把你信号淹没了。单端信号在这种环境里,就像在暴风雨里喊话——根本听不清。

差分信号就不一样了。它用两根线传输,一根叫CAN_H,一根叫CAN_L。信号不是看某根线的绝对电压,而是看两根线的电压差。干扰来了,两根线上会同时被“污染”,但它们的差值基本不变。说白了,就是“共模抑制”。

核心公式:V_diff = V(CAN_H) - V(CAN_L)

总线状态完全由这个差值决定,跟地线参考无关。

我在项目中遇到过一件事:某次台架测试,CAN通信老是丢帧。查了半天,发现是地线压差太大。换成差分信号分析后,问题一目了然——共模电压漂了2V,但差分电压纹丝不动。从那以后,我对差分信号就特别信任。

2.2 CAN_H与CAN_L的电平定义

CAN总线的电平定义,其实挺有意思的。它不像RS232那样用0V和5V,而是用了一套“隐性”和“显性”的概念。

先看具体数值:

状态 CAN_H电压 CAN_L电压 差分电压
隐性(Recessive) 2.5V 2.5V 0V
显性(Dominant) 3.5V 1.5V 2V

嗯,这里要注意:隐性状态时,两根线都是2.5V,差分电压为0。显性状态时,CAN_H拉到3.5V,CAN_L拉到1.5V,差分电压2V。

为什么这么设计?我个人的理解是:隐性状态相当于“总线空闲”,所有节点都在监听。显性状态则是“有人抢到总线了”。这个机制直接决定了CAN的仲裁方式——后面我们会详细讲。

2.3 显性电平与隐性电平的博弈

显性和隐性,其实是CAN总线最核心的“博弈规则”。

你想想看,如果两个节点同时发送数据,一个发显性(逻辑0),一个发隐性(逻辑1),谁赢?

答案是:显性赢。

因为显性电平的差分电压是2V,隐性是0V。在总线上,显性会“覆盖”隐性。这就是CAN总线“线与”特性的物理基础。

避坑指南:我曾经在调试时发现,某个节点总是发不出显性位。查到最后,是CAN收发器的驱动能力不足,拉不到3.5V。总线上的其他节点看到的还是隐性电平,自然就仲裁失败了。所以,收发器的选型一定要看驱动电流参数。

逻辑上来说:

  • 显性电平 = 逻辑0(Dominant)
  • 隐性电平 = 逻辑1(Recessive)

这个定义跟常规思维有点反直觉——通常我们认为高电平是1,低电平是0。但在CAN总线里,恰恰相反。刚开始接触时我也觉得别扭,后来习惯了就好。

2.4 总线终端电阻的作用

说到终端电阻,很多新手会问:为什么CAN总线两端要各接一个120Ω电阻?

其实原因很简单:防止信号反射。

你想想看,CAN总线在汽车里可能长达几十米。信号在线上传输时,如果遇到阻抗突变,就会产生反射。反射回来的信号会跟原始信号叠加,造成波形畸变。严重的时候,数据位都识别不出来。

终端电阻的作用,就是让总线末端的阻抗跟线缆的特性阻抗匹配。CAN总线线缆的特性阻抗大约是120Ω,所以两端各接一个120Ω电阻,并联后就是60Ω。这样信号到了末端就被吸收掉了,不会反弹回来。

关键参数:

  • 标准CAN总线:两端各120Ω,并联后60Ω
  • 低速CAN(ISO 11898-3):每节点内置电阻,总阻值约100Ω
  • 电阻功率:至少1/4W,推荐1/2W

我记得有一次,客户反映某辆车的CAN通信偶尔中断。我让他们用示波器看波形,发现显性电平的上升沿有明显的“振铃”。一查,原来是总线一端的120Ω电阻虚焊了。焊好后,波形干净得像教科书一样。

重要提醒:终端电阻不能随便加!

  • 如果电阻太小(比如只有几十Ω),总线负载过重,收发器可能拉不动
  • 如果电阻太大(比如开路),信号反射严重,通信距离和速率都会下降
  • 有些低成本设计只在总线一端加电阻,这是不规范的,千万别学

另外,现在很多CAN收发器芯片内部已经集成了终端电阻,比如TJA1043。但要注意,这些内部电阻通常是可选的,需要通过引脚配置。我建议在量产设计中,还是用外部电阻更可靠——万一芯片坏了,电阻还在,总线还能工作。

2.5 小结

好了,物理层的基础就讲到这里。总结一下:

  • 差分信号是CAN抗干扰的基石
  • CAN_H和CAN_L的电平定义了显性和隐性两种状态
  • 显性电平覆盖隐性电平,这是总线仲裁的物理基础
  • 终端电阻防止信号反射,保证通信质量

下一章,我们会深入CAN总线的数据链路层,看看那些帧结构、位填充、CRC校验到底是怎么回事。到时候你会发现,物理层的这些细节,跟上层协议是环环相扣的。

我是老周,咱们下章见。


公众号:蓝海资料掘金营,微信deep3321