资讯动态

TVS管放错位置导致CAN/RS485通信瘫痪:波形分析与整改实战

发布时间:2026/10/5 1:10:37 来源:尧图企业网站定制
先说结论这块板子上CAN、RS485/RS422通信全部瘫痪我折腾了两天最后发现罪魁祸首竟然是一颗TVS管。不是管子坏了而是它被放在了不该放的位置顺带选型也没选对。这篇文章我会把示波器上看到的每一段波形、每个判断过程、每次拆焊验证都记录下来包括CAN和RS485/RS422的波形对比、保护器件的布局逻辑、以及最后怎么用几十块钱的器件把整批板子救回来。如果你最近也在调差分通信怎么看波形都不对劲那这篇应该能帮你省下至少一个通宵。1. 故障现象与第一轮排查CAN和RS485/RS422全挂1.1 板卡通信架构与故障现象当时手上这块板卡是一个工业现场控制单元对外通信接口主要就是CAN、RS485和RS422。CAN走的是500kbps的常规总线RS485/RS422是同一个电路通过跳线配置切换的全双工模式下用4根线半双工模式下用2根线。板卡功能并不复杂硬件设计也参考了芯片手册的典型电路按理说这块板子在EMC摸底之前不应该出什么大问题。但故障发生得很突然。那天早上我对着一块刚焊接回来的样机做通信测试CAN怎么发都发不出去总线上一旦有报文错误帧的数量就刷刷往上涨。换到RS485模式现象更离谱本地自发自收回环测试都不过发送完数据立刻收到乱码。再把跳线改成RS422全双工模式接收端干脆一点反应都没有。三个通信接口全部瘫痪而且不是偶发是通电即挂、持续稳定地挂。当时我第一反应是怀疑程序或配置有问题。因为这三个接口是同一个MCU在管理如果串口配置、CAN滤波器、时钟分频之类的代码被改坏了确实会出现这种多接口同时异常的情况。于是我翻出之前验证过的固件版本重新烧录问题依旧。又换了另一块板卡好板卡上三个接口全部正常这就基本排除了程序层面的嫌疑。1.2 初步排查软件、线缆与万用表的局限性排除软件后第二轮的排查对象是线缆和连接器。CAN这边我用了一根短的屏蔽双绞线RS485/RS422也是同样线材只接了A/B两根线或者T/T-/R/R-四根线终端电阻全部按标准接法。线缆换了好几根甚至直接采用最短的飞线连接结果没有任何改善。顺着这个思路我又用万用表逐条量了总线对地电阻、线间电阻、终端电阻阻值全部都在正常范围内没有短路、没有断路、没有明显的阻抗异常。到了这一步我意识到万用表能做的检查已经到了极限。原因很简单万用表只能测静态直流参数而CAN和RS485这类差分信号是动态翻转的总线在通信时出现的问题在直流状态下不一定能体现出来。比如一个器件在静态时表现为正常的高阻但在信号翻转的瞬间却会因电容效应或者非线性导通把波形拉坏这种情况万用表根本测不出来。所以当时做的决定是上示波器直接在波形层面看这三个接口到底发生了什么。2. 示波器看到异常CAN波形这明显不是线缆干扰的问题2.1 示波器测量设置的关键点如果你没有专门的CAN/差分探头测CAN总线也有办法用两个普通探头分别接CANH和CANL通道地都夹在板卡的信号地上然后用示波器的数学运算功能做CH1减去CH2这样得到的曲线就是CANH-CANL的差分波形。我当时用的是100MHz带宽、5GS/s采样率的台式示波器探头切到10倍衰减挡。测量时注意几个设置时基先放到100μs/div看整体报文结构抓到帧之后再放大到10μs/div甚至2μs/div看单个位电压档位使用1V/div触发放到了CAN显性位电平以上约1V的位置这样能稳定地抓到数据帧。示波器自带的CAN解码功能也一并打开波特率设置为500kbps方便直接看解码结果和波形是否对应。另外一个很重要的细节探头的地线要尽量短直接夹在板卡靠近连接器的信号地上不要用长地线飞到大地上。否则地环路噪声会叠加在波形上把真实问题掩盖掉。这一点在测差分信号时特别重要很多新手测CAN波形看到一堆毛刺其实有一半是探头接地方式引出来的。2.2 实测波形到底哪里不对好板的CAN波形很典型静态时CANH和CANL都在2.5V左右差分电压基本为0V显性位时CANH升到约3.5VCANL降到约1.5V差分约2V显性位持续时间约2μs500kbps的位时间边沿上升和下降都非常陡肉眼几乎看不出斜率问题。示波器上解码帧ID、数据、CRC全部正确。故障板的波形就差得很明显了。首先是显性位差分电压不够稳定之后只有约1.0V到1.2V好的板卡是2V。这已经直接威胁到接收端的判断阈值CAN收发器的显性判定阈值通常在0.9V到1.2V之间也就是说这个波形随时可能落入不确定区。其次是边沿非常缓慢从隐性跳到显性保守估计上升沿超过500ns而且波形顶部不是平的而是一个明显的圆弧像是被一个大电容充电过程硬生生拖出来的。这还没完。当我把时基放大到2μs/div后每一个显性位后沿还带着一个“回勾”电平不会立刻回到2.5V隐性电平而是先冲过再慢慢回摆。这个现象意味着总线上存在明显的储能元件信号在总线阻抗和等效电容之间反复充放电整个系统的阻尼特性已经不对了。示波器本身的CAN解码自然也是失败的几乎每一帧都标记为错误帧。2.3 为什么这种波形会导致通信全挂很多人会问幅值差一点、边沿慢一点难道就不能通信吗这个问题要站在接收端看。CAN接收器判断显性位靠的是差分电压超过阈值不是靠“大概有个高电平”。如果实际差分电压只有1.0V而接收器的阈值在0.9V左右那么芯片温度变化、共模干扰稍微叠加一点信号就翻不过阈值位就会被误判为隐性。更麻烦的是边沿过缓会导致采样点处的电压还在上升过程中接收端按位时间中间位置采样时采到的不是稳定的高电平而是半吊子电压采样结果自然随机。另外CAN协议有严格的位同步机制。每一个显性位边沿都会被节点用来重新同步时钟如果边沿缓到像指数曲线一样“拖泥带水”不同节点的同步点就会分散最后演变成位定时混乱整个网络上的节点互相收不到有效帧错误计数器一路飙升到bus-off状态。所以“通信全挂”不是玄学而是物理波形已经差到触发了协议栈的自我保护机制。3. RS485/RS422波形对照同一块板卡上的“传染病”3.1 RS485/RS422测量要点RS485和RS422在物理层比CAN稍微“皮实”一点但测量方法类似。RS485是半双工差分对只有A、B两根线正常静态时A相对B为正电压通常大于200mV发送数据时A-B差分会在正负之间翻转幅度一般能达到1.5V到5V。RS422是全双工有两对差分线发送对T/T-和接收对R/R-各管一个方向测量时要分别看两对线的差分波形。我测故障板的时候示波器的设置基本沿用CAN的测量方案时基根据波特率调整。这里有一个RS485的独有坑半双工通信存在方向切换发送阶段和接收阶段之间会有短暂的空闲波形上会出现一个“翻转毛刺”或者短暂回零。这是正常现象判断波形好坏时要把这个切换过程排除掉重点看数据位的差分幅值和边沿是否稳定。RS422全双工的好处是发送和接收各走各的线不会出现方向切换的干扰测起来更直观。我当时抱着“RS422总该好一点”的心态去测结果发现发送对和接收对的波形都异常这个问题就很能说明问题了。3.2 同一块板卡上的对称异常RS485的实测波形和CAN的异常几乎是一个模子刻出来的A-B差分幅值本应超过2V实际只有1.2V左右每一个电平翻转的边沿都带着明显的指数拖尾甚至比CAN还严重一点。半双工方向切换后接收端收到的数据全是乱码逻辑分析仪抓出来的波形根本解不出有效字节。RS422那边让我彻底确认了问题不是某一根线、某一路收发器的问题发送对T/T-波形幅值不足接收对R/R-波形同样畸变但两对线之间没有相互干扰的迹象。也就是说四个独立的信号引脚全部表现出同一种特征幅值缩水、边沿变缓、波形“变圆”。到这里我心里基本有数了如果是收发器芯片坏了不可能四个通道同时坏得这么一致如果是线缆问题不会换了无数根线还一模一样。所有异常都指向一个方向——板卡上某个并接在差分信号线上的公共器件把总线“带垮”了。所以我把目光从芯片转回到外围保护电路尤其是那些最容易被忽视的TVS管。4. 拔掉怀疑对象TVS管放错位置到底错在哪4.1 TVS管的作用与关键参数TVS管全称是瞬态电压抑制二极管它的作用是当总线上出现ESD静电放电、浪涌、过压脉冲时快速把电压钳位在一个安全范围内避免后级的收发器芯片被击穿。可以把它理解成一个“速度很快的泄压阀”平时它不导通、几乎不影响电路一旦电压超过保护阈值它就瞬间导通把过压能量泄放到地。但保护器件有个天然矛盾要耐住瞬态大功率通常PN结面积就要大而结面积一大结电容就会跟着变大。TVS管在总线上并联放置时它的结电容实际上会变成信号线上的一个额外负载电容越大对高速信号的“拖累”就越明显。这个拖累直接表现为边沿变缓、幅值降低和我在示波器上看到的现象完全吻合。所以总线上选TVS三个参数缺一不可工作电压VRWM必须高于正常工作电压范围留出足够裕量否则正常信号就会让TVS导通漏电钳位电压VC必须低于后级收发器的最大耐受电压否则保护等于没有结电容Cj必须尽量小用于CAN/RS485这类差分总线时一般要求低于30pF最好在个位数pF级别。4.2 “放错位置”的两种具体含义这次故障板卡上的TVS管问题不只是选型更重要的是放错了两个位置。第一个错器件安装位置错。PCB上这颗TVS管没有放在靠近总线连接器的入口处而是放在了靠近收发器芯片的位置中间还隔着终端电阻和一小段走线。保护器件本应作为“第一道防线”部署在最靠近外部接口的地方让浪涌在进入板卡内部之前就被泄放掉。现在放在芯片附近等于浪涌先穿过一段PCB走线、穿过终端电阻把芯片引脚附近的地电位都抬起来之后TVS才动作保护效果大打折扣。第二个错更致命TVS的接法错。正确的差分总线保护应该是每根信号线分别对地各接一只TVS这样浪涌能量可以向系统地释放共模干扰也能被有效钳位。而这块板子为了省元件、省贴片位置直接用一个双向TVS跨接在CANH和CANL之间、A和B之间。这种跨线接法在原理图上看起来好像也能“保护差分线”但实际工作的时候这颗TVS的结电容就跨在了差分对之间等效于在120Ω终端电阻上又并了一个电容。我当时拆下这颗TVS看型号是一颗通用大功率双向TVS结电容标称值有几百pF比专用总线保护器件高了一个数量级。这个电容配合120Ω终端电阻就形成了一个截止频率很低的RC低通滤波器。CAN和RS485的信号边沿只要经过这个网络高频分量基本全被滤掉波形自然就变成我在示波器上看到的那个又圆又慢的样子。再叠加多节点总线上其他设备也在这个节点上看到的等效负载整个网络的信号质量雪崩式恶化。4.3 为什么会放错设计和复用习惯的教训后来复盘设计过程发现这个问题其实有迹可循。原理图最初是从一个老项目复用的老项目速率低、节点少TVS管位置虽然不对但影响被掩盖了。这次新项目把CAN速率提到了500kbpsRS485通信距离也变长了信号对边沿和幅值的要求更严格问题就暴露出来了。还有一个心理因素硬件工程师在BOM管理上往往会倾向于“统一物料”希望所有总线上用同一款TVS减少采购和库存压力。这个初衷本身没错但前提是这款TVS要满足所有接口的电气要求。拿一颗大功率、大结电容的通用TVS去通吃CAN和RS485本身就是“一个萝卜一个坑”没落实到位。原理图评审时如果没有盯着器件位置和接法看只确认了“有加保护器件”那这个问题就会一路带到样机阶段。5. 整改方案与正确防护电路参考可直接抄作业5.1 修复操作拆掉TVS后波形立刻恢复定位到TVS管之后验证过程其实很简单。我直接用烙铁把故障板卡上CAN接口的TVS管焊下来然后再次用示波器测CAN波形。结果非常直观显性差分电压从之前的1.0V左右恢复到接近2V边沿陡峭得像用尺子画出来一样示波器解码立刻全部通过。再把RS485/RS422接口上对应位置的TVS管也一一拆掉四个信号通道的波形全部恢复正常三个接口的通信全部恢复。但这里要明确一点我并不是说“TVS管可以不装”。工业现场总线如果不做防护静电和浪涌很容易把收发器打死后级芯片换一片的成本和时间远比一颗TVS管高。正确的做法不是拆掉保护器件而是把器件装在正确的位置、选正确的型号、用正确的接法。5.2 推荐的CAN/RS485防护电路布局顺序以我后来整改这块板卡的思路正确的总线防护布局应该是这样的从连接器往芯片方向依次排列连接器 → TVS管每线对地 → 共模电感可选 → 终端电阻 → 收发器。这里有两个关键点。第一TVS管必须最靠近连接器。浪涌和静电是从外部线缆进来的防护器件的部署一定要赶在干扰进入板卡内部之前。如果TVS离芯片比离连接器还近那么干扰会在板内走很长一段路这段路上的走线、器件都会被波及保护效果等于打了对折。第二终端电阻要放在TVS的内侧。终端电阻的作用是匹配总线阻抗、吸收反射它的位置要和总线特性匹配。如果TVS跨接在差分线之间且位于终端电阻外侧正常信号会先经过TVS的结电容再进入终端电阻等于是给终端匹配网络额外并了一个大电容。这个电容和终端电阻形成的低通滤波就是本次故障的物理根源。在TVS的接法上我后来统一改成了“每根信号线各对地接一只单向TVS”不再使用跨接在差分线之间的双向TVS。这样做的原因是共模保护比差模保护更贴近实际威胁场景外部干扰大多数是以共模形式进入总线的每线对地的TVS能把这些共模能量泄放到系统地。而跨线接法不仅保护模式不对还把结电容直接挂在了差分对上对信号质量影响太大。5.3 CAN、RS485/RS422的TVS选型速查整改时我给不同总线换了不同的TVS选型这里附一个当时整理出来的选型对照表可以作为参考总线类型正常工作电平特征TVS工作电压建议结电容要求推荐接法CAN隐性共模2.5V显性差分约2VVRWM≥5V常用5V~6VCj≤30pF最好≤10pF每线对地各一只单向TVSRS485/RS422静态A-B为正差分幅值1.5V~5VVRWM≥6V常用6V~8VCj≤30pF最好≤10pF每线对地各一只单向TVS以太网顺带提一下差分信号幅度低频率高VRWM≥3.3V注意信号幅度Cj≤2pF级别专用以太网TVS阵列选型时还要看一下TVS的封装功率能不能承受目标等级比如IEC 61000-4-2静电8kV等级的瞬态冲击但优先级排序应该是工作电压必须正确 结电容必须足够低 钳位电压必须低于芯片耐压 封装功率满足要求。很多人买TVS第一眼看功率然后看封装最后才看电容这个顺序在差分通信总线上是反的。5.4 用示波器快速验收整改效果整改完成后别急着把板子装起来先用示波器做一轮快速验收。我当时的做法是测量整改后的CAN波形确认显性差分电压稳定在1.8V以上边沿换算出来的上升时间比整改前缩短至少5倍并且用示波器解码连续抓100帧报文错误帧为0。RS485和RS422同样看A-B差分幅值和T/T-、R/R-的波形确认每个数据位的差分电压都超过1.5V边沿没有明显的圆弧拖尾。有条件的话还可以在验收时做一次静电放电测试用手持静电枪对着连接器外壳和线缆打几下同时观察示波器上波形是否被TVS管有效钳位、通信是否中断。这一步能直接验证TVS管是否真的在干活而不只是“焊上了”。6. 常见问题与排查技巧实录6.1 波形异常排查速查表这次调试过后我整理了一个差分总线通信故障的排查表分享出来下次遇到类似现象可以直接对号入座波形现象可能原因排查建议显性差分幅值偏低CAN低于1.5VRS485低于1.2VTVS工作电压过低导致漏电或提前导通终端电阻异常收发器驱动能力不足先断开TVS对比测试核对TVS工作电压确认终端电阻阻值波形边沿明显变缓顶部变圆TVS结电容过大多个节点TVS电容累加走线过长寄生电容过大测量上升时间更换低Cj TVS阵列检查每个节点的保护器件隐性电平被拉偏静态电压异常总线对地漏电TVS损坏呈低阻状态上拉下拉电阻失效断电后测对地阻抗拆下TVS测I-V特性只有一端通信正常另一端异常终端电阻位置不对TVS只在某一端加了但位置错误远端节点保护设计缺失两端接法做对称检查对调终端电阻验证打静电、浪涌后通信恢复不了TVS选型钳位电压过高收发器已经被打坏TVS本身损坏短路更换收发器重新评估TVS钳位电压和功率多节点组网时节点越多越不稳定每个节点的TVS结电容累加等效总线电容过大换更低Cj的TVS减少不必要的保护器件数量6.2 关于“保护器件导致通信异常”的几点避坑心得第一打样阶段千万不要把TVS管焊死不给退路。我后来在原理图评审时都会要求板卡保护器件旁边预留测试焊盘和0欧电阻跳线位这样调试时可以先断开保护器件快速判断问题是不是出在防护电路上。等你花了半天时间怀疑收发器、怀疑主控、怀疑线缆之后再想起来去拆TVS时间成本就太高了。第二示波器测量要先从芯片引脚测起。如果芯片引脚处的波形就已经很差基本可以断定问题在板内不用急着去查线缆和远端设备如果芯片引脚正常、连接器处异常才应该把排查重点放到板卡外部。第三总线上加保护器件要克制。TVS不是越多越好也不是每个位置都必须加双份。低速率、短距离的板内通信甚至可以不加TVS只做简单的RC滤波。盲目堆保护器件反而会让信号质量变差。尤其要注意多节点总线上每个节点都加一颗高电容TVS累加起来的总线电容会让你亲眼见证“节点数越多波形越烂”的过程。第四顺手说一个题外话5V电源输出端的TVS选法和总线TVS完全不是一回事。电源端通常要选单向TVS、工作电压比5V高20%以上、大功率优先而总线端更看重低电容和响应速度。千万不要图省事用一颗料通吃电源和总线这两种场合对器件的核心诉求根本不在一个维度上。那次整改之后我养成了一个习惯画差分接口电路时会把保护器件当作“有实体的零件”来布局而不是原理图上一个不起眼的符号。连接器旁边必须预留TVS位置走线从连接器进来先经过TVS再到终端电阻最后才进收发器。每次拿到新板子我第一件事就是拿起示波器先看一遍各个总线边沿够不够陡、幅值够不够足。毕竟示波器不会说谎大部分通信疑难杂症波形上早就有答案了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