***关键字:*Option Bytes, IDWG
1. 问题背景
客户反馈使用 NUCLEO_STM32U575 进行评估时,发现板子烧录完程序后,能看到指示程序运行的 LED 灯正常点亮,但是程序跑不起来。仔细观察 LED 指示灯,并不是常亮而是出现周期性的闪烁。擦除固件后,再次测量,发现 MCU 在空片状态下,还是周期性的复位。客户将板子寄到 ST 分析。
2. 问题分析
测试使用的工具版本:
STM32CubeMXVersion : 6.12.0
STM32CubeProgrammer Version :2.18.0
2.1. 硬件原理图及接线检查
GPIO 部分的原理图如下:

图1. NUCLEO-U575 原理图
2.2. 烧录固件测试
通过 STM32cubeMX 生成基本的代码框架,添加测试代码如下:

重新烧录控制 PC7 输出高电平的固件后,测量 PC7 波形如下:

图2. PC7 波形(红色指示 VDD,绿色指示 PC7 波形)
PC7 应该恒为高电平,不应该出现周期性的脉冲波形。
随着分析的推进,GPIO 似乎拉到 3V3 后,会周期性的拉低。监控 NRST 引脚后发现 MCU 出现周期性的复位。测试波形如下:

图3. 红色指示 VDD,绿色指示 PC7,蓝色指示 NRST 管脚
将内部烧录的固件全片擦除后,测试波形如下:

图4. 红色指示 VDD,绿色指示 PC7,蓝色指示 NRST 管脚
MCU 在没有任何固件的情况下出现周期性的复位,和客户描述的现象一致。
2.3. 分析异常
事出反常必有妖,既然是复位导致的问题,我们下一步需要找出复位源。
对于 STM32,通常可以通过查看 RCC_CSR 寄存器来判断复位源。使用STM32CubeProgrammer 在 hot plug 的状态下连接板子。读取 RCC_CSR 的寄存器状态。如下图:

图5. RCC_CSR 寄存器
比较奇怪的是 IWDGRSTF 这个位置位了,也就是说发生了看门狗复位。

图6. RCC_CSR @ IWDGRSTF
进一步分析发现,MCU Option bytes 中配置了 IWDG 硬件模式。使用
STM32CubeProgrammer 读取 option bytes 的状态,此时的 IWDG_SW 并未置 1,也就
是说使能了 IWDG,由于没有喂狗操作,进而引发 IWDG 复位。

图7. U5 的 IWDG 的功能特点
2.4. 彩蛋
新版本的 STM32CubeProgrammer 增加了一项比较有用的功能。那就是可以一键将
Option bytes 恢复为出厂设置,具体操作如下图:

图8. 一键恢复 OB 功能
3. 小结
芯片无固件周期性复位问题由 Option bytes 中 IWDG 被意外使能引起。