奇怪的 NRST 管脚异常复位问题

1. 引言

本文探讨一个奇怪的 MCU NRST 管脚异常复位现象。

2. 复位问题及排查

这个问题是客户对开发的平台做 EMS 浪涌测试的时候发生的, 平台上使用了一个STM32G474 RCT6 MCU 。在某个等级的 EMS 测试中, 客户发现 MCU 有时候会异常复位而影响平台的稳定工作。

2.1. MCU 异常复位问题的通常解决思路

我们知道, 导致 MCU 异常复位的原因有很多, 比如外部复位电路被干扰, MCU 电源的异常跌落, 看门狗不能正常喂狗导致的复位等等。

STM32 MCU 的复位标志位寄存器可以帮助我们发现导致异常复位的线索。

复位标志位的相关信息可以在 STM32 MCU 的 Reference Manual 中找到。在 RCC 章节的 RCC_CSR 寄存器中,我们可以看到:
在这里插入图片描述

图中红色围住的部分就是复位标志相关的寄存器。

LPWRRSTF:低功耗模式复位标志位, 被置 1 表示发生了非法的 STOP, SLEEP 或SHUTDOWN 等低功耗模式进入。

  • WWDGRSTF: 窗口看门狗复位标志。
  • IWDGRSTF: 独立看门狗复位标志。
  • SFTRWTF: 软件复位标志位。
  • BORRSTF: 欠压复位标志位。
  • PINRSTF: 从 NRST 引脚输入产生的复位的标志位。
  • OBLRSTF: 加载选项字节产生的复位的标志位。

以上的标志位被置 1 表示发生了相关的复位。

这些被置 1 的标志位可以通过向 RMVF 位写 1 清除。

在一次正常的 MCU 上电过程中, 电压的上升和 PDR 电路的工作必然会导致BORRSTF 和 PINRSTF 被置位 1, 因此在做 EMS 实验前, 需要先通过向 RMVF 写 1将所有复位标志位清除, 然后观察在 EMS 测试导致的复位后, 哪些复位标志位被置位了。

例如,当观察到 BORRSTF 被置 1 表示发生了欠压复位, 需要重点检查 MCU 供电电路包括滤波/退耦电容的设计和布局等等。

PINRSTF 位被置 1 表示 MCU 的 NRST 管脚接收到了能够触发复位的异常低电平,需要检查 NRST 的外围电路是如何被干扰的, 或设法增加滤波电路滤除干扰。

WWDGRSTF 或 IWDGRSTF 被置 1 表示喂狗不正常导致了复位,一般是由程序在EMS 测试中运行不正常进入死循环导致,MCU 被 EMS 干扰影响的途径相对难以判断,可能是地或某个/些 GPIO 管脚被 EMS 干扰侵入而影响了 MCU 的正常运行。

通过观察异常复位发生后的复位标志位,可以使我们避免解决问题时在不相关的电路上浪费时间, 比如如果只有 BORRSTF 被置位, 我们需要重点关注供电电路, 而不需要在复位管脚相关电路做无用的调整。

2.2. 在客户开发平台上的排查

根据上面 2.1 节描述的思路,我们在客户的平台上排查发生异常复位的原因, 通过检查 STM32G4 的复位标志位,发现复位发生后 PINRSTF 被置 1 了。

这似乎是个简单的 NRST 复位管脚被干扰的问题。

但是观察客户的设计, NRST 管脚并没有外接比较长走线的外部电路, 只是在管脚放置了一颗 0.1UF 的电容。按常理这样的电路一般不会将干扰引入 NRST 管脚。
在这里插入图片描述

为了避免是 0.1UF 电容将地噪声引入管脚, 拆除这颗电容后再做浪涌实验, 结果PINRSTF 还是被置位。

STM32G4 有一个新功能, NRST 管脚可以被复用为一个 GPIO PG10, 当这个管脚被定义为 PG10 后, 加在这个管脚的低电平干扰将不会再导致 MCU 复位。但是奇怪的事情发生了,STM32G474 第 7 脚由 NRST 改定义成 PG10 后(Option byte 中修改),浪涌实验中依然发生了 PINRSTF 被置位的现象。

这时候看来不能只局限于 NRST 管脚的探查了,干扰是不是从其它 GPIO 窜入 MCU 并进一步通过耦合影响了复位电路的工作呢?

在 LQFP 的封装中,由于 MCU 内部并行的较长的 bonding 线的存在, 相邻的 GPIO之间 最可能产生耦合干扰, 所以我们从第 7 脚相邻的第 6 和 8 脚开始排查。分别将它们的外部信号断开。

通过排查, 第 8 脚信号断开没有解决问题。

