ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

用示波器定位RS485/CAN通信故障:TVS管位置是关键

用示波器定位RS485/CAN通信故障:TVS管位置是关键 做硬件和嵌入式这些年示波器就是我的“眼睛”。很多时候板子不工作软件查半天没问题最后问题全在硬件细节上。这次要讲的是一个特别典型的案例在RS485和CAN总线上加TVS管做浪涌防护结果因为TVS管放错了一个位置导致整个通信链路直接瘫痪。这个问题的隐蔽之处在于用示波器看波形时它并不是完全没信号而是信号“看起来还行”但实际上已经处于通信失败的边缘。这个案例适合做工业通信、嵌入式硬件、自动化控制的朋友参考尤其是那些需要在RS485、RS422、CAN总线上做ESD和浪涌防护的工程师。看完你会对TVS管的寄生参数、摆放位置以及如何用示波器快速定位通信问题有更直观的理解。全程没有玄学全是实测结果和排查思路。1. 一块“实验室正常、现场就挂”的通信板1.1 故障现象时好时坏最折磨人的那种我拿到这块板子的时候客户反馈的问题很典型单板测试、出厂检验全过一到现场接上总线就偶发通信失败。通讯日志里一会儿CRC校验错一会儿应答超时重启之后又能撑一会儿。这种“时好时坏”的故障最恶心人软件同事前前后后查了三天怀疑过波特率配置、怀疑过缓冲区溢出、甚至怀疑过晶振温漂。我接手之后第一件事就是问现场出问题的通道是RS485还是CAN接了几台从机线缆多长供电是不是同一个电源这些问题看着基础但实际上能帮你快速缩小范围。答案是RS485接了8台设备CAN接了3个节点线缆都在二三十米以内供电来自同一个开关电源。条件不算恶劣那问题大概率出在板子自身的接口电路上。裸板在实验室怎么测都是好的说明功能逻辑没问题差异一定在负载和电气环境。于是我直接上示波器盯着总线看。1.2 示波器初检波形“看着能用”就是最大陷阱示波器这玩意儿会用的人知道它的价值不会用的人就只会截图。我这边习惯是先用两个通道同时接A和B对地然后用数学通道直接做A减B看差分信号。只看单端信号很多问题是看不出来的。比如RS485的A和B同时被共模干扰抬高1V单看A或者B都是正常的波形但A-B差分会非常干净或者非常异常。所以上来先看差分是最省时间的。我当时看到的波形状态是通信确实在跑数据帧一帧接一帧用光标测差分包络也还在正常范围。但仔细看就发现不对波形上升沿有点“拖泥带水”不是利落的阶跃而是带一点慢爬。另外总线空闲电平偶尔会被拉下来一小截然后弹回去像是有个什么东西在吸电流。这个细节造成了两个问题接收端在高速率下容易采错电平重负载下信号占空比失真。我把示波器时间轴拉大、采样率调高才看清楚这些瞬态细节。所以这里也提醒大家排查通信问题示波器的采样率要高于信号速率10倍以上不要用1M采样率去看1Mbps的总线那等于闭着眼睛走路。1.3 常规排查软件、接线、终端电阻一样样排除把波形停在一边我先把容易排除的因素过一遍波特率、帧格式抓了软件日志确认主从机配置一致排除。A/B或CAN_H/CAN_L接反现场用万用表通断档逐段量了线序排除。终端电阻RS485在主机端和末端从机各并一个120欧CAN两端各120欧用万用表在线测量总线直流电阻大概60欧两个120并联逻辑上没问题。共模电压用示波器看A对地、B对地的直流电平没发现明显工频干扰或地电位抬升。那问题就集中在板级电路上了。而板级电路里最容易因为“看起来是在保护”而被忽略的就是那几颗TVS管。2. 拿示波器吃透三种总线的“正常波形”2.1 别用探头乱怼差分测量的正确姿势先说测量方法这个太重要了。很多人用示波器测RS485就是把探头地夹子夹在GND上表笔点到A或B看单端波形。这样不是不行但你会丢掉差分信号最有价值的信息。因为RS485、CAN这类总线收发器真正识别的是A和B之间的电压差不是A对地、也不是B对地。共模噪声、地电位差都会让单端波形“漂”但差分波形才是通信真正依赖的信号。正确做法有两种如果有差分探头直接A-B差分探头最省事。如果只有普通无源探头用两个通道分别接A和B地夹都接在本地GND上然后在示波器上打开数学运算MATH通道选择CH1减CH2。这里有个细节两个探头的延迟要一致最好选同一型号、同一长度的探头。不同型号探头内部衰减网络不同会导致高频分量相位有细微差异减出来的波形会有毛刺。严格的话可以做deskew校准不过一般低速总线10Mbps以下用同型号探头就够了。还有一个是探头带宽。测CAN和RS485普通100MHz带宽示波器完全够用但探头的带宽和示波器带宽一样重要。如果探头只有20MHz你看到的是一个被严重低通滤波的波形上升沿全是“假肉”容易误判。2.2 RS485/RS422 的正常波形长什么样RS485和RS422都是差分信号电气特性基本一致区别只在RS485是半双工A、B两根线分时收发RS422是全双工收和发各用一对线一共4根。用示波器看RS485差分波形你应该看到空闲态A比B高约200mV以上实际上驱动器输出逻辑1时A-B在1.5V~5V之间接收器识别阈值是±200mV数据位由起始位拉低A-B然后数据位在高低电平间翻转差分电平幅度上空载时能达到±5V左右两端各并120欧终端电阻后有负载时典型在±1.5V~±2.5V。这里有个经验值如果差分幅度低于±1.5V但高于±0.2V通信大概率还能工作但余量已经很小了。一旦有干扰、地电位差、或线缆衰减就很容易误码。我一般会要求协议转换器或板子输出端的差分幅度至少在±2V以上才敢说“稳”。RS422全双工和RS485半双工的波形在数据格式上类似只是RS422需要注意发送对和接收对是独立的示波器要分别看两组差分。有些工程师会误把RS422的发送对当成RS485的一根总线去测结果看到一对线一直空闲以为通信没跑其实帧是从另外一对线走的。2.3 CAN总线的波形和RS485可不一样CAN总线的差分波形跟RS485有明显区别新手最容易在这里懵掉。CAN总线的逻辑电平是这样定义的隐性recessive逻辑1时CAN_H和CAN_L都约2.5V差分电压约0V显性dominant逻辑0时CAN_H抬到约3.5VCAN_L拉到约1.5V差分电压约2V。所以用示波器看CAN的差分波形你会发现大部分时间波形都在0V附近因为CAN总线空闲和隐性位都是0V差只有出现显性位的时候才跳出一个正脉冲。这和RS485那种“一直有高低电平翻转”的波形完全不同。另一个特点是CAN总线的隐性电平靠收发器内部和终端电阻网络偏置到2.5V对地电容、TVS管的漏电流都会影响这个偏置。如果看到隐性差分电压明显偏离0V或者显性差分幅度低于1.2V通信可靠性就值得担心了。CAN总线在仲裁时多个节点可以同时发送显性电平会覆盖隐性电平所以CAN总线波形上天然能看到“争夺总线”的叠加效果。只要不是异常畸变这是正常的。但如果你看到显性电平时波形中间有一个“台阶”像是先到半个高再顶上去就要怀疑是不是有保护器件或者stub在捣乱了。2.4 一张表看懂波形异常对应的故障把我在调试中常见的波形异常整理成一张表排查时直接对号入座波形现象常见原因验证方法差分幅度整体偏低终端电阻过多、TVS漏电流、驱动器能力不足逐段断开节点看幅度是否回升上升沿明显变缓总线电容过大TVS结电容、线缆过长测量总线对地电容检查TVS型号波形边沿有过冲/振铃阻抗不匹配、stub过长检查终端电阻、分支线长度波形有台阶/塌陷TVS钳位电平选低、或位置不当对比波形与TVS钳位电压空闲电平被压低再弹回TVS漏电流或损坏、偏置网络异常断电后测总线对地阻抗波形间歇性消失节点未上电、连接器接触不良检查供电和连接器这个表格不是让你死记硬背而是告诉你异常的波形往往不是“一个原因”造成的而是“一个主要因素加几个次要因素”叠加的。排查的时候不要急着下结论先确认基础设置再层层往上走。3. 真相时刻放错位置的TVS管到底错在哪3.1 TVS管是干什么的为什么总听人说“先被打坏”TVS管Transient Voltage Suppressor瞬态电压抑制二极管是并联在信号线上的保护器件。它的工作原理很简单正常工作电压下它不导通相当于开路一旦线上出现超过阈值的瞬态高压比如雷击感应、静电放电它迅速击穿导通把过压能量泄放到地或电源轨把电压钳位在安全范围内保护后级的收发器芯片。这个器件有两个特点决定了它在通信总线上的使用必须要讲究它并联在信号线上它的寄生电容对信号是有影响的它的钳位电压和截止电压选不好会干扰正常信号。很多人过分关注TVS的功率和钳位电压忽略了电容这是最常见的坑。普通TVS管的结电容可以做到几百pF到几nF对50Hz工频电路无所谓但对1Mbps以上的RS485/CAN总线来说几百pF的电容加在总线上相当于给信号的上升沿加了一个RC低通边沿变慢了传输距离一长或者节点一多就是灾难。“TVS先被打坏”这个说法我也经常听到。原因往往不是TVS质量差而是选型裕量不够工作电压选得跟信号电平太接近、功率等级选小了或者多次瞬态冲击已经累积损伤。在总线上更隐蔽的原因是TVS位置不对导致它承受了不该它承受的能量比如直接被并接在有过流风险的电源端。3.2 这次案例里我是怎么把TVS放错的拆开客户返修板上电用示波器盯了一段时间我发现几个问题最后定位到板子上的RS485和CAN保护电路第一TVS管的位置在终端电阻和收发器之间而且离收发器引脚非常近。这个位置看起来好像没问题但实际上等于把TVS的寄生电容直接并在了收发器的差分输入端。RS485收发器输入端本来就是高阻对电容极其敏感几百pF的结电容会让输入端的RC时间常数显著增加。第二TVS管的截止电压VRWM选低了。RS485总线在正常工作时A-B差分电压在负载下大约±2V左右但共模电压范围是-7V到12V。如果TVS的截止电压低于共模范围总线上的正常共模电压变化都会让TVS进入导通或半导通状态漏电流增大表现为波形被“吸掉”一块。第三TVS管接法上还犯了个错在CAN总线上我把一个TVS接在了CAN_H对地、另一个接在CAN_L对地但中间的共模点没有处理好。CAN总线除了差分信号还依赖2.5V共模偏置。两个对地TVS的结电容不对称会直接拉扯共模电平导致显性波形出现台阶。这三件事叠加起来板子就成了“裸板测试看不出问题、现场一接多节点就翻车”的状态。3.3 位置错误从电气上如何毁掉一条总线用传输线理论来解释就很好理解了。RS485和CAN总线本质上都是传输线特性阻抗大约120欧。总线设计要遵守两条规则两端各接一个120欧终端电阻保证阻抗匹配所有节点的分支stub要尽量短最好小于0.3米。TVS管放在哪个位置直接决定了它在这条传输线中扮演什么角色放对了它是低电容的“透明”保护件对信号路径几乎无感放错了它就是一个容性负载、一个阻抗不连续点、一个钳位干扰源。当大结电容TVS并接在终端电阻内侧时等效电路就是终端电阻并联了一个电容。这个RC并联网络在低频时阻抗等于120欧但高频时阻抗下降信号的高频分量被衰减上升沿明显变缓。如果这个位置在总线中间还会形成阻抗不连续信号在这个点发生反射波形出现台阶和过冲。把TVS放在连接器入口处、靠近总线侧才是正确做法因为此时TVS到串入总线的stub尽量短对主干的阻抗影响小同时还能在信号进入板子之前就把浪涌泄放掉。3.4 示波器波形回放当时到底看到了什么回到案例我把当时示波器上捕捉到的现象还原成文字帮大家对号入座RS485通道发送帧时A-B差分波形幅度只有约±1.2V正常应在±2V左右上升沿明显变缓从10%到90%爬升时间比正常时慢了大约3倍帧与帧之间的空闲电平有轻微下拉说明有器件在“偷偷”吸电流。CAN通道隐性电平不干净差分电压在0V附近有约0.3V的偏移显性脉冲顶端不水平先冲到约1.6V然后缓慢上爬到帧结束时才稳定到1.8V~2V单节点自测时波形勉强正常接上第二个节点后波形明显畸变更严重。这些现象如果用一句话总结总线信号在每一个位时间bit time内都无法在采样点前稳定下来接收端看到的是一个“不确定”的电平误码自然就来了。用示波器测量时建议把时基设成一个位时间的5~10倍比如1Mbps的RS485位时间是1us时基就设到5us/div左右。然后用光标卡上升沿测10%~90%时间如果这个时间超过了位时间的20%基本可以断定总线负载电容或驱动能力有问题需要查TVS和终端电阻。4. 正确姿势总线保护电路到底怎么放4.1 RS485/RS422 标准保护电路布局先给出一套我在项目里常用的RS485保护电路布局从上到下依次是总线连接器DB9或接线端子气体放电管GDT跨接A-B用于泄放大的浪涌可选雷击场景用两颗TVS管A对地、B对地各一颗注意截止电压大于允许共模范围共模电感/共模扼流圈抑制共模干扰120欧终端电阻注意此电阻只在总线两端放不是在每个节点都放RS485收发器如MAX3485、SP3485等TVS管要放在最靠近连接器的位置也就是浪涌进入板卡的第一个器件。这样浪涌在进入后级电路之前就被钳位了。终端电阻放在收发器侧和TVS隔开避免TVS的结电容和终端电阻直接构成低通滤波器。用文字画个简化示意不严谨但直观连接器 → TVS(A-GND) → 共模电感 → 终端电阻 → 收发器 → TVS(B-GND) → 共模电感 → 终端电阻 →如果你的系统对成本比较敏感可以省略共模电感但TVS一定不能省位置也不能挪。4.2 CAN总线保护电路的正确写法CAN总线的保护电路思路类似但有一个关键差异CAN总线依赖2.5V共模偏置所以TVS的接法要比RS485更小心。常用的CAN保护方案有两种方案一两颗TVS管分别接CAN_H到地、CAN_L到地。这种接法能分别对两根线做对地保护但对共模偏置有影响要选结电容极低的TVS否则显性波形台阶明显。方案二一颗TVS跨接在CAN_H和CAN_L之间即差模保护再配合两颗低电容TVS或电容阵列做共模保护。跨接在差分线之间的TVS对共模信号不敏感不影响2.5V偏置是CAN总线首选。推荐方案二的变体用一颗双向TVS跨接CAN_H与CAN_L之间截止电压约6V~7V然后CAN_H和CAN_L各对地接一颗低电容TVS比如截止电压约24V的用于泄放共模浪涌不影响2.5V工作点。这样共模和差模都有保护对信号影响最小。CAN的终端电阻两个60欧串联中间点通过4.7nF电容接地作为Split Termination在很多设计中是为了共模稳定和EMI优化。但要注意中间分压点不是随便都能加电容的它会改变共模噪声路径。一般建议按参考设计来不要自行创新。4.3 选型实例到底选多大的TVS管才算合适以RS485的5V供电系统为例工作电压5V但总线共模范围是-7V~12V。最实用的选型逻辑是看“截止电压VRWM”A对地TVS的VRWM要大于正常工作时的最大共模电压通常选12V或15V档B对地同理跨接A-B之间的差模TVSVRWM要大于最大差分电压约±5V~±6V通常选8V~10V档。选型时的具体参数以我常用的SMBJ系列、SMAJ系列为例VRWM 15.0VVBR 16.7VVC(max) 24.4V600W峰值功率10/1000us波形结电容标准型约几百pF低电容型如带L后缀的型号约几十pF对于1Mbps以下的RS485用标准型问题不大但如果是12Mbps的RS422全双工或者CAN的1Mbps建议选专门的CAN/RS485保护TVS比如PESD1CAN、NUP2105L这类结电容可以做到几pF至几十pF。最后再提醒一次看TVS规格书的结电容Cj时注意是“1MHz、0V偏置”还是别的测试条件。不同条件下测出来的Cj差别很大别被数据手册上的“低电容”宣传骗了务必以你实际电路工作点的偏置为准。4.4 布局和布线的实用建议选对了器件位置放对了PCB布局如果乱来一样会翻车。我总结的几条经验TVS管必须紧挨连接器连接器到TVS的走线尽量短、尽量粗。这段走线如果在浪涌来的时候电感太大TVS还没导通高压就已经从空间耦合到后级了。终端电阻要靠近收发器引脚但TVS不能在终端电阻和收发器之间。顺序永远是连接器 → TVS → 共模电感可选 → 终端电阻 → 收发器。TVS的接地脚要直接回到PCB的接地平面不要绕路、不要和数字地混在一起。高频浪涌路径如果走线太长会产生额外压降钳位效果大打折扣。如果同时有CAN和RS485两组总线走线要分开不要在PCB上并行太长距离否则线间串扰会带来莫名其妙的偶发误码。走线尽量保证差分对的等长、等距靠近连接器的地方不要用过孔跳来跳去那会破坏差分阻抗。这些经验都是实打实拿故障换回来的特别是第2条和第3条我在别的板子上踩过把TVS挪到终端电阻内侧之后波形瞬间变烂测出来就是上升沿拖尾。当时要是早有这张“顺序图”能省两天时间。5. 复盘一套能直接抄的排查清单5.1 示波器排查通信问题的操作流程把这次排障的过程提炼成一套可复用的流程下次遇到类似问题照着走就行先确认物理层用万用表量接线、线序、终端电阻确认供电地是否隔离。这一步至少能排除一半的“玄学”问题。单节点自测只接一个节点用示波器看发送波形确认该节点单发时波形是否达标。双节点互测接两个节点收发对打看接收端能否正确识别。多节点满载把在线设备全部接上重点看波形幅度、上升沿、空闲电平是否和单节点时有明显差异。差异越大说明总线负载/保护电路问题越严重。逐段隔离如果满载异常用二分法断开一部分节点定位是哪一个或哪一段节点拖垮了总线。检查保护器件断开总线供电用万用表或LCR表测连接器处总线对地电容和正常板卡对比。TVS结电容异常偏大超过几百pF基本能确认问题。对比验证有条件的话把可疑的TVS从板子上拆掉或用一根飞线绕过该保护电路再测波形。如果波形恢复实锤就是保护电路的问题。这个流程听着简单但优点是快。我处理过很多类似的返修90%以上都能在半小时内定位到具体器件或具体走线。5.2 通信故障排查速查表故障现象排查方向排查工具/方法完全不通接线、供电、方向RS485、波特率万用表、示波器、串口助手偶发误码终端电阻、共模干扰、TVS电容、地电位差示波器长时间捕获、隔离电源距离拉长就不通总线电容、信号边沿、线缆质量示波器测上升沿、测线缆电容高温/振动后失效连接器接触、TVS热漂移、焊点开裂热风枪局部加热、按压排查接上某个设备就挂该设备保护电路、终端电阻、stub过长单独测该设备总线电容、波形波形看着正常但误码采样点偏移、收发器质量、协议问题示波器眼图如果示波器支持、逻辑分析仪这张表不是“标准答案”我每接一个新案子都会往里面加新条目但核心思路不变优先怀疑物理层物理层没问题再看协议。5.3 几条用代价换来的实在经验最后分享几条我这些年调总线通信攒下来的经验第一TVS管不是“焊上去就完事”的。选型、位置、布局三者缺一不可。低电容不是可选项是总线保护的必选项。普通TVS给电源用可以给RS485/CAN用之前先看一眼Cj数据超过100pF就直接换。第二示波器要“盯着看”不是“拍一下就完”。偶发通信问题可能需要几分钟甚至更长时间才能捕获一次异常波形。示波器有波形触发条件的话比如边沿触发、脉宽触发、欠幅触发要善用把异常波形触发出来再分析比翻日志有效率得多。第三总线通信问题的排查永远从物理层开始从波形开始。软件日志、协议分析只能告诉你“哪里错了”示波器波形才能告诉你“为什么错”。第四最容易被忽略的是地电位。RS485和CAN都允许一定范围的共模电压但前提是参考地是干净的。现场如果供电来自不同开关电源或长距离跨设备走线强烈建议加隔离隔离电源隔离收发器。这个“防患于未然”的建议比任何后级保护都管用。回到这次案例本身问题其实不难但隐蔽性极强。TVS放错位置波形短时间看不出大问题但长期跑就是偶发故障最多的元凶。如果你手头也有类似的板子在返修不妨先检查一下保护电路的选型和位置。示波器不会说谎波形会把每一个设计疏忽都如实记录在案。如果这块板子后续还要迭代我会在原理图上把TVS的位置固定死在连接器侧并把“低结电容”写进选型强制要求里然后针对TVS位置增加一条PCB评审检查项。这些小改动不需要花什么成本但能避免一整个批次的板子在现场变成“薛定谔的通信”。
返回列表