第二章 CAN FD 物理层:差分信号、总线电平、终端电阻

做 CAN 或 CAN FD 的工程师,绕不开物理层。很多人一上来就盯着协议帧、位时间、采样点,结果板子一上电磁钳就出错误帧,查半天发现是终端电阻没焊对,或者共模电平漂了。嗯,物理层看着简单,坑不少。咱们这一章就把差分信号、总线电平、终端电阻这三个基础但关键的东西掰开揉碎说清楚。

2.1 为什么物理层这么重要?

打个比方,CAN FD 协议像一套交通规则,物理层就是路面和轮胎。路面不平、轮胎没气,再好的交规也跑不起来。EMI 干扰下,错误帧大量出现,很多时候根因就在物理层:信号幅值不够、边沿变缓、终端不匹配、共模噪声共模抑制比不足。

我个人习惯是先检查物理层再查协议层。节省时间,也少走弯路。

2.2 差分信号——CAN 的抗干扰底牌

CAN 用的是差分信号传输,两根线:CAN_H 和 CAN_L。发 0(显性)时,CAN_H 高、CAN_L 低;发 1(隐性)时,两根线都拉到 2.5 V 左右。接收端看的是两线电压差 Vdiff = V_CAN_H - V_CAN_L。

  • 隐性位(Recessive):CAN_H = CAN_L ≈ 2.5 V,Vdiff ≈ 0 V
  • 显性位(Dominant):CAN_H ≈ 3.5 V,CAN_L ≈ 1.5 V,Vdiff ≈ 2 V(标准 5 V 供电)

差分信号的好处很明显:共模噪声同时耦合到两根线上,相减后几乎抵消。我曾经在一个变频器项目里,电机启停时 CAN 总线错误帧暴增,最后发现是 CAN_H 和 CAN_L 的 PCB 走线一长一短,共模噪声没有同时到达,变成了差模分量。调整等长走线后问题消失。

实战小技巧:差分对布线要等长、等距、同层,远离时钟线和开关电源。走线阻抗控制在 60 Ω 左右,配合终端电阻形成 120 Ω 差分阻抗。

2.3 总线电平——别只看电压

很多初学者以为 CAN FD 只认 0 和 1,其实收发器内部有比较器,判定阈值是滞回区间。不同收发器、不同供电电压下,显性/隐性电平会有一点差别。下面是一个典型 5 V 供电下的电平表格:

状态 CAN_H (V) CAN_L (V) 差分电压 (V)
隐性 2.5 2.5 0.0
显性 3.5 1.5 2.0

但要注意,如果总线供电 3.3 V(一些低功耗设计),显性差分会降到 1.5 V 左右,噪声容限也变小。我在一个车载项目里遇到过 3.3 V 收发器与 5 V 收发器混用的场景,显性电平差异导致接收端采样出错,错误帧频发。所以设计前一定要看收发器数据手册中的共模范围和差分阈值。

避坑:实际总线上可能因为分支、电容负载产生振铃和反射,显性电平被畸变拉低。如果发现显性时差分电压低于 1.2 V,多半是终端电阻匹配或拓扑出了问题。

2.4 终端电阻——总线的“消音器”

终端电阻的作用是吸收信号反射。CAN 总线要求在物理两端各放一个 120 Ω 电阻,并联后等效 60 Ω。为什么是 120 Ω?因为双绞线特征阻抗大约 120 Ω,匹配才能无反射。

  • 标准接法:两个 120 Ω 电阻分别挂在总线两端,中间节点不挂终端电阻。
  • 如果只挂一个 120 Ω:未接端的一端会严重反射,显性转隐性时信号振荡,导致位错误或 CRC 错误。
  • 如果挂太多阻值:总负载拉低差分幅值,影响接收灵敏度。

我测试过一个现场,客户说总线长度只有 5 米,但错误率很高。检查发现他们三个节点各焊了一个 120 Ω,并联等效 40 Ω,显性差分电压只剩 1.0 V,收发器内部比较器时而判对时而判错。拔掉两个电阻后恢复正常。

2.5 物理层结构总览

下面的 SVG 图把 CAN FD 物理要素串起来,方便你脑子里装一个整体视图。

CAN FD 物理层结构 MCU + CAN FD 控制器 CAN FD 收发器 120 Ω 120 Ω CAN_H 双绞线 CAN_L 双绞线 节点 2 (收发器) 图例说明: ① 每个节点包含 MCU + 控制器 + 收发器,连接到总线上 ② 总线两端必须各焊接一个 120 Ω 终端电阻,不可省略或并联多个 ③ 收发器输出 CAN_H / CAN_L 差分对,经双绞线传输

2.6 设计要点的快捷清单

  1. 终端电阻位置:必须在总线物理两端,不在中间节点。短总线(<2 m)可以尝试用 60 Ω 单电阻但风险高,不推荐批量产品这么干。
  2. 共模扼流圈:一些收发器内置,外置时选对共模电感值(常见 100 μH ~ 1 mH),否则会滤掉 FD 高速边沿。
  3. 总线拓扑:尽量是直线型(干线 + 短分支)。分支长度控制在 30 cm 以内,分支越长反射越严重。
  4. PCB 布局:收发器距离连接器越近越好,差分对无过孔,周围敷接地铜。
一句话总结:差分信号提供抗共模底子,终端电阻消灭反射,总线电平决定噪声容限。物理层稳了,EMI 干扰下错误帧才可能根除。