但是当将第 6 脚相连的晶振和电容断开,并改用内部 HSI 时钟源后, 异常复位问题消失了, PINRSTF 不再被置位。看来干扰是从第 7 脚进入的。观察客户的 PCB 设计, 发现晶振的 CLOAD 电容接地并不是直接接地平面, 而是经过一根细长的地走线后才由一个过孔连接到地平面,很明显这根细长的地走线在浪涌测试中作为天线接收了干扰并经电容传递到了 MCU 内部。

3. 总结

MCU 内部是远比 MCU 外部电路更复杂的微电子电路,内部线路间距小,不同功能间可能只是由电子开关或多路复用器做选择,当高频干扰进入 MCU 后,干扰可以在看似不直接相连的电路间耦合而影响 MCU 的正常工作。重要的是避免干扰进入 MCU。在排查干扰传递的路径时,不要将目光局限于直接相连的电路或管脚。

参考文献

在这里插入图片描述

本文档参考ST官方的《【应用笔记】LAT1244+奇怪的NRST+管脚异常复位问题.PDF》文档。
参考下载地址:https://download.csdn.net/download/u014319604/89170946

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/558544.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++使用googletest进行单元测试

googletest进行单元测试 使用Google test进行测试一、单元测试二、使用gmock测试 使用Google test进行测试 使用场景: 在平时写代码中,我们需要测试某个函数是否正确时可以使用Google test使用,当然,我们也可以自己写函数进行验证…

施耐德 PLC 及模块 ModbusTCP 通信配置方法

1. 通过【I/O扫描器】服务进行读写 相关文档:各模块说明书仅 NOE 网卡模块、部分 CPU 自带的网口支持 优点:不需要额外编程,系统自动周期型读写数据缺点:扫描周期不定,程序无法控制数据刷新的时序 2. 通过内部程序…

AJAX——图片上传

图片上传流程 1.获取图片文件对象 2.使用FormData携带图片文件 3.提交表单数据到服务器&#xff0c;使用图片url网址 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

ESP32S3在VScode中使用USB口调试

ESP32S3在VScode中使用USB口调试 安装USB驱动修改工程的配置文件launch.jsonsettings.json 启动GDB Server 安装USB驱动 在powershell中输入下面指令&#xff1a; Invoke-WebRequest https://dl.espressif.com/dl/idf-env/idf-env.exe -OutFile .\idf-env.exe; .\idf-env.exe…

Ceph学习 -11.块存储RBD接口

文章目录 RBD接口1.基础知识1.1 基础知识1.2 简单实践1.3 小结 2.镜像管理2.1 基础知识2.2 简单实践2.3 小结 3.镜像实践3.1 基础知识3.2 简单实践3.3 小结 4.容量管理4.1 基础知识4.2 简单实践4.3 小结 5.快照管理5.1 基础知识5.2 简单实践5.3 小结 6.快照分层6.1 基础知识6.2…

MATLAB实现遗传算法优化公铁水联运

公铁水联运是运输行业的经典问题, 常用智能算法进行优化,比如遗传算法. 公铁水多式联运优化的数学模型如下&#xff1a; 1.模型简介 公铁水多式联运优化问题可以抽象为一个网络流问题&#xff0c;其中节点代表不同的运输方式转换点&#xff08;如公路、铁路、水运的交汇点&a…

探索MATLAB在计算机视觉与深度学习领域的实战应用

随着人工智能技术的快速发展&#xff0c;计算机视觉与深度学习已成为科技领域中最热门、最具挑战性的研究方向之一。 它们的应用范围从简单的图像处理扩展到了自动驾驶、医疗影像分析、智能监控行业等多个领域。 在这样的背景下&#xff0c;《MATLAB计算机视觉与深度学习实战…

【 基于Netty实现聊天室聊天业务学习】第4节.什么是BIO与NIO

IO在读写的时候是阻塞的&#xff0c;无法做其他操作&#xff0c;并发处理能力的非常低&#xff0c;线程之间访问资源通信时候也是非常耗时久&#xff0c;依赖我们的网速&#xff0c;带宽。 我们看一下他的白话原理 我们来看一下这张图那么这张图的话它里面有一个server还有三个…

OpenHarmony网络协议通信—libevent [GN编译] - 事件通知库

libevent主要是用C语言实现了事件通知的功能 下载安装 直接在OpenHarmony-SIG仓中搜索libevent并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 库代码存放路径&#xff1a;./third_party/libevent 修改添加依赖的编译脚本 在/developtools/bytrace_standard/…

Office文档在线预览-文档内容在线提取

