news 2026/10/6 11:47:04

CAN总线终端电阻为什么是120Ω?从阻抗匹配到工程排错全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CAN总线终端电阻为什么是120Ω?从阻抗匹配到工程排错全解析

1. 从一次通信间歇性丢帧说起:为什么偏偏是120Ω

如果你在车载电子或者工业控制现场待过,大概率遇到过这种场景:CAN总线在实验室台架上跑得好好的,一装车、一进现场,通信就开始间歇性丢帧,示波器抓波形一看,上升沿附近有明显的振铃,眼图几乎闭合。排查了一圈线束、节点、供电,最后发现问题出在终端电阻上——要么没接,要么接了个随便翻出来的220Ω,要么两端都接了但中间又并联了一个。

这类问题的答案,几乎都会指向同一个数字:120Ω。但很多人只是记住了"CAN总线两端各接一个120Ω电阻"这条口诀,却说不清楚这个数字是怎么来的,为什么不是100Ω、不是150Ω,为什么是两端各一个而不是单端一个,为什么高速CAN和低速容错CAN在这件事上处理方式完全不同。

这篇内容就是想把这件事从头讲透。核心关键词是CAN总线、终端电阻、120Ω、阻抗匹配、信号完整性。我会从传输线的基本模型讲起,把120Ω这个数字的推导过程还原出来,再落到实际工程中的选型、布局、测量和排错。适合已经会接CAN线但没深究过物理层的工程师,也适合正在做CAN通信物理层容错测试、需要判断"故障排查时到底要不要加终端电阻"的测试人员。读完你应该能自己算、自己测、自己判断,而不是背口诀。

先说一个反直觉的结论:终端电阻的首要作用不是"给总线提供直流偏置回路",而是"吸收信号在电缆末端的反射能量"。很多人把它理解成上拉/下拉电阻,这是把它当成了I2C的玩法。CAN是差分总线,它的终端电阻干的是射频里"匹配负载"的活。理解这一点,后面所有的"为什么"都会顺理成章。

2. 120Ω这个数字是怎么算出来的:从电缆特性阻抗到匹配条件

2.1 先把CAN线当成一根传输线

很多工程师习惯用"电路"的思维看CAN:节点是负载,线是导线,电阻分压。这套思维在低频、短线、慢沿的情况下勉强能用,但CAN的典型速率是500kbps,上升沿时间可以做到几十纳秒,这时候信号沿的波长和线长已经可比了,必须用传输线的视角来看。

一根双绞线的核心参数是特性阻抗,记作Z0。它由单位长度的电感L和电容C决定:

Z0 = sqrt(L / C)

注意,Z0和线长无关,只和线的几何结构、绝缘材料、绞距有关。汽车上常用的CAN双绞线,特性阻抗标称值就是120Ω(严格说是95Ω到140Ω之间,典型值120Ω)。工业上常用的屏蔽双绞线也基本落在这个区间。

所以"终端电阻用120Ω"的第一层原因非常朴素:它要等于电缆的特性阻抗。当负载阻抗等于传输线特性阻抗时,信号到达末端不会反射,能量被完全吸收。这就是阻抗匹配。

2.2 不匹配会怎样:反射系数告诉你答案

反射的大小用反射系数Γ描述:

Γ = (ZL - Z0) / (ZL + Z0)
  • 如果末端开路(ZL = ∞),Γ = 1,信号100%反射回来,而且是同相叠加,末端电压会翻倍。
  • 如果末端短路(ZL = 0),Γ = -1,信号100%反射,但反相,末端电压被拉低。
  • 如果ZL = Z0 = 120Ω,Γ = 0,没有反射。

CAN总线两端各接一个120Ω,从任意一端看进去,两个120Ω通过总线并联,等效负载是60Ω。等等,这里有个容易绕晕的点:为什么不是让等效负载等于120Ω,而是让每个终端等于120Ω?

关键在于:信号是从一端向另一端传播的。当信号到达远端时,它"看到"的是远端的那个120Ω终端电阻,此时近端的电阻还没被信号"感知"到(信号还没跑回来)。所以远端必须放一个等于Z0的电阻来吸收。同理,当近端节点发送、远端节点发送时,角色互换。两端各放一个120Ω,是为了保证无论哪个方向传播,末端都能匹配。

那为什么总线上量出来是60Ω?因为用万用表测的时候,你测的是两个120Ω并联的直流电阻。这个60Ω是判断总线是否正常的经典依据,后面排错章节会详细讲。

2.3 为什么不是其他值:容差与工程折中

