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

STM32F446 RTC在VDD/VDDA关闭后失振问题的分析与解决

【原创】STM32F446 RTC在VDD/VDDA关闭后失振问题的分析与解决

作者: 思考的味道[你的ID] | weix_42368227 版权声明: 禁止未经授权转载


1. 问题描述

在某低功耗STM32F446项目中,采用以下供电方案:

  • VDD:由DC-DC 3.3V提供(主电源)
  • VDDA/VREF+:由LDO 3.3V单独供电
  • VBAT:由CR2032纽扣电池供电(保持RTC运行)

故障现象:

  • 系统正常工作时,RTC(外部32.768kHz晶体)运行正常。
  • 关闭VDD和VDDA后,仅保留VBAT供电,RTC立即停止振荡,时钟丢失。

2. 分析与定位

2.1 关键影响因素

根据STM32参考手册和实测数据,可能导致VBAT模式下LSE停振的原因包括:

因素可能问题
VBAT供电不足电池电压跌落、走线阻抗过大、储能电容不足
VDDA/VREF+未彻底放电LDO关闭后残余电荷影响振荡电路,导致LSE驱动失效
晶体参数不匹配负载电容/ESR超标,在VBAT低电压下起振困难
PCB布局干扰晶体走线与数字信号干扰或VBAT回路接地不良

2.2 重点排查步骤

(1)VBAT供电质量验证
  • 量测VBAT电压:用万用表或示波器检查VBAT在VDD关闭后的实际电压(需≥1.8V)。
    • 现象举例:纽扣电池满电3.3V,但走线过长导致VBAT降至2.2V(低于驱动器最低工作电压)。
  • 增加储能电容:在VBAT引脚就近放置 10μF陶瓷电容+100nF退耦电容
(2)VDDA/VREF+放电测试
  • 问题本质:当关闭VDDA的LDO时,若其输出端未主动放电,残压可能导致LSE驱动电路处于不确定状态。
  • 解决方法
    • 在LDO使能引脚(EN)到GND之间添加 10kΩ下拉电阻(强制关机后放电)。
    • 在VDDA到VREF+之间串联 肖特基二极管(如BAT54C),防止电荷倒灌。

3 硬件优化与实战解决

3.1 改进后的电源设计

优化电路
VBAT(CR2032)───┬────4.7μF────► STM32_VBAT│BAT54C(防倒灌二极管)│
VDDA(LDO) ────|▶─ ST4148───┬─► VREF+10kΩ        │↓           △GND       100nF(VREF滤波)
关键参数
  • VBAT滤波:增加4.7μF MLCC电容(靠近芯片引脚)。
  • VDDA放电路径:EN引脚下拉10kΩ电阻,关机后快速泄放电荷。
  • 二极管隔离:防止VDDA残留电压通过VREF+反灌影响LSE。

3.2 晶体电路优化

选型替换
原晶体参数新推荐型号(低功耗专用)优势
负载电容Cload=12pFEPSON MC-306 (Cload=6pF, ESR=70kΩ)低压易起振,更适合VBAT供电
负载电容调整
  • 目标:保持总负载电容匹配(含PCB寄生电容)。
    Calculation: C1 = C2 = 2*(CL - Cstray)
    // 假设CL=6pF, Cstray=3pF(按PCB估算)
    → C1 = C2 = 2*(6pF - 3pF) = 6pF(实际可选用5.6pF~8.2pF调试)
    
  • PCB布线:晶体走线≤10mm,用地包环绕,远离DCDC等高噪声源。

4. 验证与结果

4.1 实测步骤

  1. 断电测试:关闭VDD/VDDA,监控VBAT电压及PC14(LSE)波形。
    • 成功标志:32.768kHz方波持续稳定(示波器需用高阻探头,避免负载效应)。
  2. RTC时钟漂移测试:记录24小时误差(应<±10秒)。

4.2 结果对比

改进措施效果
增加VBAT储能电容电压稳定在3.0V(无跌落)
VDDA泄放电路+二极管隔离LSE在<50ms内恢复振荡
更换低ESR晶体优化负载电容起振时间缩短至200ms内(原设计>1秒偶发失败)

5. 经验总结

