01问题背景
客户反馈使用NUCLEO_STM32U575进行评估时,发现板子烧录完程序后,能看到指示程序运行的LED灯正常点亮,但是程序跑不起来。仔细观察LED指示灯,并不是常亮而是出现周期性的闪烁。擦除固件后,再次测量,发现MCU在空片状态下,还是周期性的复位。客户将板子寄到ST分析。
02问题分析
测试使用的工具版本: 2.1. 硬件原理图及接线检查
GPIO部分的原理图如下:▲ 图1. NUCLEO-U575原理图 2.2. 烧录固件测试
通过STM32cubeMX生成基本的代码框架,添加测试代码如下:/* USER CODE BEGIN 2 *//*Configure GPIO pin Output Level */HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin,GPIO_PIN_SET);/* USER CODE END 2 */重新烧录控制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功能
03小结
芯片无固件周期性复位问题由Option bytes中IWDG被意外使能引起。▼▼▼
点击按钮下载《STM32U5周期性异常复位问题分析》原文档。点击下载
|