理论上终端电阻应该严格等于Z0。但实际电缆的Z0有制造公差,标称120Ω的线,实际可能在100Ω到130Ω之间波动。终端电阻用1%精度的120Ω,已经能把反射系数控制在很小的范围。

有人会问:用100Ω行不行?算一下,假设Z0=120Ω,ZL=100Ω,Γ = (100-120)/(100+120) = -0.09,约9%的反射。对于短总线、低速率,这点反射可能被裕量吃掉;但对于长总线、高速率,9%的反射叠加在信号上,足以让接收端在采样点附近误判。所以工程上宁可用标称值,也不轻易偏离。

还有人问:为什么不用一个60Ω的电阻跨在总线中间?这样直流上等效也是60Ω。问题在于,中间一个60Ω只能匹配一个方向,另一个方向的信号到达这个中点时,看到的是60Ω并联另一段线的Z0,匹配关系被破坏。而且实际布线中"中间"这个位置很难定义。所以标准做法就是两端各120Ω。

3. 高速CAN与容错CAN:终端电阻的两种截然不同的玩法

3.1 高速CAN:两端各120Ω,简单直接

ISO 11898-2定义的高速CAN,物理层就是上面说的那套:线性总线,两端各一个120Ω终端电阻,速率从125kbps到1Mbps。这是最常见的CAN形态,车载动力总成、底盘控制基本都是这个。

高速CAN的收发器输出的是差分信号,CAN_H和CAN_L的共模电压大约2.5V,显性位时CAN_H约3.5V、CAN_L约1.5V,差分电压2V;隐性位时两者都约2.5V,差分电压0V。终端电阻除了匹配,还提供一个微弱的直流负载,让总线在隐性状态时保持确定的共模电平。

这里有个实操细节:高速CAN的终端电阻必须放在总线的物理两端,不能放在中间节点上。我见过有人图省事,把120Ω焊在某个中间ECU的板子上,结果那段分支(stub)太长,分支末端产生反射,波形上能看到明显的台阶。分支长度一般建议控制在0.3米以内,速率越高要求越严。

3.2 低速容错CAN:分布式终端,每个节点都参与

ISO 11898-3定义的低速容错CAN(也叫FT-CAN),速率通常不超过125kbps,用于车身舒适系统,比如车窗、座椅、门锁。它的物理层拓扑完全不同:不是线性总线,而是可以星型、可以多分支,而且终端电阻是分布式的。

典型做法是每个节点各接一个电阻到各自的偏置电压,所有节点的电阻并联后,等效终端电阻落在100Ω到130Ω之间。这样做的目的是容错:即使某根线断了、某个节点短路,总线还能靠剩下的节点维持通信。这也是"容错"二字的由来。

所以当有人问"CAN通信物理层容错测试,故障排查需要增加终端电阻吗",答案取决于你测的是哪种CAN:

CAN类型标准终端方式排错时是否加终端
高速CANISO 11898-2两端各120Ω缺终端必须补,且只在两端
低速容错CANISO 11898-3每节点分布式一般不需要额外加,检查各节点电阻是否正常
单线CANSAE J2411单端不适用双绞线匹配逻辑

低速容错CAN如果按高速CAN的方式在两端硬加120Ω,反而会破坏它原有的偏置网络,导致显性电平异常。这一点在混测两种总线时特别容易搞错。

3.3 为什么容错CAN敢用分布式终端

根本原因是速率低。125kbps对应的信号沿相对缓,波长长,反射能量在采样点之前基本衰减掉了,对匹配的要求没那么苛刻。加上容错设计本身要容忍拓扑的不规则,分布式终端是速率和可靠性之间的折中。

高速CAN速率高,反射的影响直接体现在采样点上,所以必须严格匹配。这就是为什么同样是CAN,终端电阻的处理方式差这么多。理解了这个逻辑,你就不会再把两种总线的终端规则混为一谈。

4. 终端电阻缺失或错误的典型波形长什么样

4.1 缺一个终端:振铃与过冲

假设总线一端有120Ω,另一端开路。发送端发出的信号到达开路端,Γ=1,全反射回来,和入射波叠加。在示波器上看,显性位的上升沿之后会出现明显的振铃,幅度可能超过正常差分电压的20%到50%,然后慢慢衰减。

这种波形在低速、短线上可能还能通信,因为接收端采样点在振铃稳定之后。但一旦速率提高或者线加长,采样点正好落在振铃区,误码率就上去了。我实测过一条约10米的CAN线,缺一个终端时,500kbps下误码率从10^-9量级恶化到10^-4量级,基本不可用。

4.2 两端都缺:反射更严重,共模也漂