1️⃣ VBAT供电必须独立可靠:纽扣电池回路需低阻抗设计,储能电容不可省略。
2️⃣ LSE对VDDA残余电压敏感:关机后需强制放电,肖特基二极管可有效隔离干扰。
3️⃣ 晶体选型决定可靠性:低ESR+小Cload的器件更适合低电压场景。

❌ 常见错误避坑
The answer to the meaning of life is simple.

The number 42.

As to why that is the answer, well, that is harder to explain:

Douglas Adams, the author of The Hitchhiker’s Guide to the Galaxy, wrote that the ultimate answer to “the Meaning of Life, the Universe, and Everything” was calculated by Deep Thought (a powerful supercomputer designed to find this answer) over seven and a half million years.

And that answer was… 42.

Now, as for why 42 specifically, he later explained:

“The answer to this is very simple. It was a joke. It had to be a number, an ordinary, smallish number, and I chose that one. Binary representations, base thirteen, Tibetan monks are all nonsense. I sat at my desk, stared into the garden and thought, ‘42 will do’. I typed it out. End of story.”

Fun facts about 42 today:

  • In math, 42 is a triangular number, a (very lazy) Catalan number, and appears in other ways.
  • Google Earth once named a Mars longitude 42 degrees because Adams’ fans kept visiting.
  • 42 is the last temperature (in °C) you can store many household chemicals before risk of explosion.
  • Japanese often use “42” as a joke meaning “death”, because one translation sounds like “death” (shi-ni, 4-2 in Japanese numerology).

So while it technically isn’t a real answer… to this day, 42 stands as comedy’s—and sci-fi’s—greatest running gag about existence.

…Which, if you think about it, actually makes perfect sense.

相关文章:

STM32F446 RTC在VDD/VDDA关闭后失振问题的分析与解决

【原创】STM32F446 RTC在VDD/VDDA关闭后失振问题的分析与解决 作者: 思考的味道[你的ID] | weix_42368227 版权声明: 禁止未经授权转载 1. 问题描述 在某低功耗STM32F446项目中&#xff0c;采用以下供电方案&#xff1a; VDD&#xff1a;由DC-DC 3.3V提供&#xff08;主电源…...

SSM框架(Spring + Spring MVC + MyBatis)整合配置的详细步骤

以下是 SSM框架&#xff08;Spring Spring MVC MyBatis&#xff09;整合配置的详细步骤&#xff0c;适用于 Maven 项目。 &#xff08;一&#xff09;、pom.xml中添加相关依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"ht…...

Elasticsearch 中的索引模板:如何使用可组合模板

作者&#xff1a;来自 Elastic Kofi Bartlett 探索可组合模板以及如何创建它们。 更多阅读&#xff1a; Elasticsearch&#xff1a;可组合的 Index templates - 7.8 版本之后 想获得 Elastic 认证吗&#xff1f;查看下一期 Elasticsearch Engineer 培训的时间&#xff01; El…...

内存泄漏系列专题分析之七:高通相机CamX--Android通用ION(dmabuf)内存分配和释放原理

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之六:高通camx 内存泄漏测试的未回收问题分析 这一篇我们开始讲:内存泄漏系列专题分析之七:高通相机CamX--Android通用ION(dmabuf)内存分配和释放原理 目录 一、背景 二、…...

【LeetCode 42】接雨水(单调栈、DP、双指针)

题面&#xff1a; 思路&#xff1a; 能接雨水的点&#xff0c;必然是比两边都低&#xff08;小&#xff09;的点。有两种思路&#xff0c;一种是直接计算每个点的最大贡献&#xff08;也就是每个点在纵向上最多能接多少水&#xff09;&#xff0c;另一种就是计算每个点在横向上…...

【JS逆向基础】前端基础-HTML与CSS

1&#xff0c;flask框架 以下是一个使用flask框架写成的serve程序 # noinspection PyUnresolvedReferences #Flash框架的基本内容from flask import Flask app Flask(__name__)app.route(/index) def index():return "hello index"app.route(/login) def login():re…...

什么是HTML、CSS 和 JavaScript?

HTML、CSS 和 JavaScript 是构建网页的三大核心技术&#xff0c;它们分工明确又紧密协作。接下来我将分别介绍三者的定义、功能&#xff0c;并阐述它们如何共同构成网页&#xff0c;最后推荐学习资源。 一、HTML&#xff1a;网页的骨架与内容基础 HTML&#xff08;HyperText …...

