晶振(晶体振荡器)虽然个头小、电路简单,但在电子系统里的作用不可替代——它是整个数字电路的心脏,所有时序逻辑的节拍都由它来提供。晶振出了问题,轻则系统不稳定、时快时慢,重则完全不工作。看似简单的晶振电路,选型、外围元件计算、PCB布局都有讲究,不少工程师在这上面踩过坑。
晶振的种类按封装分有插件晶振(HC-49系列)和贴片晶振(SMD系列),按频率特性分有普通晶振、TCXO(温度补偿)、VCXO(压控)、OCXO(恒温)。普通晶振便宜,频稳度一般(±20ppm到±100ppm),适合对时间精度要求不高的场景(比如MCU、时钟芯片、WiFi模块)。TCXO频稳度好很多(±1ppm到±5ppm),价格也贵,适合移动通信、GPS定位这些对时钟精度要求高的场合。OCXO是高端货,频稳度可以到±0.001ppm,常用在基站、卫星通信这些对时钟精度有极高要求的地方,价格也贵(一个几百上千块)。
选晶振的时候主要看几个参数。第一个是标称频率,要跟芯片的数据手册要求的一致,比如STM32F1系列需要8MHz的外部晶振,STM32F4可以用8MHz或16MHz。第二个是频稳度,根据应用场景来选,普通应用选±20ppm到±50ppm就够了。第三个是负载电容,这个参数很重要,晶振电路需要合适的负载电容才能正常起振、振荡频率才准。负载电容CL的计算公式是CL = C1 * C2 / (C1 + C2) + Cstray,其中C1、C2是外接的两个负载电容,Cstray是PCB走线和芯片引脚的寄生电容,一般按3pF到5pF估算。
很多新手不知道怎么算负载电容,直接用 datasheet 里推荐的典型值,这样也可以,但如果实测频率不准(偏高或偏低),就要调整负载电容。频率偏低说明负载电容偏小,要适当加大;频率偏高说明负载电容偏大,要减小。调整的时候不要一下改太多,每次改2pF到5pF,用频率计数器或者示波器测晶振输出频率,慢慢调到标称值附近。
晶振电路里的一个常见坑是晶振不起振。板子焊好后发现芯片不工作,用示波器测晶振引脚没有振荡波形,多半是不起振。原因可能有几种:负载电容不对,太大或太小都会导致不起振;晶振方向焊反了(贴片晶振有的有方向性);芯片内部的振荡器电路没配置好;或者PCB布局太差,走线太长寄生电容太大。排查的时候先量芯片电源和复位引脚有没有正常电平,然后用示波器测晶振的两个引脚(注意要用10x探头,别干扰振荡),如果两个引脚都是直流电平没有交流振荡,就是没起振。
PCB布局对晶振电路影响很大。首先,晶振要尽量靠近芯片的晶振引脚,走线越短越好,长走线会引入额外的寄生电容和电感,可能影响起振条件或者导致频率偏移。其次,晶振下方和周围要铺完整的地平面,不要挖槽,不要走其他信号线。第三,晶振的两个引脚走线长度尽量相等,这样两边的寄生电容更对称。第四,负载电容要紧贴晶振的引脚放置,不要离得太远。有些高精度应用还会要求晶振外壳接地,金属外壳如果悬空反而会成为天线辐射高频干扰。
有源晶振和无源晶振的区别也是常被问到的。无源晶振就是一个纯晶体,需要配合芯片内部的振荡器电路才能工作,成本低但需要计算负载电容。有源晶振(也叫OSC)内部已经集成了振荡器电路,只需要供电就能输出稳定的时钟信号,使用简单、频率更准,但成本更高。现在很多高端芯片(比如FPGA、高速MCU)推荐用有源晶振,因为它们对时钟源的要求更高,无源晶振容易受内部振荡器电路参数的影响。
还有一个容易忽视的点是时钟缓冲器。如果一个晶振要同时给多个芯片提供时钟,比如主控制器和MCU都需要同一个时钟,不要直接并联,最好用一个时钟缓冲器(比如74HC04、74HC1G04)来分别驱动。直接并联会导致负载过大,可能影响晶振正常振荡,而且不同芯片的输入阻抗和寄生电容不一样,互相影响会导致时钟边沿变差。时钟缓冲器可以起到隔离作用,让每个芯片都得到干净的时钟信号。
下一篇:没有了