
0 1 问题背景 客户反馈使用NUCLEO_STM32U575进行评估时,发现板子烧录完程序后,能看到指示程序运行的LED灯正常点亮,但是程序跑不起来。仔细观察LED指示灯,并不是常亮而是出现周期性的闪烁。擦除固件后,再次测量,发现MCU在空片状态下,还是周期性的复位。客户将板子寄到ST分析。 0 2 问题分析 测试使用的工具版本:
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功能 0 3 小结 芯片无固件周期性复位问题由Option bytes中IWDG被意外使能引起。 |
经验分享 | 一个 STM32U5 SBSFU SecureFault 问题定位与分析
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
兔哥的最强U5图显【000】——U5G9最小系统绘制
经验分享 | STM32U5 ADC+DMA配置演示
STM32U5低功耗测试
STM32怎么选型
内存配置的艺术:STM32为嵌入式系统高端UI优化RAM和闪存的三大策略
【STM32U545】实现CAN数据收发
【我的STM32U5 项目秀】+04-MPU6050在STM32U5上的移植
实战经验 | 基于 STM32U5 创建 USBx_CustomHID 通信