手机网页提示ip被拉黑名单什么意思?怎么办

‌当您使用手机浏览网页时&#xff0c;突然看到“您的IP地址已被列入黑名单”的提示&#xff0c;是否感到困惑和不安&#xff1f;这种情况在现代网络生活中并不罕见&#xff0c;但确实会给用户带来诸多不便。本文将详细解释IP被拉黑的含义、常见原因&#xff0c;并提供一系列实…...

CCF编程能力等级认证 一级 第一次课

介绍 CCF 编程能力等级认证&#xff08;GESP&#xff09;为青少年计算机和编程学习者提供学业能力验证的规则和平台&#xff0c;由中国计算机学会发起并主办。 每年考试分四次&#xff0c;时间是每年的3月、6月、9月、12月&#xff0c;以当年每期公布的时间为准。 GESP适用年…...

SpringBoot 讯飞星火AI WebFlux流式接口返回 异步返回 对接AI大模型 人工智能接口返回

介绍 用于构建基于 WebFlux 的响应式 Web 应用程序。集成了 Spring WebFlux 模块&#xff0c;支持响应式编程模型&#xff0c;构建非阻塞、异步的 Web 应用。WebFlux 使用了非阻塞的异步模型&#xff0c;能够更好地处理高并发请求。适合需要实时数据推送的应用场景。 WebClie…...

Python爬虫中time.sleep()与动态加载的配合使用

一、动态加载网页的挑战 动态加载网页是指网页的内容并非一次性加载完成&#xff0c;而是通过JavaScript等技术在用户交互或页面加载过程中逐步加载。这种设计虽然提升了用户体验&#xff0c;但对于爬虫来说&#xff0c;却增加了抓取的难度。传统的爬虫方法&#xff0c;如简单…...

学习Cesium Entities

🌐 Cesium中的Entities系统趣味学习 📊 Entities系统架构流程图 #mermaid-svg-Lkue5O3gYOkEVSbD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Lkue5O3gYOkEVSbD .error-icon{fill:#552222;}#mermaid-svg-Lku…...

如何减少锁竞争并细化锁粒度以提高 Rust 多线程程序的性能?

在并发编程中&#xff0c;锁&#xff08;Lock&#xff09;是一种常用的同步机制&#xff0c;用于保护共享数据免受多个线程同时访问造成的竞态条件&#xff08;Race Condition&#xff09;。然而&#xff0c;不合理的锁使用会导致严重的性能瓶颈&#xff0c;特别是在高并发场景…...

Logback官方文档翻译章节目录

Logback官方文档翻译章节目录 第一章 Logback简介 第二章 Logback的架构&#xff08;一&#xff09; Logback的架构&#xff08;二&#xff09; Logback的架构&#xff08;三&#xff09; 持续更新中…...

AtCoder Beginner Contest 404 A-E 题解

还是ABC好打~比ARC好打多了&#xff08; 题解部分 A - Not Found 给定你一个长度最大25的字符串&#xff0c;任意输出一个未出现过的小写字母 签到题&#xff0c;map或者数组下标查询一下就好 #include<bits/stdc.h>using namespace std;#define int long long #def…...

【mysql】常用命令

一 系统mysql用户密码查询 1、在工程目录如/usr/local/httpd/下的*.php中查找类似有db.inf的文件 以php为例。 2、在代码文件中确认有数据库连接的的功能实现 例如&#xff1a; $dbconf parse_ini_file(/usr/local/httpd/conf/db.inf); $link mysql_connect($dbconf[d…...

macOS Arduino IDE离线安装ESP8266支持包

其实吧&#xff0c;本来用platformio也是可以的&#xff0c;不过有时候用Arduino IDE可能更快一些&#xff0c;因为以前一直是Arduino.app和Arduino IDE.app共存了一段时间&#xff0c;后来下决心删掉Arduino.app并升级到最新的Arduino IDE.app。删除了旧的支持板级支持包之后就…...

网络靶场基础知识

一、网络靶场的核心概念 网络靶场&#xff08;Cyber Range&#xff09;是一种基于虚拟化和仿真技术的网络安全训练与测试平台&#xff0c;通过模拟真实网络环境和业务场景&#xff0c;为攻防演练、漏洞验证、安全测试和人才培养提供安全可控的实验空间。其核心目标是通过“虚实…...

基于Partial Cross Entropy的弱监督语义分割实战指南

