十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

STM32运行后VCC-GND短路?从硬件到代码的排查实战指南

STM32运行后VCC-GND短路?从硬件到代码的排查实战指南 1. 先诊断再怀疑把“几分钟后短路”这个现象拆开看1.1 “上电就短路”和“运行几分钟才短路”是两套完全不同的查法拿到这块 STM32H562RET6 的板子第一次上电正常代码跑起来串口打印也正常但大概三五分钟后电源上的电流突然飙上去万用表一量 VCC 和 GND 之间已经掉到几欧姆甚至直接蜂鸣。这时候大多数人的第一反应是“芯片烧了”赶紧把 STM32 摘下来换一颗。但我劝你先别急因为“运行几分钟后才短路”这个特征恰恰说明故障大概率不是芯片本身设计或焊接时造成的硬短路而是一个动态发展的过程。上电瞬间就短路的板子通常是焊桥、锡珠、电容装反、PCB 内层短路这类静态问题。而“运行几分钟后才短路”意味着系统在运行过程中出现了某个触发条件可能是一个元件持续过热后击穿可能是某个引脚配置改变后形成了过流路径也可能是芯片内部发生了闩锁效应。这两种现象背后的物理机制完全不同排查思路也应该完全不同。如果你用“上电短路”的思路去查“运行后短路”很容易把好芯片冤枉地拆下来最后发现换上去的芯片还是同样的问题。1.2 先确认是不是“真短路”别被万用表骗了排查之前先做一步最简单但也最关键的动作用电阻档而不是蜂鸣档去量 VCC 和 GND。蜂鸣档的阈值比较低很多板子电源网络上并联了几个大电容刚断电时电容里还存着电你一量表笔给电容充电瞬间电流让蜂鸣器响了但这其实根本不是短路。正确做法是先把板子断电等十几秒让电容放完电然后用万用表的电阻档建议手动选到几百欧或几欧档位去量 VCC 对 GND 的电阻。如果量出来是几十欧、几百欧那不叫短路那是正常的放电回路或者某个电源轨的负载电阻。真正需要警惕的是那种稳定在几欧以下的情况而且要反复确认几次都是同样数值。另外还要注意方向性有些板子上有二极管、ESD 防护器件正反两个方向量出来的阻值不一样这是正常的只要两个方向都没有接近零欧的低阻基本可以排除电源轨本身的物理短路。还有一个容易漏掉的细节如果你用的是可调电源来供电很多电源在过流之后会进入恒流或者打嗝保护模式。这时候你再拿万用表去量板子量出来的低阻可能是电源内部保护电路带来的假象。正确做法是把电源和板子完全断开单独量板子的 VCC 和 GND。1.3 时间维度是缩小范围的最好线索“几分钟”这个时间窗口很有价值值得好好利用。我自己的经验是拿到这种板子第一件事是重新上电然后在旁边盯着电流表记录从正常到异常的时间曲线。是缓慢上升还是突然跳变有没有周期性这能帮你判断是热积累型故障还是软件触发型故障。如果是电流缓慢上升比如从 50mA 慢慢涨到 200mA再涨到 500mA最后跳保护这大概率是热量积累导致的元件特性劣化重点查电源芯片、钽电容、LDO、MOS管这类功率器件。如果电流一直很平稳到某个时间点突然一下从正常跳到大电流那更要关注是什么事件触发了它也许是某个外设被初始化了也许是某个 GPIO 被拉高也许是进了一个功耗更高的运行模式。这时候最好在代码里加调试输出把关键状态切换的时刻打上时间戳对比一下短路发生的时刻和代码执行的位置。很多时候不是硬件“坏”了而是硬件被软件推到了某个不该出现的状态。2. 由外到内把可疑元件逐个过一遍2.1 电源侧先自查LDO、DCDC 和限流现象很多人习惯性把锅甩给 MCU但我在实际排查中遇到过好几次“短路”其实出在电源侧。STM32H562RET6 的工作电压是 1.62V 到 3.6V如果你板子上的 3.3V 是 LDO 或 DCDC 转出来的那就要重点关注这些电源器件在负载下的表现。有一种很常见的现象LDO 选型时散热没算好输入输出压差大、负载电流高芯片内部结温一路飙升最后触发了过热保护或者直接热击穿。这种情况下你量 VCC 和 GND量到的可能是 LDO 内部已经损坏的功率管漏电流表现为几十欧甚至几欧的低阻。判断方法很简单把 LDO 输出端和后面的负载断开如果 VCC 和 GND 之间阻值恢复正常那就是负载侧问题如果还是低阻那就是 LDO 本身挂了。还有一种情况是 LDO 输出端接的电容在高压下漏电这个问题放到后面电容章节专门讲。另外提醒一下STM32H562 内部是有电压调节器的它的 VDD 供电正常不代表内核供电正常。如果内部调节器外接的电容VCAP 引脚有问题或者内部调节器因为过热保护可能导致整个芯片电流异常最终看起来像 VCC-GND 短路。这种问题要用示波器量 VCAP 引脚的电压来判断后面实操章节会说。2.2 电容失效尤其警惕钽电容的“短路式”故障电容失效是“运行后短路”的高发元凶这里面最值得点名批评的是钽电容。钽电容一旦击穿失效模式通常就是低阻甚至短路而且它和普通陶瓷电容不一样钽电容在过压、浪涌、反压下失效后很可能会变成永久性短路。如果你板子的电源输入端或者 3.3V 输出端用了钽电容一定要重点怀疑它。陶瓷电容MLCC一般不会短路但它也可能因为 PCB 弯曲、贴片时机械应力导致内部介质破裂极端情况下也会出现低阻。检查方法也不难在断电状态下用万用表逐个量电源轨上每个电容两端的阻值先把疑似短路的电容用烙铁拆下来再量 PCB 上的焊盘。如果拆下来之后焊盘之间阻值恢复正常那基本可以确定就是这个电容的问题。还要注意一个很多人忽略的点即使电容本身没问题如果它的耐压余量不够在系统运行一段时间后随着电源纹波、温度、电压波动的累积也可能发生击穿。选型的时候我一般建议电容耐压至少是实际工作电压的 1.5 到 2 倍比如 3.3V 电源轨上的钽电容至少选 10V 耐压的这样才比较稳。2.3 芯片内部闩锁效应一个特别容易误判的故障如果说电容是被冤枉最多的那闩锁效应Latch-up就是被漏掉最多的。STM32H562RET6 是 CMOS 工艺芯片内部存在寄生 PNPN 结构就像在 VCC 和 GND 之间藏了一个可控硅。正常情况下这个可控硅是关断的但如果某个 IO 引脚上出现了超过芯片供电范围的电压、瞬间浪涌或者有电流从 IO 倒灌进芯片内部就可能把这个寄生可控硅触发导通。一旦导通VCC 到 GND 之间就变成了一条低阻通路电流可以很大芯片会剧烈发热。闩锁效应的可怕之处在于它有时候是“软性”的——断电重新上电芯片又能正常工作但如果你在闩锁状态下持续供大电流芯片内部金属走线会被烧断变成永久性损坏。所以当你发现“运行几分钟后短路断电重上电又恢复正常”一定要先往闩锁方向想而不是直接换芯片。触发闩锁的常见场景包括IO 直接接感性负载比如继电器线圈没有加续流二极管调试器下载线太长在热插拔时产生了毛刺电压电源上电时序不对IO 先于 VDD 被外部拉高。排查时重点看有没有哪个 IO 被接到了外部电压高于 VDD 的地方或者有没有可能产生负压的地方。2.4 软件配置导致的持续过流别忽略代码的“锅”硬件排查了一轮都没问题没准就是代码把事情搞出来的。我看过不少案例MCU 本身质量没问题但 GPIO 配置错了把某个输出引脚配成了推挽输出而这个引脚外部又被拉到了固定电平相当于引脚内部 PMOS 和外部负载直接打架形成持续的短路电流。这种电流通常不会瞬间烧毁芯片但会持续发热几分钟后温度累积到一定程度芯片内部或者 PCB 就开始出问题表面上看就是 VCC-GND 低阻。类似的还有一个高频翻车点时钟配置。STM32H562 的主频可以跑到 250MHz如果外部晶振没起振代码却配置成从 HSE 倍频到很高的频率芯片内部时钟电路会处于异常状态功耗也会异常偏高表现为电源电流持续偏大。另外如果开启了内部 Flash 的擦写操作、ADC 的采样保持电路、DAC 输出驱动这些外设的功耗都不小如果同时在低功耗和高性能模式之间反复横跳也可能触发保护或者异常。所以我建议排查时做一次“最小固件测试”只初始化时钟、延时函数和一颗 LED跑一个最简单的闪烁程序看故障是否复现。如果最小系统下没问题再逐渐往里面加外设代码二分定位到是哪个外设初始化或者哪个操作触发了问题。这个方法虽然土但真的比对着代码逐行看要快得多。3. 实操排查流程从仪表到接线的一次清理3.1 仪表准备与防烧板接线正式动手查之前先把工具准备好。我一般会用到这几样东西一台可调限流电源、一块万用表、一台示波器、一个热成像仪没有的话用酒精棉球也行、一把热风枪和一把烙铁。可调电源是这套流程里最重要的设备。排查“运行后短路”时千万不要直接上稳压电源不管电流而是先把电流限制设定在一个安全值。比如你的板子正常工作时电流是 100mA那限流可以先设 200mA电压设到 3.3V然后上电观察。如果短路发生在运行过程中限流电源会把输出拉低电流被限制在设定值不会烧毁更多器件这时候再去摸温度能很快定位到发热点。这个方法屡试不爽。如果你用的是那种老式的、没有限流功能的实验室电源那我强烈建议先串一个功率电阻把最大短路电流限制在几百毫安以内。虽然电压会被拉低但至少不会让故障扩散。排查短路这种事情最忌讳的就是拿一个能输出几十安培的电源直接怼上去那根本不是在排查故障是在制造更大的故障。3.2 热成像/触感定位热点最直接的物理证据把板子通电用限流电源把电流限制在安全范围内然后用热成像仪观察整块板的温度分布。运行几分钟后短路的那块板子异常发热点通常非常明显。如果你手头没有热成像仪用手的背面去靠近每个元器件感受温度差异也是可行的——不过要小心别烫伤尤其芯片和电源器件可能已经超过 60 度。热成像的重点观察对象包括STM32H562RET6 芯片本体、电源芯片、钽电容、所有看起来尺寸较小的贴片电容以及 PCB 上的某些过孔或走线。如果你看到某个钽电容比其他地方明显热基本就是它出问题了。如果芯片本体热得离谱而外部电源和电容都正常那问题大概率在芯片内部可能是闩锁也可能是内核供电异常。有个细节要注意热成像看到的是“现在热的地方”但故障可能已经导致了某些元件短路你看到的热点实际上是“短路电流流经的地方”。比如 VCC 和 GND 之间短路了电流会在整条低阻路径上流动发热最集中的点往往就是故障点本身但也有可能是布线最窄的那段铜皮。所以定位到热点之后还要断电后用万用表确认两边夹击才能确定最终责任方。3.3 ST-Link V2 20pin 座子的接线陷阱烧录环节也能埋雷这里插一个和 ST-Link 有关的细节因为排查这类问题时调试器接线本身也经常是罪魁祸首。ST-Link V2 的 20pin 座子在市面上非常常见但很多板子上的丝印和定义并不统一接错线的概率远比你想的高。以最常见的 ST-Link V2 20pin 座子为例1 脚通常是 VTref目标板参考电压2 脚是 SWDIOTMS3 脚是 GND4 脚是 SWCLKTCK。这里特别容易踩坑的是 VTref它只是用来检测目标板电压的参考输入不是用来给目标板供电的电源输出。如果你把 VTref 直接接在外部 3.3V 上而目标板本身也供电了两个电源就有可能在调试口上对冲轻则导致 SWD 通信不稳定重则让目标板的 3.3V 轨被倒灌引发异常电流甚至短路。正确接法是这样的SWDIO 接 SWDIOSWCLK 接 SWCLKGND 接 GNDVTref 接目标板的 3.3V这样调试器能读到目标板的工作电压。只有当你的目标板完全没有独立供电、希望通过调试器供电时才把 20pin 座子上的 3.3V 输出脚接给目标板。千万别搞混。我之前就见过一个案例整个板子运行几分钟后电流异常查到最后发现是 ST-Link 的某个 NC空脚被接到了 GND导致调试口产生了额外的地回路干扰了 MCU 的复位电路让芯片反复复位、反复进入异常状态最终表现为电流飙升。如果你发现烧录时 SWD 连接不稳定或者板子插上调试器后电流明显变大先把调试器拔掉只靠外部电源给板子供电然后观察故障是否复现。如果拔掉调试器后故障消失那问题基本就在调试器接线或者调试器的供电设置上而不是板子本身。3.4 用 VCAP 引脚监控内核供电判断芯片内部状态的关键前面提到过 STM32H562 内部有电压调节器它的输出引脚通常标注为 VCAP需要外接一颗电容。这颗电容如果容值不对、ESR 过大或者虚焊会直接影响内核供电的稳定性极端情况下会让内部 LDO 进入异常状态电流异常增大从外部看就像 VCC-GND 短路。排查时可以用示波器探头勾在 VCAP 引脚上观察它的电压波形。STM32H562 的内核电压一般在 1.2V 左右如果你量到 VCAP 电压在正常运行时出现明显跌落、纹波很大、或者干脆为零那就要重点查这颗外接电容是否正常。另外VCAP 电容的位置也有讲究它必须尽可能靠近 VCAP 引脚走线尽量短而且要使用低 ESR 的陶瓷电容。如果这个电容离引脚太远走线电感会导致高频纹波变大同样可能引发内部稳压异常。不过要提醒一句在运行几分钟后已经出现短路的板子上测量 VCAP 可能会有风险因为此时芯片可能已经处于异常发热状态。所以我一般是在“故障即将出现但还没出现”的时间窗口去测或者用限流电源把电流限制住再快速测量。如果板子已经完全短路先把电路断开用万用表正向和反向量 VCAP 对 GND 的阻抗如果发现 VCAP 对地已经接近短路那内部调节器大概率已经被击穿这颗芯片基本可以宣告报废了。4. 回到设计源头PCB 版图上那些容易被忽略的坑4.1 PGND 与 GND 到底该不该连别被“单点接地”教条害了很多人在用 Altium Designer 画板的时候喜欢把模拟地、数字地、功率地分开铺铜最后在某一个点汇合也就是所谓的“单点接地”。但我在排查中发现这个做法在低速、低功耗板子上是没问题的可一旦你的板子上有开关电源、无线模块、电机驱动这类高频大电流电路盲目分割地平面反而会带来大麻烦。原因在于所有信号最终都要通过地平面回流如果你把地平面切出了很多孤岛和细脖子回流电流就只能绕路回流路径面积变大不仅产生地弹噪声还会让高频信号辐射增强甚至把噪声耦合到 MCU 的复位引脚、时钟引脚上导致系统稳定性问题。我之前处理过一块板子就是 PGND 和 GND 在 AD 里分成了两个网络中间只靠一个小焊盘和一根走线连接结果 MCU 一运行到某个外设开启的瞬间地平面电压发生跳变MCU 直接复位反复几次后电源轨就出了异常。我的建议是如果板子规模不大、工作频率不超过几十 MHz而且没有高精度模拟采集需求就干脆把 PGND、AGND、GND 全部整块铺铜统一成一个地网络然后在 MCU 下方或者其他汇流处多打过孔。这样反而比拘泥于“单点接地”更稳。如果确实需要把模拟地和数字地分开那也要保证信号跨分割处必须有完整的地回路不能出现信号线在分割缝上方穿越的情况。在 AD 里你可以跑一遍 DRC重点检查有没有未连接的电源网络、孤立铜箔和跨越地分割的信号走线。4.2 地回流路径与去耦电容位置决定成败的细节排查完地平面问题后我们再来看一个很多人容易忽视的点去耦电容的放置位置。STM32H562RET6 在运行过程中内部电路开关会产生高频电流需求这些瞬态电流需要由靠近电源引脚的本地去耦电容来提供。如果去耦电容离引脚太远中间又隔着过孔和长走线瞬态电流就会从远处流过来在电源网络上产生电压跌落严重的还会引起芯片内部电路误动作功耗异常最终表现为发热和电源轨问题。关于去耦电容的摆放我总结了一个简单标准每对 VDD 和 VSS 引脚旁边都必须有一个 100nF 的陶瓷电容这个电容到对应引脚的距离控制在 3mm 以内走线要先从引脚引到电容再连到过孔而不是先打过孔再引到电容。换句话说电容应该“骑”在电源引脚和过孔之间这样高频回流路径最短。另外在电源输入口可以放一颗 4.7µF 或 10µF 的大容量电容用于吸收低频浪涌但大容量电容不能替代引脚旁的 100nF 小电容因为大电容自身 ESL 高高频响应差。还有一个我很想强调的细节PCB 上 VCC 和 GND 之间的间距。如果两层电源和地平面之间的介质很薄而且电源平面和地平面之间有大面积重叠那在高频开关状态下两层板之间会产生明显的寄生电容耦合。这不是坏事反而是好事它可以提供高频去耦。但一旦介质层有杂质、气泡、或者钻孔毛刺运行一段时间后这里就可能成为漏电通道最终表现为电源对地电阻降低。这种情况在多层板厂生产工艺不稳定时尤其容易遇到。解决办法是多层板要选靠谱的板厂拿到板子后先量一下电源层和地层之间的绝缘电阻不要直接上电。4.3 DRC 检查与敷铜孤岛低成本高回报的设计自检在 AD 里画完板子不要急着发出去打样先认认真真跑一遍 DRC设计规则检查。我见过很多“运行后短路”的板子其实在 DRC 阶段就能发现端倪比如两个不同网络的焊盘之间有 1mil 的间距违规或者电源网络出现了没有连通的孤岛铜箔或者 VCC 过孔和 GND 铜箔之间的距离小于板厂的制造能力。这些看起来是“小问题”但在实际生产中板厂产线稍微偏差一点就可能造成微小的金属毛刺在运行一段时间后形成短路。敷铜孤岛这个问题也值得单独说说。在 AD 里铺铜的时候如果某个区域的铜箔只和单个过孔连接而且这个过孔又恰好是 VCC 网络那么这块铜箔就相当于一个悬浮的天线。在运行时它可能会和相邻的 GND 铜箔产生寄生电容耦合如果中间有污染物或者水汽就会形成漏电通道。排查时可以在 AD 里选中铜箔看看它的连接点数量如果发现孤立铜箔要么补过孔要么把它删掉。这个操作成本极低但能省下后面大量的排查时间。另外一个非常实用的建议拿到 PCB 后用带灯放大镜或者显微镜检查一下 STM32H562RET6 附近的焊接情况。LQFP64 封装引脚间距只有 0.5mm手焊或者回流焊过程中很容易出现相邻引脚间残留焊料形成微小桥接。这种桥接在上电瞬间可能看不到问题因为蜡状的焊料和助焊剂残留导电性不强但运行几分钟后随着温度升高残留物膨胀、导电性上升就可能形成明显的 VCC-GND 低阻。用酒精彻底清洗引脚区域再热风吹干往往能解决不少“玄学”故障。5. 实战经验合集常见问题速查与排查心法5.1 典型故障原因速查表我把这几年遇到的“STM32 运行后 VCC-GND 短路”类问题整理成了一张速查表排查时可以照着顺序来效率会高很多。注意这只是一个起点真正的故障可能不止一个原因也可能是多个因素叠加造成的。故障特征最大嫌疑对象快速验证方法电流逐渐上升几分钟后跳保护LDO/电源芯片过热限流上电热成像看电源芯片温度短路消失断电重上电又正常闩锁效应 / 软件过流断电复测 IO 口检查是否有高于 VDD 的电压钽电容表面温度异常高钽电容击穿拆下电容量两端阻值上电正常跑外设程序才出问题GPIO 配置冲突 / 外设过流最小固件测试逐个初始化外设插着调试器才出问题ST-Link 接线或供电设置拔掉调试器外部供电测试芯片表面烫短路线路在 VCAP 附近内部 LDO / 内核供电异常断电量 VCAP 对地阻值整板发热无单个元件异常PCB 内层漏电 / 多层板工艺问题量电源层对地绝缘电阻检查 DRC这里特别说明一下“断电重上电又正常”这种情况很多人看到板子重新上电能跑就以为没事继续量产。但恰恰是这种情况最容易批量坑人——它会在产线测试时全部通过到了用户现场跑一段时间就出问题。我建议碰到这类“软故障”一定要追查到底不要因为能够复现就简单更换芯片应付了事。5.2 一次真实的现场排查记录从 3.3V 对地 2Ω 到定位钽电容讲一个真实的排查案例帮助你把前面的方法串起来。一个客户的板子用的是 STM32H562RET6反馈说板子运行四五分钟后 VCC 和 GND 之间短路万用表量出来 2Ω 左右。客户已经换了三颗芯片问题依旧怀疑是芯片本身批次问题。我到现场后没有急着拆芯片而是先做了三件事第一把板子断电等电容放完电用电阻档重新量 VCC 和 GND确认 2Ω 低阻是真实的第二把可调电源限流设到 200mA上电用手背快速扫了一遍板子上的元件温度第三用热成像仪确认发热点。结果发现VCC 对 GND 的 2Ω 低阻其实是某个 DCDC 输出端并接的钽电容被击穿了表面温度明显高于其他元件。正常路径是MCU 运行几分钟后DCDC 输出电流增大钽电容因为耐压余量不足用了 6.3V 的电容工作在 3.3V 输出上在持续高压和纹波冲击下被击穿变成低阻通路。一旦击穿整条 3.3V 电源轨都被拉低MCU 当然无法工作量起来就是 VCC-GND 短路。把钽电容换成 10V 耐压的之后板子连续跑了 48 小时再没出现短路问题。这个案例最值得借鉴的并不是“换电容”本身而是排查过程先验证短路真实性再用限流和热成像缩小范围最后才动烙铁。如果一上来就拆 MCU换个芯片上去大概率还是同样的故障白白浪费两颗芯片和半天时间。5.3 防止复发的设计侧建议把排查经验反馈回设计解决完眼前的短路最后一步是把教训写进设计规范防止下一次踩同一个坑。我自己的做法是列一张 checklist画板之前逐项过一遍电源输入端的所有电解电容/钽电容耐压至少降额 50%并且确认电容的工作温度范围覆盖实际环境温度每个 MCU 电源引脚旁必放 100nF 陶瓷电容位置严格贴近引脚过孔布局遵循“引脚→电容→过孔”的顺序VCC 和 GND 的铜箔间距、过孔内径、钻孔到铜箔的距离都要在 DRC 里设置为板厂能力的 1.5 倍以上PCB 打样回来后先量一遍各电源轨对地的绝缘电阻再上电。绝缘电阻应该在 MΩ 级别如果只有 KΩ 级先不要上电查清楚再说固件里加上关键外设的功耗监控或者状态上报至少保证故障发生时能快速定位到代码执行位置如果涉及外部调试器明确标注 ST-Link 的接线定义尤其是 VTref 和 3.3V 输出这两个容易混淆的脚。写在最后的排查心得这类“运行几分钟后短路”的故障真正考验的是排查思路而不是焊接和替换的手速。我见过太多工程师拿到板子第一反应就是拆芯片结果换完芯片故障原模原样最后才发现是旁边一个不起眼的电容或者一根接错线的调试器搞的鬼。排查这种问题我的体会是先电源再外围再芯片先软故障再硬损伤先最小系统再完整功能。最后再分享一个小技巧如果故障能稳定复现就不要急着“修”先想尽办法把故障复现的过程固定下来。每次复现时记录电流波形、芯片温度、关键引脚电平这些数据比任何工具都值钱。等数据积累到一定程度你会惊奇地发现绝大多数所谓的“玄学短路”背后都有明确到可以一口气讲清楚的物理原因。
返回列表