LAT1244
Local Application Tips
LAT1244 Rev 1.0 Feb. 2023
奇怪的 NRST 管脚异常复位问题
关键字:漏电流 ADC
1. 引言
本文探讨一个奇怪的 MCU NRST 管脚异常复位现象。
2. 复位问题及排查
这个问题是客户对开发的平台做 EMS 浪涌测试的时候发生的, 平台上使用了一个
STM32G474 RCT6 MCU 。在某个等级 EMS 测试中, 客户发现 MCU 有时候会异常复
位而影响平台的稳定工作。
2.1. MCU 异常复位问题的通常解决思路
我们知道, 导致 MCU 异常复位的原因有很多, 比如外部复位电路被干扰 MCU
源的异常跌落, 看门狗不能正常喂狗导致的复位等等。
STM32 MCU 的复位标志位寄存器可以帮助我们发现导致异常复位的线索。
复位标志位的相关信息可以在 STM32 MCU Reference Manual 中找到。 RCC
节的 RCC_CSR 寄存器中,我们可以看到:
图中红色围住的部分就是复位标志相关的寄存器
LPWRRSTF:低功耗模式复位标志位, 被置 1 表示发生了非法的 STOP, SLEEP
SHUTDOWN 等低功耗模式进入
WWDGRSTF: 窗口看门狗复位标志。
LAT1244
LAT1244 - Rev 1.0 page 2/5
IWDGRSTF: 独立看门狗复位标志
SFTRWTF: 软件复位标志位。
BORRSTF 压复位标志位。
PINRSTF: NRST 引脚输入产生的复位的标志位。
OBLRSTF 加载选项字节产生的复位的标志位
以上的标志位被置 1 表示发生了相关的复位。
这些被置 1 的标志位可以通过向 RMVF 位写 1 清除。
在一次正常的 MCU 上电过程中, 电压的上升和 PDR 电路的工作必然会导致
BORRSTF PINRSTF 被置位 1 因此在做 EMS 实验前 需要先通过 RMVF 1
将所有复位标志位清除 然后观察在 EMS 测试导致的复位后, 哪些复位标志位被置位
了。
例如,当观察到 BORRSTF 被置 1 表示发生了欠压复位, 需要重点检查 MCU 供电电
路包括滤波/退耦电容的设计和布局等等。
PINRSTF 位被置 1 表示 MCU NRST 管脚接收到了能够触发复位的异常低电平,
需要检查 NRST 的外围电路是如何被干扰的, 或设法增加滤波电路滤除干扰。
WWDGRSTF IWDGRSTF 被置 1 表示喂狗不正常导致了复位,一般是由程序在
EMS 测试中运行不正常进入死循环导致,MCU EMS 干扰影响的途径相对难以判断,
可能是地或某个/ GPIO 管脚被 EMS 干扰侵入而影响了 MCU 的正常运行。
通过观察异常复位发生后的复位标志位,可以使我们避免解决问题时在不相关的电路
上浪费时间, 比如如果只有 BORRSTF 被置位, 我们需要重点关注供电电路, 而不需要
在复位管脚相关电路做无用的调整
2.2. 在客户开发平台上的排查
根据上面 2.1 节描述的思路,我们在客户的平台上排查发生异常复位的原因, 通过检
STM32G4 的复位标志位,发现复位发生后 PINRSTF 被置 1 了。
这似乎是个简单的 NRST 复位管脚被干扰的问题。
但是观察客户的设计, NRST 管脚并没有外接比较长走线的外部电路, 只是在管脚放
置了一颗 0.1UF 的电容。按常理这样的电路一般不会将干扰引入 NRST 管脚。
为了避免是 0.1UF 电容将地噪声引入管脚, 拆除这颗电容后再做浪涌实验, 结果
PINRSTF 还是被置位。
STM32G4 有一个新功能, NRST 管脚可以被复用为一个 GPIO PG10 当这个管脚
被定义为 PG10 后, 加在这个管脚的低电平干扰将不会再导致 MCU 复位。但是奇怪的事