产品量产了,抽检发现总有那么几台机器上电后MCU不跑,按一下复位键又能正常启动。换一颗晶振就好了,过几天又出现同样的故障。产线上隔三差五返工,良率就是上不去。排查到最后发现问题出在晶振电路上——负载电容选错了、PCB走线不合理、反馈电阻漏了,几个小问题叠加在一起,振荡余量不够,温度一变化或者批次一换就起不来。晶振电路看起来简单,就一颗晶体两个电容,但偏偏是最容易被忽视、出问题又最难定位的部分。
一、晶振为什么不起振
1、振荡条件没满足
晶振电路要正常起振,必须满足两个条件:环路增益大于1、环路相移为360度的整数倍。说白了,放大器提供的增益要大于晶振网络的损耗,同时信号绕一圈回来相位要对得上。晶振本身在谐振频率附近等效为一个高Q值的LC网络,对频率的选择性极强,但对增益的要求也很严格。如果电路增益裕量不够,常温下勉强能起振,温度变化或者晶振参数离散性一来,就可能起不来。
2、负电阻不足——最容易被忽略的指标
负电阻是衡量振荡电路驱动能力的核心参数。MCU内部的放大器等效为一个负电阻串联电抗,负电阻越大,驱动能力越强。晶振本身有一个等效串联电阻ESR,负电阻必须大于ESR的3到5倍,才能保证在各种条件下可靠起振。很多工程师从来不计算负电阻,直接按数据手册的典型值选电容,结果遇到ESR偏大的晶振批次就翻车。负电阻不够,你看到的症状就是偶发不起振——有时候行有时候不行,跟抽奖一样。
二、常见设计误区逐一拆解
1、负载电容计算错误
晶振的负载电容CL和实际电路中的外部电容关系是:CL = (C1 × C2)/(C1 + C2) + Cs,其中Cs是PCB和引脚的杂散电容,一般取3到7pF。很多工程师只算C1和C2的串联值,忘了加Cs,导致实际负载电容偏大,振荡频率偏低。更常见的是C1和C2选得不一样大——虽然理论上可以不等,但差异过大会导致晶振两端波形不对称,影响起振余量。
还有一个坑:晶振规格书上标的负载电容是12.5pF,你算了C1=C2=18pF(考虑5pF杂散),但实际PCB的杂散电容可能到8pF甚至10pF,实际CL就到了17pF以上,远远偏离了12.5pF。频率偏了,MCU的USB或以太网可能就通信不上了。
2、反馈电阻漏接或者选错
皮尔斯振荡器需要一个反馈电阻跨接在晶振两端,作用是给内部放大器提供直流偏置,让放大器工作在线性区。没有这个电阻,放大器可能卡在饱和区或者截止区,不起振。有些MCU内部集成了这个电阻,但有些没有——数据手册里写得清清楚楚,偏偏很多人不看。外部反馈电阻一般选1MΩ到10MΩ,阻值太小会增加功耗和降低Q值,阻值太大在潮湿环境下容易受漏电流影响。
3、PCB布局的不当
晶振走线是整个PCB上最敏感的信号之一,但很多人布局的时候根本不当回事。常见的错误包括:晶振走线太长、走线经过噪声源附近、负载电容离晶振引脚太远、地平面不完整。这些错误都会增加杂散电容和引入噪声,降低振荡裕量。
正确的做法是:晶振尽量靠近MCU引脚,走线最短,两个负载电容紧贴晶振引脚放置且共地到同一点,晶振正下方不要走其他信号线,最好有完整的地平面隔离。这些不是高深技巧,是基本的布局原则,但不做和做的差别可能就是99%良率和100%良率的差距。
4、驱动功率超标
晶振有一个最大驱动功率的限制,通常在100μW到300μW之间。如果电路提供的驱动功率超过这个值,晶振内部石英晶片会过度振动,加速老化甚至损坏。表现出来的症状就是用了一段时间后频率漂移加大,最终不起振。驱动功率过大往往和负载电容选得太小有关——电容小了,反馈量增大,晶振上的电压摆幅就更大。有些工程师为了让频率更准刻意减小负载电容,结果驱动功率超了,得不偿失。
三、如何验证晶振电路的可靠性
1、测量负电阻
在晶振支路串联一个可变电阻,逐渐增大阻值直到刚好不起振,这个阻值就是负电阻的大小。负电阻应该至少是晶振ESR的3到5倍。如果测出来只有1到2倍,说明裕量不够,量产一定会出问题。
2、高低温起振测试
在产品的工作温度范围内做高低温起振测试,每个温度点重复上电至少50次。常温下能起振不代表低温也能,MCU的增益会随温度变化,晶振的ESR也会变大。这个测试在量产前一定要做,否则到了客户那边出问题就晚了。
3、晶振批次验证
不同批次的晶振ESR可能有差异,尤其是更换供应商之后。量产前至少用两个批次的晶振做验证,确保负电阻裕量不会因为批次差异而不足。
晶振电路是硬件设计中最容易被低估的部分。两颗电容一个晶体的外表下,藏着负电阻裕量、负载电容精度、PCB寄生参数、驱动功率限制这一系列需要精确把控的细节。不起振的问题往往不是单一原因造成的,而是多个小问题叠加的结果——电容差2pF、走线长5mm、反馈电阻漏了、杂散电容偏大,单独看每个都不致命,合在一起就把振荡裕量吃光了。设计阶段多算一步,量产阶段少返工一批,这笔账怎么算都划算。