板子死机后按复位没用,断电才恢复:别只查软件,先看“电到底有没有真的掉干净”
- 燃界驿讯
- 2026-09-20
- 4010
凡亿硬件研发
板子死机后按复位没用,断电才恢复:别只查软件,先看“电到底有没有真的掉干净”

封面素材:TI E2E,多电源轨上电时序实测波形
有一类硬件故障很折磨人:
设备跑几个小时甚至几天后突然死机。
MCU不响应,通信断掉,程序像是彻底卡住了。
按RESET没用,软件复位也没用。
但只要把整机电源断掉,再重新上电,系统又恢复正常。
遇到这种现象,很多团队第一反应都是:
“肯定是软件跑飞了。”
软件当然要查,但如果复位无效、完整掉电却有效,硬件工程师应该立刻多问一句:
RESET到底复位了什么?又有哪些电路根本没有被RESET?
更关键的是:
你以为已经断电了,芯片的电源轨真的掉到0V了吗?
一、RESET不是“缩小版断电”
这是定位这类问题最重要的一点。
MCU的外部RESET、看门狗复位、软件复位,通常只会让芯片内部特定逻辑回到复位状态。
但整块板上还有很多东西不一定跟着一起复位:
PMIC、电源监控、FPGA/CPLD、PHY、外部Flash、接口收发器、传感器、桥接芯片以及其他独立电源域。
某个外设如果已经进入异常状态,单独复位CPU并不一定能把它拉回来。
甚至MCU自身,如果供电曾经落入一个“低于正常工作电压、但又没有低到触发完整POR”的区域,也可能出现不完整复位。
所以:
RESET能恢复的软件故障,和必须真正掉电才能恢复的电源/状态机故障,要分开看。
二、最容易被忽略的问题:I/O正在偷偷给芯片“反向供电”
图1:NXP 社区中的 POR、核心电压与控制信号上电时序实测。
一个很典型的现场是:
你把MCU主电源关掉,万用表却还能量到VDD上有0.5V、0.8V,甚至更高。
这时不要以为只是电容没放完。
很可能是另一个仍然带电的器件,通过GPIO、UART、SPI、I²C或者控制信号,经过芯片内部的ESD保护结构,把电流灌回了VDD。
Microchip的硬件调试资料就明确把这种现象称为 Power through I/O:电源关闭以后,外部I/O仍处于高电平,可能通过ESD二极管给MCU电源轨供电。
这会带来一个很麻烦的结果:
你做了“断电动作”,但芯片内部实际上没有完成一次干净的掉电。
POR没有重新建立,内部模拟模块、I/O状态甚至部分外围状态可能停留在一个不可预期区间。
于是就出现:
短按电源不行,等几秒再上电却好了。
本质上不是“等芯片冷静一下”,而是终于把残余电压放到了真正的复位区间以下。
三、第二个高发点:电压掉下来了,却没掉到POR阈值以下

图2:PMIC 上电异常实测,多路 Enable 与输出轨需要一起看,而不是只盯 CPU。
很多芯片同时存在POR、BOR/LVD、外部RESET等不同复位机制。
它们的触发阈值并不一样。
如果系统有大电容、超级电容、掉电很慢的DC/DC,或者多个电源域互相拖着,VDD可能长时间停在一个尴尬电压:
已经低到CPU不能可靠运行,却又没有低到重新触发一次完整Power-On Reset。
NXP在相关技术讨论里就给出过类似案例:电源短暂移除后,电压因为电容没有彻底放完,重新上电时系统不能正确启动;启用低压检测/棕断复位后,才能把MCU保持在复位状态直到电压重新进入可靠工作区。
所以现场看到“断电5秒就好,快速重启不行”,一定要抓完整的掉电—上电波形。
不要只看上电。
四、第三个问题:真正锁住的可能不是MCU,而是外部器件
比如:
PMIC进入保护锁存;
FPGA电源时序没有重新满足;
PHY状态机异常;
某个传感器或接口芯片需要完整POR才能恢复;
电源Enable保持在错误状态;
某一路电源因为反灌没有完全关闭。
这时按MCU RESET当然没有用。
因为真正坏掉的“状态”根本不在MCU里面。
一个很实用的判断方法是:
死机以后,RESET MCU,同时观察外部电源轨、PMIC PGOOD、关键外设RESET和Enable有没有发生任何变化。
如果这些信号完全没动,那你只是重启了CPU,并没有重启系统。
五、现场怎么测?先别急着接JTAG
图3:典型多电源轨 + RESET 时序实测。复位释放时刻必须和电源稳定状态对应。
遇到“复位无效、掉电恢复”,建议先抓这几组波形。
第一组:主电源轨 + MCU VDD + RESET。
确认按RESET时电源有没有异常;真正断电时VDD最低掉到多少;重新上电时RESET是在什么时候释放的。
第二组:所有可能反灌的接口。
尤其看来自其他电源域的UART TX、SPI、GPIO控制线、USB相关信号、外部模块IO。
关掉MCU电源以后,如果某根IO仍然维持高电平,而MCU VDD又被“托”在一个非零电压,方向就很明确了。
第三组:PMIC PGOOD / EN / 核心电压。
很多复杂SoC、FPGA板卡,问题其实发生在电源状态机,而不是软件。
第四组:掉电时间。
用示波器单次触发,从关机一直抓到所有电源轨真正掉干净。
很多问题只有在这一段才看得到。
六、一个很有效的排查办法:逐个切断“外部活电源”
如果怀疑I/O反灌,不要一开始就大改PCB。
调试阶段可以逐个断开:
外接模块;
USB/UART连接;
调试器;
另一个常供电电源域;
外部上拉电源。
每断掉一项,就重新测试快速掉电重启。
如果拔掉某个接口以后,VDD终于能快速掉到0V附近,故障也消失,基本就找到路径了。
这个方法往往比盯着软件Log快得多。
七、设计阶段怎么避免“假断电”?
真正稳健的板卡,掉电路径也需要设计。
常见手段包括:
不同电源域之间使用带断电隔离能力的Buffer/Level Shifter;必要的IO串联限流;合理的下拉/放电电阻;用Load Switch控制电源域;使用电压监控/Reset Supervisor;保证PMIC和处理器RESET关系明确。
同时要在器件Datasheet里确认:
I/O在VDD=0时是否容忍外部电压;
是否允许Power-off Protection;
输入钳位电流最大值;
电源时序要求;
POR/BOR阈值;
RESET到底覆盖哪些内部模块。
这些往往比“RESET脚拉低多少毫秒”更重要。
最后一个工程判断
当一块板出现:
按RESET救不回来,但断电后能恢复。
不要只把它定义成“软件死机”。
先验证两件事:
系统是不是所有关键器件都被真正复位了?
掉电时,所有关键电源轨是不是真的掉到了能触发完整POR的范围?
很多所谓“必须拔电源才能好”的玄学故障,最后都会落到几个很具体的硬件问题上:
反向供电、棕断复位、电源时序、外设状态机或者PMIC锁存。
成熟的硬件调试,不只会看“怎么上电”,还要知道系统到底是怎么“彻底掉电”的。
声明:
本文由凡亿教育整理,转载请注明来源!
审核编辑 黄宇







