外部晶振两边的电容,到底在做什么? 外部晶振两边的电容到底在做什么本文为教学接线与设计预期尚无实物测量记录使用 NUCLEO-F030R8。问题八兆赫晶体有两条腿为什么旁边还各有一只电容它不是自带电池、直接吐方波的模块。今天看裸单片机、石英晶体和两只接地电容弄清时钟怎样稳定起来。物件动作小熊拿着节拍旗从左边门走到晶体再从右边门回来两只小水杯分别放在门边装一点又放一点。反复交换的动作让节拍保持下来。回到电路两扇门是芯片的振荡输入和输出脚水杯是两只到地的电容只改变两侧节点的交流负载不是给晶体供电的电池。真实连接本例芯片是二十脚的 STM32F030F4P6。第二脚接晶体左端第三脚接晶体右端。左端还接一只二十七皮法电容到地右端也接一只二十七皮法电容到地。晶体型号的标称负载是十八皮法。芯片电源脚接三点三伏并就近去耦电容绝不是串在电源线上。原因与结果芯片内部放大并反馈晶体选择主要振动频率两只电容和走线杂散形成晶体的负载。假设杂散四点五皮法两只二十七皮法串联等效十三点五加起来十八皮法。这是选值算例杂散不量不能宣称板子正好八兆赫。验证断电确认晶体跨第二、三脚两只电容各自到地。上电用调试器看外部振荡器就绪标志再看它分频后的安全输出不用普通探头压在晶体脚上改变负载。片中是计算与设计预期不是实测。边界晶体八兆赫不等于芯片最终频率系统还要选时钟源也可能倍频。电容选错、走线太长或供电不稳会影响起振与频差。这里是假设杂散的教学电路真做板还要核算起振裕量并测量不能照抄电容值。先拆掉误解晶体不是一颗有源方波发生器这篇选一颗 ST STM32F030F4P6 TSSOP20 裸芯片、一颗 ECS-80-18-5PX-JEM-TR 八兆赫石英晶体、两只 27 pF C0G 负载电容来回答新手常见的疑问晶体两边为何各接一只电容。这里说的‘外部晶振’是日常口语器件本身实际是无源石英晶体不能像带电源脚的有源振荡器那样单独吐出标准方波。它需要芯片内部振荡放大器与反馈环路共同工作。本文画的是独立裸芯片教学电路不是声称 NUCLEO-F030R8 成品板已经装了这颗 ECS 晶体把成品板默认的 ST-LINK 时钟旁路当晶体接法会把两套完全不同的时钟来源混为一谈。先用可以画出的动作帮助理解小熊拿着一面节拍旗从左门走到桌上的弹性晶体再走到右门两边门旁各有一只小水杯交替装一点、放一点。小熊不是在给晶体搬电池水杯也不是一颗电源。回到真实电路左门是 PF0-OSC_IN右门是 PF1-OSC_OUT桌上的晶体跨接两端水杯 C1、C2 分别从各自的振荡节点连到公共地。环路的放大与反馈在 STM32 芯片内部石英晶体的机械谐振特性选择主要频率。这个比喻只对应‘两侧交替储放电荷’和环路持续变化不能用来替代起振裕量、波形或频率的实际计算。按封装脚号逐条连不能把电容串在晶体或电源里ST 的 STM32F030 系列数据手册 DS9773 Rev5 图9和表11列出 TSSOP20 的 PF0-OSC_IN 是 pin2、PF1-OSC_OUT 是 pin3。因此 X1 晶体一端接 pin2另一端接 pin3。C1 一端与 pin2/X1 左端同节点另一端接地C2 一端与 pin3/X1 右端同节点另一端接地。ST AN4325 图5明确画出这种‘晶体跨两脚、两只负载电容各自到地’的结构而不是在两脚之间串两只电容。两只电容可选 C0G/NP0 介质作为本例初始设计具体料号、封装、走线和工艺仍需板级验证。裸芯片还必须安全供电否则讨论起振没有意义。同一 TSSOP20 引脚表列出 VDD pin16、VDDA pin5、VSS pin15本例让 VDD、VDDA 接合格的 3.3 V 稳压电源VSS 与电源地及 C1/C2 下端共地。C3 100 nF 跨接 VDD 与地C4 100 nF 跨接 VDDA 与地均尽量靠近对应供电脚。它们是供电去耦不是晶体负载电容也不是串在 3.3 V 电源线上的限流件。芯片其余启动、复位、下载、电源保护和 PCB 细节不能从这幅局部振荡接线图省略并声称这是完整可量产最小系统本文聚焦的是振荡节点与电容职责。‘两只 27 pF’为什么不等于给晶体加了 54 pFECS 官方产品页给所选晶体标称八兆赫、负载电容 18 pF、等效串联电阻 ESR 60 Ω。这些是该料号的厂家标称参数不是我们已经量出的数值。ST AN2867 的初步计算式为晶体看到的有效负载约等于 C1×C2÷(C1C2)Cstray其中 Cstray 包含芯片引脚和 PCB 走线等寄生影响。假定本次教学 PCB 的杂散为 4.5 pF并先令 C1C227 pF电容串联等效为 27×27÷(2727)13.5 pF加上 4.5 pF 得 18.0 pF。公式可由随文 C11 程序直接复算若实际杂散为 6 pF沿用同样电容会变成 19.5 pF。由此可见两只各为 27 pF 并不等于晶体负载 54 pF也不能拿‘18 pF 晶体’就各放 18 pF 到地。4.5 pF 只是为了讲清公式而明确写出的设计假设当前没有这块 PCB 的原始电容测量或板级提取数据。AN2867 还要求核对所选晶体的起振兼容性和放大器增益裕量不能仅凭频率、CL 和 ESR 三个标签宣称一定起振。尤其实际走线长度、焊盘、探头、电容容差、供电与温度都会改变环路条件。真正下单前应取得晶体完整规格按 ST 给出的 HSE 振荡器参数核算起振裕量和驱动等级并在样板上实测起振、频差与温度变化然后调整 C1、C2。文中的 27 pF 是可复算的初始值不是厂家对所有板卡推荐的固定值。时钟怎样从外部振荡进入芯片逻辑芯片上电后可以先由内部时钟工作。若固件准备改用外部高速晶体 HSE必须配置振荡器并等待硬件报告稳定再按参考手册允许的步骤切换系统时钟源。ST AN4325 说明 RCC_CR 中的 HSERDY 标志用来表示 HSE 已稳定单凭晶体焊在两脚之间不代表处理器已经选择八兆赫作为当前系统时钟。系统时钟还可能经过倍频与分频所以不能把‘晶体 8 MHz’直接等同于‘CPU 每秒只做八百万次动作’。本篇 C11 小程序只复算负载不冒充 RCC 初始化固件是否使用 HSE、最终系统频率与失败回退必须在具体固件里另外配置和验证。验证顺序和适用边界先断电检查 pin2 到 X1 左端、pin3 到 X1 右端C1/C2 下端分别到公共地并确认 C3/C4 在供电与地之间。不要用欧姆档在带电板上测晶体。上电后先查 3.3 V 供电再用调试器读 RCC_CR 的 HSEON、HSERDY 及系统时钟选择状态若就绪位一直不来检查焊点、电容、PCB 布局、芯片配置和起振裕量。普通示波器探头直接压在高阻振荡脚上会增加负载并可能让原本正常的振荡停掉应依据板级测量方案使用合适探头或观察已由芯片安全引出的后级时钟不把普通探头画成串进晶体回路的器件。本项目没有制作或测量真实 PCB没有八兆赫波形、起振时间、频率偏差或 gm 裕量记录。图上的频率、负载与状态均标为厂家标称、明确假设下的计算或待测的设计预期不得称为实测。若换晶体料号、STM32 封装、PCB 走线或环境先重新核对官方资料、脚号、负载与兼容性不能把这幅局部图照搬到任意单片机也不能把无源晶体当独立有源时钟模块。逐线接线清单STM32F030F4P6 TSSOP20 pin 2 PF0-OSC_IN → ECS-80-18-5PX-JEM-TR 晶体端 A 与 C1 27 pF 上端同一振荡输入节点不接成外部有源时钟旁路STM32F030F4P6 TSSOP20 pin 3 PF1-OSC_OUT → ECS-80-18-5PX-JEM-TR 晶体端 B 与 C2 27 pF 上端同一振荡输出节点晶体跨 pin2 与 pin3C1 27 pF 下端 → 公共 GND输入节点到地的负载电容不串入晶体C2 27 pF 下端 → 公共 GND输出节点到地的负载电容不串入晶体稳压 3.3 V → TSSOP20 pin16 VDD 与 pin5 VDDA数字、模拟电源同为安全低压完整板另需按资料布去耦稳压 GND → TSSOP20 pin15 VSS 与 C1/C2/C3/C4 回地所有地为同一参考TSSOP20 无独立外露 VSSAC3 100 nF → VDD pin16 与 GND 之间供电去耦靠近芯片不串在供电线上C4 100 nF → VDDA pin5 与 GND 之间模拟供电去耦靠近芯片调试器只读 RCC_CR.HSERDY → 芯片内部就绪状态非晶体脚上的外接测量线不要用普通低阻探头加载振荡节点计算与实施边界ST DS9773 Rev5 图9/表11STM32F030F4P6 TSSOP20 pin2 PF0-OSC_IN、pin3 PF1-OSC_OUT、pin5 VDDA、pin15 VSS、pin16 VDD芯片供电范围 2.43.6 VST AN4325 Rev2 图5外部晶体跨 OSC_IN 与 OSC_OUT两只负载电容分别从两端到地HSE 就绪由 RCC_CR.HSERDY 表示振荡器为 432 MHzST AN2867 Rev23 第3.3/4.2节CL≈C1C2/(C1C2)Cstray实际电容须基于晶体和板级杂散迭代并核验起振裕量27 pF 和假设杂散4.5 pF仅为本例可复算初值ECS 厂家 ECS-80-18-5PX-JEM-TR 产品页标称 8 MHz、负载电容18 pF、ESR 60 Ω不是有源振荡器也不保证与本例板未经验证就稳定起振NUCLEO-F030R8 成品板默认 HSE 接法不得被说成已经装有这颗外部晶体本文画的是单独裸芯片教学电路不是要求在 NUCLEO 上直接跨焊本文未制作或测量实体 PCB未给出频率实测、起振时间或 gm 裕量图中只表示连接与有条件的设计预期这些参数和数值是本例选择或可复算计算实际测量前应先检查电源极性、公共地、元件额定值、仪器探头连接。完整可运行的核心算例与验收以下 C11 程序可在电脑上用 C 编译器单独编译运行用来复算状态或数值它不是已配置 GPIO、ADC、定时器和驱动的开发板固件。移植到实板时应按前述接线配置外设、检查读取错误并另做实测。#includestdio.h/* 只复算假设的两电容与杂散不是 MCU 时钟初始化代码。 */staticdoubleload_pf(doublec1,doublec2,doublestray){returnc1*c2/(c1c2)stray;}intmain(void){printf(27pF || 27pF 4.5pF %.1f pF\n,load_pf(27.0,27.0,4.5));printf(if stray is 6pF, load %.1f pF\n,load_pf(27.0,27.0,6.0));return0;}验收时同时记录输入、关键节点电压或波形、程序输出若发现传感器通信失败、输入超出允许范围或波形明显异常应停止并排查。官方资料https://www.st.com/resource/en/datasheet/stm32f030r8.pdfhttps://www.st.com/resource/en/application_note/an4325-getting-started-with-stm32f030xx-and-stm32f070xx-series-hardware-development-stmicroelectronics.pdfhttps://www.st.com/resource/en/application_note/an2867-guidelines-for-oscillator-design-on-stm8afals-and-stm32-mcusmpus-stmicroelectronics.pdfhttps://ecsxtal.com/products/crystals/surface-mount-crystals/ecs-80-18-5px-jem-tr/