文档提取功能&#xff0c;支持文档内容提取。包括提取文档中的所有文字内容&#xff0c;提取文档中的图片&#xff0c;提取文档音视频&#xff0c;提取文档中的统计及图表等。同时支持文档中公式的提取&#xff0c;文档大纲目录提取等功能。 支持以下文档格式进行内容提取&…

OSPGF高级实验综合

1.实验拓扑 二.实验要求 1、R4为ISP&#xff0c;其上只配置IP地址&#xff1b;R4与其他所直连设备间均使用公有IP&#xff1b; 2、R3-R5、R6、R7为MGRE环境&#xff0c;R3为中心站点&#xff1b; 3、整个OSPF环境IP基于172.16.0.0/16划分&#xff1b;除了R12有两个环回&#x…

GPU深度学习环境搭建:Win10+CUDA 11.7+Pytorch1.13.1+Anaconda3+python3.10.9

1. 查看显卡驱动及对应cuda版本关系 1.1 显卡驱动和cuda版本信息查看方法 在命令行中输入【nvidia-smi】可以当前显卡驱动版本和cuda版本。 根据显示,显卡驱动版本为:Driver Version: 516.59,CUDA 的版本为:CUDA Version 11.7。 此处我们可以根据下面的表1 显卡驱动和c…

【论文阅读】用于遥感弱监督语义分割的对比标记和标签激活

【论文阅读】用于遥感弱监督语义分割的对比标记和标签激活 文章目录 【论文阅读】用于遥感弱监督语义分割的对比标记和标签激活一、介绍二、联系工作三、方法3.1 对比token学习模块&#xff08;CTLM&#xff09;3.2 Class token对比学习3.3 标签前景激活模块 四、实验结果 Cont…

java实现chatGPT SDK

搭建一个 ChatGPT-SDK 组件工程&#xff0c;专门用于封装对 OpenAI 接口的使用。由于 OpenAI 接口本身较多&#xff0c;并有各类配置的设置&#xff0c;所以开发一个共用的 SDK 组件&#xff0c;更合适我们在各类工程中扩展使用 整个流程为&#xff1a;以会话模型为出口&#x…

websocket 连接,http 协议下用 ws, https 协议下必须要使用 wss

解决方案&#xff1a; https 相当于使用 httpssl 认证&#xff0c;使用 https 时 websocket 访问&#xff08;比如建立链接时&#xff09;必须要使用 wss。 详细解释&#xff1a; WebSocket 协议有两个主要版本&#xff1a;“ws”和“wss”。"ws"表示非加密的 Web…

对EKS(AWS云k8s)启用AMP(AWS云Prometheus)监控+AMG(AWS云 grafana)

问题 需要在针对已有的EKS k8s集群启用Prometheus指标监控。而且&#xff0c;这里使用AMP即AWS云的Prometheus托管服务。好像这个服务&#xff0c;只有AWS国际云才有&#xff0c;AWS中国云没得这个托管服务。下面&#xff0c;我们就来尝试在已有的EKS集群上面启用AMP监控。 步…

Linux搭建Discuz论坛

搭建一个论坛 —接上篇博客 改名/etc/httpd/conf.d/vhosts.conf 》/etc/httpd/conf.d/vhosts.conf.bak [rootlocalhost conf.d]# mv /etc/httpd/conf.d/vhosts.conf /etc/httpd/conf.d/vhosts.conf.bak此时的vhosts.conf是一个新创建的文件&#xff0c;之前的vhosts.conf已经…

代码+视频,R语言对数据进行多重插补后回归分析

我们在临床做回顾性研究分析中经常要面对数据缺失的问题&#xff0c;如果数据缺失量大就会对我们的研究结果产生影响&#xff0c;近年来&#xff0c;对数据进行多重插补广泛应用于SCI论文中。我们在之前的文章中已经演示了使用SPSS对数据进行多重插补并分析。今天&#xff0c;我…

【C语言】Dijkstra算法详解

一、引言二、Dijkstra算法原理三、Dijkstra算法的C语言实现四、Dijkstra算法的应用场景五、总结 一、引言 Dijkstra算法是一种著名的图论算法&#xff0c;用于解决单源最短路径问题。它是由荷兰计算机科学家Edsger W. Dijkstra在1956年提出的。本文将详细介绍Dijkstra算法的原理…

数仓建模—逻辑数据模型

数仓建模—逻辑数据模型 数据模型是数据元素及其基于现实世界对象之间的关系的可视化表示。数据模型揭示并定义数据在业务流程中的连接方式,并支持创建高效的信息系统或应用程序。例如,在商业智能中,数据模型定义用户可以在其分析中使用哪种数据。 逻辑数据模型 (LDM Logi…
最新文章