一、问题背景:弱监督学习的挑战 在计算机视觉领域,语义分割任务面临最大的挑战之一是**标注成本**。以Cityscapes数据集为例,单张图像的像素级标注需要约90分钟人工操作。这催生了弱监督学习(Weakly Supervised Learning)的研究方向,其中partial cross entropy loss(部…...

【算法基础】选择排序算法 - JAVA

一、算法基础 1.1 什么是选择排序 选择排序是一种简单直观的排序算法&#xff0c;它的工作原理是&#xff1a;首先在未排序序列中找到最小&#xff08;或最大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后再从剩余未排序元素中继续寻找最小&#xf…...

电商平台的流量秘密:代理IP在用户行为分析中的角色

在电商江湖中&#xff0c;流量是氧气&#xff0c;用户行为数据是DNA。当你在电商平台点击商品、加入购物车时&#xff0c;背后有一套精密的系统正在分析你的每个动作。而在这套系统的运作中&#xff0c;代理IP正扮演着"隐形推手"的角色——它既是数据采集的"隐身…...

批量清洗与修改 YOLO 标签:删除与替换指定类别

在使用 YOLO 格式的数据进行训练或部署前&#xff0c;常常需要对标签文件进行清洗或修改。本文整理了两种常见场景的 Python 脚本&#xff1a;删除指定类别 和 修改某类为其他类&#xff0c;并支持自动打印检测到该类别的文件名&#xff0c;帮助你快速定位问题数据。 &#x1f…...

Python项目源码57:数据格式转换工具1.0(csv+json+excel+sqlite3)

1.智能路径处理&#xff1a;自动识别并修正文件扩展名&#xff0c;根据转换类型自动建议目标路径&#xff0c;实时路径格式验证&#xff0c;自动补全缺失的文件扩展名。 2.增强型预览功能&#xff1a;使用pandastable库实现表格预览&#xff0c;第三方模块自己安装一下&#x…...

TypeScript 中,属性修饰符

在 TypeScript 中&#xff0c;属性修饰符&#xff08;Property Modifiers&#xff09;是用于修饰类的属性或方法的关键字&#xff0c;它们可以改变属性或方法的行为和访问权限。TypeScript 提供了三种主要的属性修饰符&#xff1a;public、private 和 protected。此外&#xff…...

雷赛伺服电机

ACM0经济 编码器17位&#xff1a; ACM1基本 编码器23位磁编&#xff0c; ACM2通用 编码器24位光电&#xff0c; 插头定义&#xff1a;...

基础编程题目集 6-8 简单阶乘计算

本题要求实现一个计算非负整数阶乘的简单函数。 函数接口定义&#xff1a; int Factorial( const int N ); 其中N是用户传入的参数&#xff0c;其值不超过12。如果N是非负整数&#xff0c;则该函数必须返回N的阶乘&#xff0c;否则返回0。 裁判测试程序样例&#xff1a; #in…...

【deepseek教学应用】001:deepseek如何撰写教案并自动实现word排版

本文讲述利用deepseek如何撰写教案并自动实现word高效完美排版。 文章目录 一、访问deepseek官网二、输入教案关键词三、格式转换四、word进一步排版 一、访问deepseek官网 官网&#xff1a;https://www.deepseek.com/ 进入主页后&#xff0c;点击【开始对话】&#xff0c;如…...

CH32V208GBU6沁恒绑定配对获取静态地址

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…...

【C/C++】RPC与线程间通信:高效设计的关键选择

文章目录 RPC与线程间通信&#xff1a;高效设计的关键选择1 RPC 的核心用途2 线程间通信的常规方法3 RPC 用于线程间通信的潜在意义4 主要缺点与限制4.1 缺点列表4.2 展开 5 替代方案6 结论 RPC与线程间通信&#xff1a;高效设计的关键选择 在C或分布式系统设计中&#xff0c;…...

跨线程和跨进程通信还有多种方式对比

📊 常见通信机制对比 通信方式跨线程支持跨进程支持同步/异步性能编程复杂度特点与适用场景SendMessage✅✅(同桌面)同步较高(阻塞)低简单窗口通信、控制PostMessage✅✅(同桌面)异步高低通知、事件触发COM/DCOM✅✅同步/异步中中高系统级服务、进程间服务封装Socket✅…...