2. 物理层基础:差分信号原理、CAN_H与CAN_L电平定义、显性电平与隐性电平

大家好,我是你们的嵌入式讲师。今天咱们聊聊CAN通信的物理层。说实话,很多初学者一上来就盯着协议栈、报文格式猛啃,结果板子一焊好,通信死活调不通。为什么?物理层没搞明白。我当年也吃过这个亏,所以这一章,咱们把底子打扎实。

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

你想想看,汽车里发动机点火、空调压缩机启动、车窗升降……这些动作都会产生巨大的电磁干扰。如果用普通的单端信号(比如UART的TX/RX对GND),干扰一上来,电平就飘了,数据全乱套。

CAN总线用的是差分信号。说白了,就是一对线(CAN_H和CAN_L)来传一个bit。接收端不看某根线对地的电压,而是看两根线之间的电压差。干扰来了?两根线上的噪声是同步的,一减就抵消了。这就是共模抑制。

我在项目中遇到过最典型的情况:一个电机驱动器一启动,旁边的RS485就乱码。换成CAN之后,同样的线束、同样的干扰环境,稳如老狗。这就是差分信号的价值。

核心结论:差分信号抗干扰能力强,适合长距离、高噪声环境。CAN总线就是靠这个在汽车和工业领域站稳脚跟的。

2.2 CAN_H与CAN_L的电平定义

CAN总线上的两根线,名字很直白:CAN_H(高线)和CAN_L(低线)。它们不是随便叫的,电平有严格定义。

咱们先看一组典型数据(以ISO 11898-2标准的高速CAN为例):

状态 CAN_H电压 CAN_L电压 差分电压 (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_H和CAN_L的波形。两根线像镜像一样摆动,看着特别舒服。如果你手边有示波器,建议抓一下,印象会深很多。

2.3 显性电平与隐性电平

这两个概念是CAN物理层的灵魂。咱们用白话讲:

  • 隐性电平:总线空闲时的状态。此时CAN_H和CAN_L都是2.5V,差分电压为0。所有节点都在“听”,没人说话。
  • 显性电平:有节点在发送数据时的状态。此时差分电压约为2V。显性电平会“覆盖”隐性电平。

为什么会这样?因为CAN总线是“线与”逻辑。多个节点同时发送时,只要有一个节点输出显性,总线就是显性。隐性只有在所有节点都输出隐性时才成立。这有点像开会的场景:只要一个人说话(显性),其他人就得听着(隐性)。

避坑指南:我曾经在一个项目里,把CAN收发器的RS引脚(斜率控制)接错了,导致隐性电平拉不到2.5V,一直飘在2.8V左右。结果总线上的节点互相收不到数据,排查了两天才发现。所以,隐性电平的稳定性很重要,别忽略。

2.4 知识体系:一张图看懂物理层

下面我用SVG画了一张图,把这一章的核心逻辑串起来。你看完应该能明白:差分信号、电平定义、显性隐性,这三者是怎么配合的。

CAN物理层核心知识体系 差分信号原理 抗干扰 · 共模抑制 CAN_H / CAN_L 电平定义 显性 / 隐性 线与逻辑 差分信号细节 • 两根线传输一个bit • 看电压差,不看对地电压 • 共模噪声被抵消 电平定义 • 隐性:2.5V / 2.5V • 显性:3.5V / 1.5V • 差分电压是关键 显性 vs 隐性 • 显性覆盖隐性 • 总线仲裁基础 • 空闲时隐性 物理层是CAN通信的基石,差分信号 + 电平定义 + 显性隐性

2.5 实际应用中的小细节

讲完理论,咱们聊点实战的。我建议你在设计CAN节点时,注意以下几点:

  1. 终端电阻不能省。 CAN总线两端各需要120Ω电阻,用来匹配阻抗、抑制反射。没有它,信号会振铃,通信距离和速率都会受影响。
  2. 共模电压范围。 标准CAN收发器(如TJA1050)的共模输入范围是-2V到+7V。如果超出这个范围,收发器可能损坏。我在一个项目里遇到过地线没接好,共模电压飙到12V,直接烧了一片收发器。
  3. 线束选择。 双绞线是标配,绞距越密抗干扰越好。别图便宜用平行线,那是给自己挖坑。

警告:千万不要在CAN_H和CAN_L之间直接短路测试!有些收发器没有短路保护,一短路就冒烟。我亲眼见过同事这么干,板子直接报废。正确的做法是用示波器探头去测,或者加个限流电阻。

2.6 小结

这一章咱们把CAN物理层的三个核心概念捋了一遍:差分信号为什么牛、CAN_H和CAN_L的电平怎么定义、显性和隐性怎么工作。说白了,物理层就是CAN通信的“地基”。地基不稳,上层协议再花哨也是白搭。

你如果现在去调一个CAN节点,先别急着写代码。拿万用表量一下CAN_H和CAN_L对地的电压,看看是不是2.5V左右。再量一下差分电压,显性时有没有2V。这些基本功,比背一百个报文格式都管用。

好,这一章就到这儿。记住:物理层搞明白了,后面的事就顺了。


专注资料整理