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

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配

目录

一、判断晶振与MCU是否兼容

二、判断负载电容是否匹配

1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系

2. 如何选择 CL1 和 CL2?

3. 调试技巧

三、常见误区

误区1: 我的板子上晶振不起振, 换一个STM32就好了, 那是不是芯片有问题?

误区2: 客户认为兼容就表示此晶振与MCU组合在一起在板子上就应该会起振

误区3: 不兼容的晶振, 就不会起振


一、判断晶振与MCU是否兼容

步骤1、确保所选择的晶振是基频晶振,一般40MHz以下的晶振均为基频晶振。

步骤2、计算LSE晶振与MCU匹配时所得到的gmcrit,或者GAINmargin

步骤3、最终判断MCU与晶振是否兼容

二、判断负载电容是否匹配

在晶振电路中,匹配电容(负载电容)的选择至关重要,它直接影响晶振的起振性能和频率精度。你提到的 CL1 和 CL2 通常是指连接在晶振两个引脚到地的电容,它们的取值需要根据晶振的规格和电路设计来调整。

  • 负载电容不匹配

    • 晶振需匹配特定负载电容(CL,通常为几pF至几十pF)。若电路中的负载电容(如C1、C2)与晶振规格不匹配,会导致频率偏移或不起振。

    • 解决方法:参考晶振手册调整电容值(例如:12pF晶振通常配2×22pF电容,但需根据实际设计计算)。

1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系

  • 晶振标称负载电容(CL)
    这是晶振规格书中给出的参数(如 12pF、18pF、20pF 等),表示晶振设计时预期的总负载电容值。

    • 若实际电路的总负载电容与标称值不匹配,会导致频率偏移或不起振。

  • 电路中的匹配电容(CL1、CL2)
    这两个电容(通常取值相同,如 C1=C2=22pF)与晶振引脚并联,用于调整总负载电容。

    • 总负载电容的计算公式:

       

      其中:

      • C1 和 C2是外部匹配电容(即 CL1、CL2)。

      • C杂散C杂散​ 是 PCB 走线、芯片引脚等引入的寄生电容(通常 2~5pF)。

    • 简化情况(当 C1=C2时):

      C总≈C12+C杂散

      目标:使 C总C总​ 等于晶振标称的 CL。

2. 如何选择 CL1 和 CL2?

  1. 确定晶振的标称负载电容(CL)

    • 例如:晶振规格书标明 CL=18pF。

  2. 估算杂散电容(C杂散​)

    • 通常取 3~5pF(高频电路可能更高)。

  3. 计算匹配电容(CL1、CL2)

    • 根据公式:

      C1=C2≈2×(CL−C杂散)
    • 举例:若 CL=18pF,C杂散=4pF,则:

      C1=C2≈2×(18−4)=28pF

      (实际可选 22pF~33pF 的标准电容,再通过示波器微调)。

3. 调试技巧

  1. 用示波器观察波形

    • 正常起振时,晶振引脚应为正弦波或削顶正弦波(幅值通常为 0.5~1Vpp)。

    • 若不起振,尝试逐步增大/减小 CL1、CL2(如±5pF)。

  2. 替换法测试

    • 更换不同容值的电容(如 15pF、22pF、33pF),观察起振情况。

  3. 参考官方设计

    • 查阅芯片厂商的应用笔记(如 ST 的 AN2867),获取推荐电路参数。

三、常见误区

误区1: 我的板子上晶振不起振, 换一个STM32就好了, 那是不是芯片有问题?

'-> 晶振起不起振跟多方面因素相互作用的影响, 主要包括: 选择的的晶振, 芯片本身, 所使用的CL1, CL2, 芯片软件运行时配置的驱动等级, 板上的杂散电容, 环境湿度. 除此之外, 是不是芯片被静电打坏? 等等

这些因素都会导致晶振不起振. 或者起振时间太长. 换个MCU就起振了, 并不能足以说明之前的芯片是损坏的, 也有可能是电容匹配不行导致. 或者忘记检查晶振与MCU理论上是否兼容? 或者安全裕量不够所致.

一个可行的判断芯片内部振荡电路是否被损坏的方法:

代码中配置OSC32_IN, OSC32_OUT这两个引脚为analog模式, 然后分别在此两个引脚外部供一个3.3V电压, 测量其所耗电流, 若超过1uA, 则芯片内部振荡电路大概率认为已被损坏.

误区2: 客户认为兼容就表示此晶振与MCU组合在一起在板子上就应该会起振

兼容只是表示理论上此晶振与MCU组合是可以做到所有产品都可以正常工作的. 但实际上,仍然还会出现部分起振, 部分产品不能起振!  这主要还取决于实际所使用电容CL1, CL2, 杂散电容, 湿度, 芯片所设置的驱动等级, 芯片是否已损坏等等影响.

误区3: 不兼容的晶振, 就不会起振

错, 不兼容的晶振也有可能会起振! 这里的不兼容主要是指没办法做到所有晶振都能起振或者稳定的工作. 部分晶振还是能正常的. 也有可能常温下正常, 低温下异常. 没办法做到全部芯片和全温度范围均能正常工作. 是从理论上就无法全部覆盖的那种. 

相反, 兼容的晶振, 在理论上是可以满足全部芯片全温度范围均能起振的, 只不过实际起振情况除了理论上是否兼容外(首先得排查理论上的兼容问题), 还得取决于其它实际因素.

注意: 理论上的兼容不等于晶振实际会起振! 不兼容也不等于实际不会起振!

相关文章:

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...

C语言中提供的第三方库之哈希表实现

一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...