两端都开路,信号在两端来回反射,形成驻波。波形上表现为持续的振荡,眼图完全糊掉。同时因为没有直流负载,共模电压可能漂移到收发器共模输入范围之外,接收端直接失效。

4.3 终端电阻值不对:反射系数不为零

接220Ω,Γ = (220-120)/(220+120) = 0.29,约29%反射。接60Ω,Γ = (60-120)/(60+120) = -0.33,约33%反射且反相。两种情况波形都不干净。所以终端电阻不是"随便接一个就行",值必须对。

4.4 多接了终端:总线负载过重

有人在总线中间又并了一个120Ω,总等效电阻变成40Ω。直流上,收发器要驱动更重的负载,显性差分电压可能被拉低;交流上,中间这个电阻对两个方向的匹配都是错的,反而引入新的反射点。所以终端电阻只能有两个,且必须在两端。

5. 动手测:怎么判断总线终端是否正常

5.1 断电测直流电阻:最快的一招

把总线断电,所有节点停止发送,用万用表测CAN_H和CAN_L之间的电阻。正常应该是约60Ω(两个120Ω并联)。如果测到120Ω,说明只接了一个终端;测到无穷大,说明两个都没接;测到40Ω左右,说明多接了一个;测到明显小于60Ω,可能有节点内部短路或者接了不该接的电阻。

这个测量有个前提:必须断电,且总线上不能有正在驱动的节点。有些收发器在断电时呈现低阻,会干扰测量,必要时把节点一个个拔掉排查。

5.2 上电测差分波形:看振铃和眼图

用示波器差分探头(或者两个单端探头做数学运算)看CAN_H减CAN_L。正常波形应该是干净的方波,上升沿有轻微圆角但无振铃。如果看到振铃、过冲、台阶,基本可以怀疑终端或分支问题。

测的时候注意探头接地要短,长地线引入的振铃会误导判断。我一般用弹簧地针,尽量贴近测试点。

5.3 用TDR思路定位问题点

如果有条件,用TDR(时域反射计)或者带TDR功能的示波器,可以看到阻抗不连续点的位置。反射点距离 = 传播速度 × 往返时间 / 2。双绞线的传播速度大约是光速的0.6到0.7倍,即约2×10^8 m/s。这个方法能精确定位是哪个连接器、哪段分支出了问题,比盲猜高效得多。

5.4 物理层容错测试中的终端处理

做容错测试时,经常要模拟断线、短路、节点失效。这时候终端电阻的处理原则是:先确认被测总线的类型和标准拓扑,再决定终端配置。高速CAN测试断线时,如果断点在终端之前,断点外侧的终端就失效了,此时总线等效只有一个终端,波形会变差,这是预期现象,不要误判为被测件故障。测试方案里应该明确记录终端配置,否则复现性很差。

6. 选型、布局与焊接:那些文档里不写的细节

6.1 电阻选型:精度、功率、封装

终端电阻建议用1%精度的金属膜电阻,功率至少0.25W。虽然稳态功耗不高(显性时差分电压2V加在120Ω上,约33mW),但瞬态和故障情况下可能有大电流,留点裕量没坏处。封装上,0805或1206都常见,关键是布局时靠近连接器。

温度系数也要考虑,车载环境温度范围大,温漂大的电阻会让匹配在极端温度下变差。一般选100ppm/℃以内的。

6.2 布局:终端电阻要贴着连接器放

这是最容易被忽视的一点。终端电阻的作用是吸收到达线缆末端的信号,如果电阻离连接器有一段走线,这段走线本身就是一段未匹配的传输线,会在电阻和连接器之间产生反射。所以终端电阻必须尽可能靠近连接器引脚,中间走线越短越好。

我见过一块板子把120Ω放在离连接器5厘米的地方,500kbps下波形就有可见的台阶。挪到连接器旁边后,波形立刻干净。

6.3 可插拔终端:调试期的实用设计

产品定型后终端电阻是焊死的,但调试阶段经常需要临时加/去终端。我的做法是在板子上留一个2pin排针,用跳线帽短接来接入120Ω。这样调试时灵活,量产时把跳线帽换成焊锡短接或者直接贴片。注意跳线帽本身的寄生参数,高速下可能引入小反射,所以最终产品不要用跳线帽。

6.4 分支(stub)长度控制

每个节点到总线的分支长度要尽量短。经验值:500kbps时分支不超过0.3米,125kbps时可以放宽到1米左右。分支越长,它自身的反射越明显。如果拓扑上无法避免长分支,可以考虑在分支末端也加终端,但这会改变总等效负载,需要重新核算。

7. 几个高频疑问的正面回答

