首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >晶振不起振、频偏漂移、高温停振?无源晶振电路设计的 8 个关键点

晶振不起振、频偏漂移、高温停振?无源晶振电路设计的 8 个关键点

原创
作者头像
机械之心
修改于 2026-11-15 08:20:13
修改于 2026-11-15 08:20:13
280
举报
文章被收录于专栏:硬件--基础知识硬件--基础知识

一颗晶振、两颗电容,占了 BOM 不到三毛钱,却是硬件调试里最容易"看起来没问题、上量产就出事"的电路。样机阶段十台里有八台能跑,剩下两台不启动;跑起来的那八台,高温老化两小时后 RTC 又慢了十几秒。这类问题十有八九不是芯片坏了,而是晶振电路从选型到布局有一处没算对。

先把问题分成两类,排查顺序完全不同:

  • 能不能振:负性阻抗、ESR、驱动能力、焊接与漏电
  • 振得准不准:负载电容匹配、温漂、老化、杂散

前者是"开不了机",后者是"能开机但时间不对"。下面按这两条线,把关键点逐个说清楚。

无源晶振皮尔斯振荡电路:负载电容与起振裕量示意
无源晶振皮尔斯振荡电路:负载电容与起振裕量示意

一、负载电容:不是"两颗 22pF 随便放"

这是最常见的错误来源。很多人看到参考设计上写着 22pF 就照抄,结果频偏一路偏慢,怎么调代码都不对。

无源晶振的标称频率是在指定负载电容 CL 下标定出来的。电路实际提供的负载电容是:

CL = C1 × C2 / (C1 + C2) + Cs

其中 Cs 是杂散电容(PCB 走线、芯片引脚、焊盘),典型 3~5pF。当 C1 = C2 时:

C1 = C2 = 2 × (CL − Cs)

举个例子:晶振规格书写 CL = 8pF,按 Cs = 4pF 估算,实际应选 C1 = C2 = 8pF,而不是 22pF。

晶振 CL

杂散 Cs=3pF 时 C1=C2

杂散 Cs=5pF 时 C1=C2

8pF

10pF

6pF

10pF

14pF

10pF

12pF

18pF

14pF

20pF

34pF

30pF

电容偏大会让频率偏低,偏小则偏高,方向是相反的。电容材质必须用 C0G/NP0,X7R 的容值随温度和直流偏压变化能到 ±15%,等于给频偏又叠加了一层不确定量。

还有个细节:多数晶振的"牵引灵敏度"(trim sensitivity)只有 10~15ppm/pF 量级。也就是说 CL 差 2pF,频偏就跑掉 20~30ppm——对 UART 波特率、CAN 位定时、USB 全速这些场景,已经足够让通信偶发误码了。

二、负性阻抗:判断"能不能起振"的唯一硬指标

晶振要维持振荡,振荡电路的负性阻抗 |−R| 必须大于晶振本身 ESR 的若干倍。行业惯例是 |−R| ≥ 5 × ESR(最低不能低于 3 倍),裕量不足的表现就是:常温能起振,低温或批次更换后起不来。

测量方法很土但有效:在晶振支路串联一个可变电阻 Rq,从小到大调,直到振荡停止,此时 Rq 的阻值约等于 |−R|。工程上可以串几个固定电阻(100Ω、220Ω、470Ω、1kΩ)逐步试,比可调电阻更接近实际。

几类常见晶振的 ESR 上限,选型时要对着看:

类型

频率

ESR 典型/上限

备注

音叉晶振

32.768kHz

35~70kΩ

驱动极弱,起振慢,最怕负载电容偏大

贴片无源

8MHz

40~80Ω

最常见,裕量通常够

贴片无源

16/25MHz

30~60Ω

高速 USB 场景要更严

泛音晶振

3 次泛音

60~100Ω

需要 LC 选频,否则振在基频

如果 |−R| 不够,处理顺序是:先减小 CL(电容选大了),再减小串联电阻 Rs,然后换低 ESR 晶振,最后检查是不是用错了 MCU 的驱动档位(很多芯片有 XOSC 驱动强度寄存器)。

三、驱动电平:被忽略的"慢性病"

驱动电平 DL 是晶振实际承受的功率,超规格不会立刻坏,但会带来三个后果:频率随负载漂移、老化加速(一年跑掉几十 ppm)、极端情况下晶体开裂。

估算方式:

DL ≈ I² × ESR,其中 I = 2πf × CL × Vpp

以 8MHz、CL=8pF、Vpp=1V 为例,I ≈ 2π × 8e6 × 8e-12 × 1 ≈ 0.4mA,乘以 ESR 60Ω 再平方量级算下来在几十微瓦,属于安全区。但换成低 ESR 晶振(比如 20Ω)配大驱动档位,就可能顶到规格上限。

