关键字: 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.pswp.cn/pingmian/92206.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92206.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92206.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RedisBloom使用

安装RedisBloom模块,从git获取对应的原码,make生成.so文件,挂载.so文件,启动redis docker run --name test-redis -v /iothub/test-redis/data:/data -v /iothub/test-redis/modules:/modules -p 6378:6379 -d redis:4.0.10 redis…

ADC、Flash、SPI、watchdog

ADCADC(Analog-to-Digital Converter), 即模拟信号 - 数字信号转换器在STM32F103C8T6中, 同样具有ADC功能.以我们的芯片为例, 也存在2个片上外设ADC, 即ADC1和ADC2, 这两个ADC片上外设都挂载在APB2总线上.我们的ADC片上外设, 是一种具有12位逐次逼近型ADC,ADC转换的本质是不断的…

冷库设备远程监控物联网+省电节能解决方案

随着生鲜电商、医药冷链、跨境物流等行业的爆发式增长,我国冷库容量激增,但传统冷库管理模式正面临严峻挑战。据统计,国内冷链运输损耗率高达12%-15%,其中因温度失控导致的货损占比超60%。在某医药企业冷库事故中,因制…

如何开发一个运行在windows系统服务器上的服务

第一步:vs2022创建一个windows服务项目第二步:从工具箱拖拽出一个timer第三步:按下图所示进入,开始编辑业务逻辑下面给个例子using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; …

本地组策略编辑器无法打开(gpedit.msc命令异常)

一、本地组策略编辑器打开方式1、直接搜索打开(1)在搜索栏中直接输入以下内容进行搜索本地组策略编辑器(2)搜索到后直接点击打开即可(但是一部分同志无法搜索到,搜索到的内容基本都是网页信息而非本地系统的…

kafka部署集群模式

Kafka部署(3.7) 生产环境推荐的kafka部署方式为operator方式部署,Strimzi是目前最主流的operator方案。集群数据量较小的话,可以采用NFS共享存储,数据量较大的话可使用local pv存储 部署operator operator部署方式为he…

C语言中级_动态内存分配、指针和常量、各种指针类型、指针和数组、函数指针

0、前言: 动态内存分配是一个重要概念,要和静态数组对比着学习;指针和数组搭配在一起,让指针理解的难度上了一个台阶,尤其是二维数组搭配指针,要获取数组的值,什么时候“取地址”,什…

单变量单步时序预测:CNN-GRU卷积神经网络结合门控循环单元

目录预测效果1. **CNN-GRU的基本原理**2. **应用场景**3. **模型结构与实现**4. **优势与挑战**5. **相关研究与实现**6. **未来发展方向**结论代码设计预测效果 CNN-GRU卷积神经网络结合门控循环单元是一种结合了卷积神经网络(CNN)和门控循环单元&#…

MonoFusion 与 Genie 3

卡内基梅隆大学的研究者发明了一种叫 MonoFusion 的新技术,它能用很少的普通相机(比如4个),就能拍出像电影特效一样细腻流畅的动态3D场景(4D重建),比如弹钢琴、修自行车这种复杂动作&#xff0c…

kubernets命令行创建Token并附加权限给dashboard控制台登录

1、创建登录token kubectl create token default -n graph-node-test dgjeojrgopejgeropjgpsdjgerjglsdjfsjogjeojgeorjgortlfhj4yu493460uwperg3wef;lsj2y3r934tnrhifrlfe9t4h5tlhobdrmlgw485tw4yp653ut9ogogjerolj4w9erjgotj3fgjletyj49yr20o359truyo5u6908430jt5grjsdtgj49…

什么是SpringBoot

题目详细答案Spring Boot 是由 Pivotal 团队提供的一个基于 Spring 框架的项目,它旨在简化 Spring 应用的开发和部署。Spring Boot 通过提供一系列的约定和开箱即用的功能,使得开发者可以更快地构建独立的、生产级的 Spring 应用程序,而无需进…

从零开始设计一个分布式KV存储:基于Raft的协程化实现

从零开始设计一个分布式KV存储:基于Raft的协程化实现 本文将以一个最小可运行的分布式KV系统为例,带你拆解如何用C、Raft算法和协程模型构建高可用的Key-Value存储。 一、为什么需要分布式KV? 单机KV(如Redis)存在单点…

虚拟机或docker的ubuntu无界面安装完成后镜像源设置

ubuntu系统源 在装好虚拟机或者docker镜像后,直接使用apt update && apt upgrade是无法完更新的。 此时系统中也没有vim工具,我们可以在清华源的网站中找到帮助文档。mirrors.tuna.tsinghua.edu.cn/help/ubuntu/为了避免冲突,我们使用…

串口通信02 温度传感DS18B20 01 day49

九:串口通信 通信:无线和有线 ​ 单工 半双工 全双工 并行:多个数据线 串行:一根数据线 同步:通信双方使用同一个时钟,SPI信息帧,有CLK引脚 异步:通信双方使用不同时钟,双…

【FreeRTOS 】任务通知

FreeRTOS 任务通知任务通知简介一 、发送通知1.1 xTaskNotify()1.2 xTaskNotifyFromISR()1.3 xTaskNotifyGive()1.4 xTaskNotifyAndQuery()1.5 xTaskNotifyAndQueryFromISR()二、接收通知2.1 ulTaskNotifyTake()2.2 xTaskNotifyWait()三、清除通知状态和值3.1 xTaskNotifyState…

Android视图状态以及重绘

一、视图状态(View States)1. 五种核心状态状态作用修改方法特点enabled视图是否响应交互setEnabled(boolean)禁用状态下不响应onTouch事件focused视图是否获得焦点requestFocus()需同时满足focusable和focusableInTouchModewindow_focused视图所在窗口是…

vue3接收SSE流数据进行实时渲染日志

后端使用的是 Spring Boot WebFlux(响应式编程框架),并且返回的是 Server-Sent Events (SSE) 流式数据,那么在 Vue3 中,需要使用 EventSource API 或 fetch 流式读取 来正确获取响应内容。方案 1:使用 Eve…

每日五个pyecharts可视化图表-bars(6)

探索pyecharts库中条形图的高级用法与定制技巧 在数据可视化中,条形图是最常用的图表类型之一,它能够清晰地展示不同类别之间的数量对比。今天,我们将继续学习如何使用pyecharts创建5种不同风格的条形图。pyecahts源码 图表1:带…

【C语言】文件操作全解析

文章目录一、为什么需要文件操作?二、认识文件:不止是磁盘上的存储2.1 程序文件2.2 数据文件2.3 文件名的构成三、文本文件与二进制文件:数据的两种形态3.1 存储方式差异3.2 实例对比:整数10000的存储3.3 二进制文件操作示例四、文…

C结构体的几种定义形式 + typedef结合使用的好处

struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下: struct tag { member-list member-list member-list ... } variable-…