当前位置: 首页 > news >正文

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

关键字: 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 被意外使能引起。
 

http://www.dtcms.com/a/319717.html

相关文章:

  • 【MyQSL】库 表—基操
  • 性能优化——GPU的影响
  • [C++20]协程:语义、调度与异步 | Reactor 模式
  • Kafka原理--主题、分区、消费者的关系
  • windows内核研究(内存管理-线性地址的管理)
  • 【PHP 中的 `use` 关键字完全指南】
  • Linux图文理解进程
  • fiddler实用用法,抓包内容导入到apipos
  • 数据库管理系统:入门需要了解的内容
  • Modbus核心参数,调试工具,接线注意事项
  • Mongodb常用命令简介
  • C++线程库的学习
  • 从Centos 9 Stream 版本切换到 Rocky Linux 9
  • MongoDB数据存储界的瑞士军刀:cpolar内网穿透实验室第513号挑战
  • IDEA-Research推出的一系列检测、分割模型:从DINO(改进版DETR)、Grounding Dino、DINO-X到Grounded SAM2
  • 串联所有单词的子串-leetcode
  • 计算机基础·linux系统
  • Linux线程学习
  • pytorch学习笔记-最大池化maxpooling的使用、搭建多层网络并验证、sequential的使用
  • golang的面向对象编程,struct的使用
  • 2.8 逻辑符号
  • Linux怎么查看时区信息?(Linux时区)(tzselect)
  • Java中接口与抽象类
  • 处理失败: module ‘fitz‘ has no attribute ‘open‘
  • 传统防火墙与下一代防火墙
  • 华为 2025 校招目标院校
  • 【2025最新】在 macOS 上构建 Flutter iOS 应用
  • 嵌入式学习---在 Linux 下的 C 语言学习 Day10
  • 可执行文件的生成与加载执行
  • 超高车辆如何影响城市立交隧道安全?预警系统如何应对?