STM32U5周期性异常复位问题分析

01、问题背景

客户反馈使用NUCLEO_STM32U575进行评估时,发现板子烧录完程序后,能看到指示程序运行的LED灯正常点亮,但是程序跑不起来。仔细观察LED指示灯,并不是常亮而是出现周期性的闪烁。擦除固件后,再次测量,发现MCU在空片状态下,还是周期性的复位。客户将板子寄到ST分析。

02、问题分析

测试使用的工具版本:

  • STM32CubeMX Version : 6.12.0

  • STM32CubeProgrammer Version :2.18.0

2.1. 硬件原理图及接线检查

GPIO部分的原理图如下:

1.png

▲ 图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.png

▲ 图2. PC7波形(红色指示VDD,绿色指示PC7波形)

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

3.png

▲ 图3. 红色指示VDD,绿色指示PC7,

蓝色指示NRST管脚

将内部烧录的固件全片擦除后,测试波形如下:

4.png

▲ 图4. 红色指示VDD,绿色指示PC7,

蓝色指示NRST管脚

MCU在没有任何固件的情况下出现周期性的复位,和客户描述的现象一致。

2.3. 分析异常

事出反常必有妖,既然是复位导致的问题,我们下一步需要找出复位源。

对于STM32,通常可以通过查看RCC_CSR寄存器来判断复位源。使用STM32CubeProgrammer在hot plug的状态下连接板子。读取RCC_CSR的寄存器状态。如下图:

5.png

▲ 图5. RCC_CSR寄存器

比较奇怪的是IWDGRSTF这个位置位了,也就是说发生了看门狗复位。

6.png

▲ 图6. RCC_CSR@IWDGRSTF

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

7.png

▲ 图7. U5的IWDG的功能特点

2.4. 彩蛋

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

8.png

▲ 图8. 一键恢复OB功能

03、小结

芯片无固件周期性复位问题由Option bytes中IWDG被意外使能引起。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。