
1. 引言 本文探讨一个奇怪的 MCU NRST 管脚异常复位现象。 1 h5 R7 k# c M* U2 J 2. 复位问题及排查 这个问题是客户对开发的平台做 EMS 浪涌测试的时候发生的, 平台上使用了一个STM32G474 RCT6 MCU 。在某个等级的 EMS 测试中, 客户发现 MCU 有时候会异常复位而影响平台的稳定工作。 d0 R& H! ]9 [4 e3 Y- f( T" D* U 2.1. MCU 异常复位问题的通常解决思路 我们知道, 导致 MCU 异常复位的原因有很多, 比如外部复位电路被干扰, MCU 电源的异常跌落, 看门狗不能正常喂狗导致的复位等等。 STM32 MCU 的复位标志位寄存器可以帮助我们发现导致异常复位的线索。 3 \9 e6 ?1 P0 C6 e 复位标志位的相关信息可以在 STM32 MCU 的 Reference Manual 中找到。在 RCC 章节的 RCC_CSR 寄存器中,我们可以看到: 5 e$ H: G! E/ M. Y ![]() 图中红色围住的部分就是复位标志相关的寄存器。 4 Z& W; f/ x5 c LPWRRSTF:低功耗模式复位标志位, 被置 1 表示发生了非法的 STOP, SLEEP 或SHUTDOWN 等低功耗模式进入。: i% O, t% B- @' E' D3 |3 z( X WWDGRSTF: 窗口看门狗复位标志。6 m8 a& F, U7 W1 s IWDGRSTF: 独立看门狗复位标志。 SFTRWTF: 软件复位标志位。9 K8 f0 s! I6 J; s2 E) ^0 j5 \ J BORRSTF: 欠压复位标志位。 * ], Y9 C2 o2 j: t3 { PINRSTF: 从 NRST 引脚输入产生的复位的标志位。 , _4 w* a3 v- y) n/ W" ?5 n8 v OBLRSTF: 加载选项字节产生的复位的标志位。 以上的标志位被置 1 表示发生了相关的复位。 这些被置 1 的标志位可以通过向 RMVF 位写 1 清除。7 T& ]+ j6 v! ]8 N9 s/ r 在一次正常的 MCU 上电过程中, 电压的上升和 PDR 电路的工作必然会导致BORRSTF 和 PINRSTF 被置位 1, 因此在做 EMS 实验前, 需要先通过向 RMVF 写 1将所有复位标志位清除, 然后观察在 EMS 测试导致的复位后, 哪些复位标志位被置位了。 例如,当观察到 BORRSTF 被置 1 表示发生了欠压复位, 需要重点检查 MCU 供电电路包括滤波/退耦电容的设计和布局等等。 . y: X. m2 W2 q: f' S8 j PINRSTF 位被置 1 表示 MCU 的 NRST 管脚接收到了能够触发复位的异常低电平,需要检查 NRST 的外围电路是如何被干扰的, 或设法增加滤波电路滤除干扰。: F9 f# H1 |7 `3 y$ F WWDGRSTF 或 IWDGRSTF 被置 1 表示喂狗不正常导致了复位,一般是由程序在EMS 测试中运行不正常进入死循环导致,MCU 被 EMS 干扰影响的途径相对难以判断,可能是地或某个/些 GPIO 管脚被 EMS 干扰侵入而影响了 MCU 的正常运行。 通过观察异常复位发生后的复位标志位,可以使我们避免解决问题时在不相关的电路上浪费时间, 比如如果只有 BORRSTF 被置位, 我们需要重点关注供电电路, 而不需要在复位管脚相关电路做无用的调整。 . N/ O) i; Z& z$ F5 x4 L& C 2.2. 在客户开发平台上的排查 6 _, \# t/ i" u8 M 根据上面 2.1 节描述的思路,我们在客户的平台上排查发生异常复位的原因, 通过检查 STM32G4 的复位标志位,发现复位发生后 PINRSTF 被置 1 了。 这似乎是个简单的 NRST 复位管脚被干扰的问题。 j$ }. W; F0 D5 g5 T | d3 B 但是观察客户的设计, NRST 管脚并没有外接比较长走线的外部电路, 只是在管脚放置了一颗 0.1UF 的电容。按常理这样的电路一般不会将干扰引入 NRST 管脚。 4 M- `+ Q: z' s* w% I* j# D! B ![]() . l8 X2 ]3 ?0 G3 P 为了避免是 0.1UF 电容将地噪声引入管脚, 拆除这颗电容后再做浪涌实验, 结果PINRSTF 还是被置位。STM32G4 有一个新功能, NRST 管脚可以被复用为一个 GPIO PG10, 当这个管脚被定义为 PG10 后, 加在这个管脚的低电平干扰将不会再导致 MCU 复位。但是奇怪的事情发生了,STM32G474 第 7 脚由 NRST 改定义成 PG10 后(Option byte 中修改),浪涌实验中依然发生了 PINRSTF 被置位的现象。 这时候看来不能只局限于 NRST 管脚的探查了,干扰是不是从其它 GPIO 窜入 MCU 并进一步通过耦合影响了复位电路的工作呢? ' c+ C; |/ D2 ^, t+ \. K" f 在 LQFP 的封装中,由于 MCU 内部并行的较长的 bonding 线的存在, 相邻的 GPIO之间 最可能产生耦合干扰, 所以我们从第 7 脚相邻的第 6 和 8 脚开始排查。分别将它们的外部信号断开。 * Y: F* S: e8 ]9 k3 }; U+ ? 通过排查, 第 8 脚信号断开没有解决问题。 ( H$ f2 ]+ R% K; Z 但是当将第 6 脚相连的晶振和电容断开,并改用内部 HSI 时钟源后, 异常复位问题消失了, PINRSTF 不再被置位。看来干扰是从第 7 脚进入的。观察客户的 PCB 设计, 发现晶振的 CLOAD 电容接地并不是直接接地平面, 而是经过一根细长的地走线后才由一个过孔连接到地平面,很明显这根细长的地走线在浪涌测试中作为天线接收了干扰并经电容传递到了 MCU 内部。: v3 `% k& Q9 p, i* Z0 w6 ^# P 2 K8 p/ c, ?3 h . _4 Q- k1 s2 g) G0 ~ 完整版请查看:附件 ![]() |
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南
ST 微控制器电磁兼容性 (EMC) 设计指南