7.1 终端电阻发热正常吗

正常通信时几乎不发热,33mW的功耗摸不出来。如果明显发热,说明有持续的大电流流过,可能是总线短路、某个节点驱动异常,或者电阻值选错了。这时候要立刻排查,别让它继续烧。

7.2 能不能用两个60Ω串联代替一个120Ω

直流上等效,交流上如果两个60Ω紧挨着放,中间点悬空,那这个中间点就是一个阻抗不连续点,会引入反射。除非你把中间点也处理好,否则不如直接用120Ω。这种"小聪明"在射频里是大忌。

7.3 为什么有些节点内部自带终端电阻

有些ECU为了方便,内部集成了120Ω,通过配置决定是否接入。这在做台架测试时很方便,但装车时要确认哪些节点接了、哪些没接,否则容易出现"三个终端"的情况。我建议内部终端做成可配置的,默认不接,需要时再使能。

7.4 终端电阻和共模扼流圈的关系

很多CAN接口在收发器和连接器之间会放共模扼流圈,用来抑制共模干扰。终端电阻一般放在扼流圈的哪一侧?通常放在连接器侧,也就是扼流圈和连接器之间,这样扼流圈看到的是匹配好的负载。具体位置要看收发器手册和EMC测试结果,不同方案有差异。

7.5 信号完整性仿真能帮上什么忙

如果总线拓扑复杂、分支多、速率高,可以用信号完整性仿真工具建模,把线缆的Z0、分支长度、终端位置都放进去,看眼图和反射。仿真的价值在于在打板之前发现拓扑问题,而不是替代实测。仿真模型里的线缆参数要用实测或者厂家提供的S参数,否则结果不可信。

8. 我在实际项目里踩过的几个坑

第一个坑是把终端电阻当上拉用。早期做CAN接口,我照着I2C的思路,以为终端电阻是给总线提供高电平的,结果在只有单端终端的板子上怎么调都不对。后来才明白CAN是差分,终端电阻是匹配负载,和上拉是两码事。

第二个坑是分支太长。有次一个节点装在离总线主干两米远的地方,500kbps下通信时好时坏。查了很久,最后用示波器看到分支末端的反射台阶,把分支缩短到0.2米后问题消失。这个教训让我后来画板子时对CAN分支长度特别敏感。

第三个坑是混测两种CAN。一次项目里同时有高速CAN和容错CAN,测试时按高速CAN的习惯给容错CAN两端加了120Ω,结果容错CAN的显性电平异常。后来查标准才知道容错CAN是分布式终端,不能这么加。这件事让我养成了"先确认总线类型再动手"的习惯。

第四个坑是万用表测电阻时没断电。有次测总线电阻,忘了断电,测出来一个乱七八糟的值,差点误判为短路。后来固定流程:测电阻前先断电、先确认没有节点在驱动。

这些坑的共同点是:都源于对终端电阻作用的理解不到位。一旦你把"匹配"这个核心概念刻进脑子里,很多问题在发生之前就能避免。

9. 给不同阶段工程师的实操建议

如果你是刚接触CAN的新人,先把"两端各120Ω、总线测60Ω"这条基线记住,遇到通信问题先量电阻。这个动作能解决相当一部分物理层问题。

如果你在做硬件设计,画CAN接口时把终端电阻放在连接器旁边,留可配置的跳线,分支走线尽量短。板子回来先测直流电阻,再上电看波形。

如果你在做测试或排错,先确认总线类型和标准拓扑,再决定终端配置。测波形时注意探头接地,别把探头引入的振铃当成总线问题。做容错测试时,把终端配置写进测试记录,保证可复现。

如果你在做系统集成,装车前确认每个节点的终端配置,避免出现零个、一个或三个终端的情况。拓扑复杂时考虑做信号完整性仿真,但仿真参数要靠谱。

120Ω这个数字背后,是传输线理论、差分信号、标准定义和工程折中的共同结果。它不是随便定的,也不是可以随便改的。把这一层想清楚,CAN物理层的很多"玄学"问题都会变得有迹可循。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 11:46:33

FP7153升压恒流驱动IC:单节锂电池驱动10W LED手电筒设计全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 11:45:51

紫光同创FPGA开发实战:从PDS工具到引脚时序约束全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 11:45:20

PCB放电齿设计:ESD防护中TVS的补充与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 11:42:51

ESP32-S3/C3 Mini采购避坑指南:PSRAM与USB硬约束核验清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 11:42:51

GPIO八大工作模式精讲:从原理到STM32配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 11:40:40

RTL-SDR从天线到IQ数据:射频前端与数字链路拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华