在单片机中晶振是普遍存在的。晶振为什么如此必要,原因在于单片机能否正常工作的必要条件之一就是时钟电路。晶振好比单片机的心脏,如果没有心脏起跳,单片机无法工作。当然,电子电路设计并非速度越快越好,实际上是速度够用就好晶振,速度越快越容易受干扰,也容易成为影响外界的干扰源。
晶振为何要接两个电容?
晶振,全称是石英晶体振荡器,是一种高精度和高稳定度的振荡器。石英晶片所以能做振荡电路(谐振)是基于它的压电效应。当在晶振极板间施加交变电压时,就会迫使晶振产生机械变形振动,同时晶振的机械变形振动又会反过来产生交变电场。当外加交变电压的频率与晶片的固有频率(决定于晶片的尺寸)相等时,晶振及电路产生稳定的机械谐振和电气谐振。其特点是频率稳定度很高。
在电气上晶振可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。
晶振物理模型
由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振呈现为感性,简单理解就是等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数有变化,这个振荡器的频率也能保持相对的稳定,展现出高Q值。晶振在通过一定的外接电路生成频率和峰值稳定的正弦波晶振,该正弦波在单片机内部调理电路整形下成为方波,作为单片机内部时序电路工作的时钟信号。
晶振电路常用设计方法
晶振电路有多种设计方法,在单片机设计电路经常使用的是皮尔斯振荡电路,具体电路如下图所示。
皮尔斯振荡电路
晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。
我们在设计的时候经常会看见MCU的管脚有OSC1和OSC2,一般会连两个电容CL1和CL2,CL1和CL2是否就是负载电容呢?其实它们只是负载电容的一部分,而且大家要注意到,CL1和CL2从晶振来看它们是串联的,只不过它们之间有一个公共点接地。真正的负载是CL1和CL2,MCU OSC1/OSC2这两个管脚自身对地的寄生电容COSC1,COSC2,MCUOSC1/OSC2这两个管脚之间的杂散电容CS,还有一个是晶振本身的C0,这几部分共同组成了真正的负载,如下图所示(只在此图中画出COSC1,COSC2,CS,其他图中就不再详细画出这几个电容了)。
晶振电路负载电容示意
并联COSC1,COSC2一般在3~5pf,CS有1~5pf(和PCB制造相关),C0也有1~2pf,也就是说,即使不连接CL1和CL2晶振电路的拓扑也是完整的,而且已经有了一定的电容负载,这也就是用户会发现即使没有连接CL1和CL2,电路往往也是能起振的原因。如果晶振总体负载容值偏差大了会怎样呢?会带来两个问题,一个是影响稳定裕量,另一个是影响晶振的精度。
我们在电路设计时,要尽量使整个晶振电路靠近MCU,同时要尽量避免在晶振电路旁有其他高频信号、大电流的信号,以及有较长走线的信号,从而保证晶振工作时有较小的负载、正确的拓扑,和相对稳定的电磁工作环境。在电路设计中有很多规则,而且这些规则往往是不可能同时满足的,需要特别注意的是,晶振电路的设计规则应该被优先保证。
振荡器电路设计的一个关键点是要晶振能够稳定工作。STM32有相关文档来讲解晶振裕量是如何计算的,文档里有很多公式,但在实际使用中可能无法通过公式准确计算,因为许多参数例如杂散电容无法真正测量出来,生产的工艺、制造的水准及器件本身的离散性都导致这些公式只具有理论指导性意义。