常见规格是 10µW / 100µW / 500µW 三档。抑制手段就是串 Rs,几十到几百欧,既压驱动又抑制高次谐波,代价是负性阻抗会同步下降——所以 Rs 和 |−R| 是一对需要平衡的参数。

四、反馈电阻 Rf:别自己乱加

Rf(通常 1MΩ~10MΩ)的作用是把反相器偏置在线性放大区,让电路有足够的增益起振,同时稳定占空比。绝大多数 MCU 内部已经集成,外部再加一颗 1MΩ 一般无害,但加上后如果起振变慢,说明原本的偏置已经在临界点,问题其实在负性阻抗。

五、PCB 布局:三条铁律

晶振电路对布局的敏感度远高于一般数字电路,因为它是高阻抗、小信号的模拟节点。

  1. 距离:晶振紧贴芯片,走线总长控制在 10mm 以内,尽量短、直、对称,两根线等长,不要绕。
  2. 地层:晶振下方保持完整地平面,绝不能跨分割。周围包地并多打过孔,把晶振"围"起来。如果板子层数够,晶振正下方可以是地,但要在晶振本体焊盘处做隔离,别让地铜直接贴到焊盘上造成额外寄生电容。
  3. 远离干扰源:DC-DC 电感、SW 开关节点、高速时钟、天线、大电流回路,至少保持 3~5mm,最好不同区域。

还有一个常被忽略的点:两颗负载电容的地要就近回到芯片的地,不能走长路径绕到板子另一头。这段回流路径的寄生电感会直接吃掉起振裕量。

六、测量:别拿探头直接怼晶振引脚

普通无源探头输入电容 10~15pF,直接点在晶振引脚上,等于给电路并了一颗大电容——轻度表现是频率拉偏几百 ppm,重度直接停振。你测到的现象和实际工作状态根本不是一回事。

正确做法按可靠性排序:

  1. 测 MCU 的 CLKOUT / 时钟缓冲输出脚(很多芯片有专门的时钟输出或 MCO 引脚)
  2. 测系统时钟相关的调试引脚,通过固件输出分频时钟
  3. 必须测晶振引脚时,用 1:10 高阻探头 + 短地弹簧,且只做定性观察,不看频率

频偏计算:ppm = (f_meas − f_nom) / f_nom × 10⁶。25℃ 下超过 ±30ppm 就要怀疑 CL 失配。

七、温漂与老化:这笔账要提前算

MHz 级 AT 切型晶振:频率-温度曲线是抛物线,拐点在 25℃ 附近,系数约 −0.04ppm/℃²。−20℃ 到 +70℃ 区间,频偏大致 ±20~30ppm。

32.768kHz 音叉晶振:同样是抛物线,系数约 −0.035ppm/℃²。

Δf/f (ppm) ≈ −0.035 × (T − 25)²

25℃ 之外偏 15℃,就是 −7.9ppm;对 RTC 而言一天约走慢 0.68 秒,一个月就是 20 秒。所以 RTC 走时不准,先别怀疑固件,先算这笔温度账。

老化:常规晶振 ±3~5ppm/年,高温环境加速。做十年寿命设计的产品,老化必须进预算。

总误差预算要这样列:

误差项

典型值

说明

初始公差

±10~30ppm

规格书标称

负载电容失配

±10~20ppm

CL 差 1~2pF 就够

温度漂移

±20~30ppm

工业级温区

老化(首年)

±3~5ppm

逐年累加

加起来的绝对值对 CAN、USB、以太网这些对时钟敏感的总线,必须核对协议余量,不能只看单个器件规格。

八、一个真实案例:32.768kHz RTC 每天慢 4 秒

之前一个手持设备,现场反馈"时间越用越不准,一天能慢三四秒"。拿回来拆开查:

  • 用频率计测 RTC 的校准输出脚(1Hz 方波),实测周期 1.0000450s,折算频偏约 −45ppm
  • 晶振规格书写 CL=12.5pF,板上实际装的是 22pF × 2
  • 按公式反算:CL_实际 = 22×22/(22+22) + 4 ≈ 15pF,比标称多 2.5pF
  • 按 12ppm/pF 的牵引灵敏度,理论上应偏约 −30ppm,实测 −45ppm 多出来的部分来自电容用了 X7R(高温下容值下降,等效 CL 继续变大)

把电容换成 15pF 的 C0G,实测频偏回到 −8ppm,一天误差降到 0.7 秒以内。整个过程没改一行固件。

这个案例说明一件事:频偏问题优先查物料和容值,别急着怀疑代码。固件能做的是校准和温补,都是"事后补偿";硬件把 CL 配对到位,才是一开始就该做的事。

九、选型:无源晶振、有源晶振、TCXO 怎么选

不是所有场合都该用"晶体 + 两颗电容"的方案。按精度和成本做一个简单取舍:

方案

典型精度

成本

起振

适用场景

无源晶振(XTAL)

±20~50ppm

最低

需外部电容,依赖 MCU 驱动

通用 MCU、消费电子

有源晶振(OSC)

±20~50ppm

中

上电即输出,无需匹配

需要独立时钟源、多芯片共享

TCXO

±0.5~2ppm

高

上电即输出

通信、GPS、计量

MCU 内部 RC

±1~3%(未校准)

零

无

对时序不敏感的场合

如果系统里有 USB、以太网、CAN FD 这类对时钟敏感的总线,别省这颗晶振;如果是纯本地控制、串口通信余量足够,内部 RC 校准后也能用——但要知道它的温漂是百分比级的,不是 ppm 级。

十、工艺与来料:设计对了也可能死在产线

设计算得再准,产线上一颗助焊剂残留就能让整批产品低温不起振。

  • 清洗:免清洗助焊剂不等于可以不洗。晶振引脚间残留的离子污染物在潮湿环境下形成漏电通路,等效并联电阻下降,直接吃掉负性阻抗裕量,湿度大的地区尤其明显。
  • 回流焊:按晶振规格书的温度曲线走,无源晶振多数有 ±10℃/s 的升降温限制。手工补焊时间过长会让内部电极受损,表现为频偏或停振。
  • 机械应力:贴片晶振是机械敏感器件。分板弯折、螺丝孔附近的板弯、跌落冲击,都可能让晶体开裂或频偏漂移。晶振尽量远离板边和螺丝孔,分板用铣刀而不是折断。
  • 来料检验:至少抽检三项——标称频率与 CL、ESR(用阻抗分析仪或简易振荡电路测起振裕量)、绝缘电阻。不同批次的 ESR 差异,经常就是"这批能跑那批不能跑"的真正原因。

十一、时钟谐波与 EMC

晶振本身是低电平信号,但它的高次谐波会顺着走线辐射出去。8MHz 时钟的 12 次谐波正好落在 96MHz,如果走线长、没有包地,很容易在辐射测试里变成一条窄带超标。

整改手段不是给晶振加屏蔽罩,而是:

  • 缩短走线、包地、下方完整地平面
  • 串 Rs 抑制边沿速率(同时降低高次谐波能量)
  • 需要时在时钟输出端加 RC 或磁珠,但注意别把上升沿压得太慢,影响建立保持时间

十二、故障排查速查表

现象

首查项

常见根因

完全不起振

负性阻抗、焊接

ESR 偏大、电容选太大、虚焊、助焊剂残留漏电

起振慢(>5ms)

CL、驱动档位

32.768kHz 晶振 CL 偏大、驱动电流不足

频偏偏慢

负载电容

C1/C2 大于计算值、用了 X7R

频偏偏快

负载电容、杂散

电容偏小、探头电容影响未扣除

低温起不来

负性阻抗裕量

裕量不足 3 倍,低温 ESR 上升

高温停振

驱动电平、ESR

过驱动导致晶振特性劣化

偶发死机、通信误码

时钟精度

频偏超总线容限

RTC 走时慢

温度补偿

未做温补,音叉晶振抛物线未校正

十三、收尾清单

上板之前对着过一遍,能省掉后面一周的调试:

  • 按 CL 公式反算 C1/C2,不用参考设计里的默认值
  • 电容选 C0G/NP0,容差 ±5%
  • 核对晶振 ESR 与 MCU 驱动能力,|−R| 留 5 倍裕量
  • 需要时串 Rs,实测驱动电平不超规格
  • 晶振紧贴芯片,走线 <10mm、对称、下方地平面完整
  • 负载电容的地就近回芯片地
  • 远离 DC-DC 与高速信号 3mm 以上
  • 频率用 CLKOUT 测,不用探头直接点晶振
  • 温度与老化误差进预算,对总线协议余量
  • 首批小批量做高低温起振测试,别只测常温
  • 确认产线清洗工艺,评估助焊剂残留风险
  • 晶振远离板边与螺丝孔,分板方式确认

晶振电路的问题有个共同特点:设计阶段十分钟就能算清楚的事,调试阶段要花十天。 公式都不复杂,难的是愿意在画板子之前把 CL 和负性阻抗真的算一遍。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、负载电容:不是"两颗 22pF 随便放"
  • 二、负性阻抗:判断"能不能起振"的唯一硬指标
  • 三、驱动电平:被忽略的"慢性病"
  • 四、反馈电阻 Rf:别自己乱加
  • 五、PCB 布局:三条铁律
  • 六、测量:别拿探头直接怼晶振引脚
  • 七、温漂与老化:这笔账要提前算
  • 八、一个真实案例:32.768kHz RTC 每天慢 4 秒
  • 九、选型:无源晶振、有源晶振、TCXO 怎么选
  • 十、工艺与来料:设计对了也可能死在产线
  • 十一、时钟谐波与 EMC
  • 十二、故障排查速查表
  • 十三、收尾清单
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档