打印

ESP8266物联网开发板设计3 ——晶振起振原理

[复制链接]
1473|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大家好,我们今天继续物联网开发板硬件电路设计相关的探讨。
我们先来看晶振这块。首先,单片机是可以看成是一个高速数字电路的集合体,其中速度最快的部件就要算是中央处理器了,其余的外围部件,比如PWM模块、I2C模块、SPI模块等等速度相对慢一些。我们先看CPU,它自己需要进行计算,但是多长时间CPU及其相关寄存器的状态改变一次,必须有一个时钟信号进行配合。换句话说,晶振的频率影响或者决定了CPU的动作周期。从另外一个层面来看,各个部件之间要协同工作,这肯定是需要同步的。这个同步的动作,肯定就需要时钟的参与。

仅仅从上面两个部分来看,单片机要想高效地完成编程者设定的任务,时钟信号是不可或缺的。目前单片机的时钟信号的来源主要有两类,一类是内部的RC振荡器,另一类是外部的晶振电路。内部的RC振荡器,频率相对来说比较低,一个主要的原因是它受温度的影响比较大。主要的原因就是RC振荡器的外围电路,其实还都是半导体器件组成,而偏偏半导体器件温飘特性相对来说就是比较大。那么也就是RC振荡电路的周期就不准了,温度高的时候和温度低的时候,周期不一样。所以有些朋友家里安装的电子时钟,相对来说,时间一长,就容易不准,其实很大一部分原因就是这个产品使用的芯片内部的RC振荡器。

但是有一个器件,能够提供非常精准的震荡频率,那就是石英晶体。石英晶体是一种具有压电效应的器件,在石英晶体两个管脚添加上交变的电场时,它将会产生一定的机械变形,这种机械变形反过来又会产生交变电场。一般情况下,无论是机械震动的振幅,还是交变电场的振幅都非常小。但是,当交变电场达到某一个特定值的时候,振幅陡然增大,产生共振。这个频率,我们称之为石英晶体的谐振频率。

那么我们单片机配套的石英晶体振荡器,具体是如何起振的呢?我们只有知晓了具体的起振过程,才有可能搞清楚设计上需要注意的地方。

我们单片机上的晶振电路,本质上就是电容三点式震荡电路的改进版。那么我们要讲清楚单片机上的晶振电路,就要讲清楚以下几个问题。第一,什么是震荡电路,震荡电路起振需要满足什么条件。第二,电容三点式震荡电路怎么起振的,它怎么就满足了震荡条件了。第三,电容三点式振荡电路的改进方向是什么,石英晶体震荡器符合电容三点式振荡器的改进方向么?第四,我们单片机内部电容三点式震荡电路一般是怎么实现的,我们设计晶振电路的时候有哪些需要注意的地方。在讲解这些地方的时候,我们尽量减少公式的表达,更多的追求直观的理解,毕竟我们的目的不是去设计单片机的晶振电路。

我们说正弦波震荡电路起振的条件,主要是两个条件,一个是必须要引入正反馈,也就是说反馈信号必须要能够替代输入信号;第二个要有外加的选频网络,进而用来确定震荡的频率。我们下面来看一下,常见的电容三点式震荡电路是什么样子的。

如下图所示,图中的三极管T1是放大部分,对A点输入的信号进行了放大。同时三极管的基极和射极信号是反向的,这个是三极管本身的特性导致的。如果对这个不熟悉的话,大家可以下去看看三极管的知识。那么三极管在这里也就是提供了两个功能,一个是信号的幅值放大(当然放大的倍数可以通过调整Rc和Re等进行调节),另一个功能提供了信号的相位的反相(图中A点和B点信号)。

图中黑色虚线中的部分,就是电容三点式振荡器的选频网络。发生共振的时候,电感L1和电容C2、C3组成的LC网络,可以近似为阻抗无穷大,也就是说电感L1和电容C2、C3电流是环路电流。大家知道电容的特性,是不是电流相位超前电压90度呀。我们把C2和C3的中间点接地,C点电压超前B点90度,D点电压又超前C点90度,那么D点电压是不是超前B点180度呀。D点电压超前B点180度,那是不是说D点的波形和B点是反向的呀。D点的波形和B点是反向的,B点的波形和A点是反向的,那么D点的波形和A点是不是就是同相的。那么这里是不是既有了正反馈,又有了选频网络。那么是不是就有可能满足正弦波的震荡条件呀,只要这个电路参数得当,那么就会产生正弦波。

这个电路的反馈系数F等于C2/C3, 电压放大倍数A = β*RL’/rbe,其中RL’ = Rc//(Ri/F^2)。

我们是正弦波要能够起振,是不是 AF的值要大于1呀。如果我们通过调整C2/C3的值,就会出现一个相悖的结论,调大了F,结果A却小了。那么A和F的乘积变化的趋势反而不明朗了。实际实验中,C2/C3的值既不能太大,也不能太小,具体指只能靠测试来设定。电容三点式震荡电路,相对来说它的缺点也在于此,通过调节电容去调节频率的话,会影响起振条件,但是通过调节电感办法来调节震荡频率,实现上又会比较困难。

通过LC谐振点的公式来看,如果我们要想提高震荡的频率,只能是不断减小C2、C3以及电感L。但是C2和C3减小到一定程度的时候,比如和电路的杂散电容一个级别的时候,我们就很难确定震荡的频率了,因为杂散电容的电容值几乎很难确定。那么我们有没有其他办法来解决这个问题呢?如果我们把C2、C3电容的容值设定在远大于杂散电容,那么杂散电容对电路的影响是不是就可以忽略掉了,电路的震荡频率是不是就会相对来说非常稳定。那么问题来了,震荡的频率如何提高呢?具体的措施,就是在电感上串联一个小电容C,同时C<<C2, C<<C3, 这样震荡频率只和这个C有关,f = 1/(2πsqrt(LC))。电容C2和C3这里只是起到分压作用而已。整体的设计,如下图所示。

分析完了电容三点式震荡电路,那么我们看一下晶振怎么参与进来。因为我们前面已经提到了,我们单片机电路的晶振模块本质上也是电容三点式震荡电路。要看清楚这个问题,我们必须要了解晶振的高频模型,看看晶振的物理特性到底是什么。

实际上,晶振的高频等效模型如上图所示。这里的L,可以等效为晶振的惯性,这个值大概是几mH到几十mH。电容C等效为晶振的弹性,这个电容比较小,容值大概在0.01pF到0.1pF。R等效为晶振的摩擦损耗,这个值大概在100R,当然理想情况下这个值是零。电容C0等效为晶振的静态电容,它的大小和晶振的几何尺寸和极间面积有关,一般是几到几十个pF。那么实际上,晶振是惯性和弹性的结合体。结合我们前面提到的电容三点式振荡电路,我们更希望利用的其实是晶振的惯性部分,也就是电感部分对吧。在晶振组成的震荡电路中,震荡的稳定性主要是靠晶振本身的高Q值来稳定的,不是靠我们上面提到的那个思路,而且我们也不需要在外部震荡处那么高的频率,比如100Mhz的震荡。一般情况下,我们使用的是12Mhz的无源晶振,单片机内部的更高频次的震荡信号,是通过分频器和锁相环来实现的。

既然,我们使用的是晶振的惯性部分,那么我们就来分析一下,在什么频率下晶振会更多的呈现惯性,也就是感性。
当晶振的LCR电路发生谐振的时候,这个回路呈现纯阻性,等效电阻为R。谐振频率fs=1/(2πsqrt(LC))。当f低于fs的时候,C0这里起到主导作用,晶振呈现容性。当f大于fs的时候,LCR这条支路呈现感性。LCR这条支路将和C0发生并联谐振,谐振的频率fp = fs*sqrt(1+C/C0),这个具体的公式大家可以下去推导一下,我们这里就不再做更深入的介绍了。大家可以看一下,因为C远远小于C0,所以fs和fp是不是无限接近呀。那么也就是说晶振只有在很窄的频率范围内,才会呈现感性。

回到我们前面提到的电容三点式震荡电路,晶振只在一个很窄的范围内呈现感性,而且受温度的影响比较小。那么是不是说用晶振组成的三点式震荡电路,它的频率会非常稳定呀。具体电路设计如下图所示。那这样,我们使用晶振搭建的电容三点式震荡电路就算完成了。

那么下一个任务就要回答,单片机中的晶振电路一般是如何实现的呢?我们以80C51来距离,它震荡电路的框图大概是下面这个样子。

我们大体可以把这个反相器等效成一个三极管,外部晶振和电容组成的单元完成了选频和信号的相移。反相器输入端的信号是流经R1的电压信号和流经R2的信号的叠加,R1和R2这里可以看成一个是正反馈电阻和一个正反馈电阻,这两个电阻在这里应该是起到限幅的作用的。有了正反馈,有了选频网络,有了限幅模块,那么我们的晶振电路是不是就可以输出正弦波信号了呀。

上面我们花了较大篇幅讲解了晶振的起振原理,那么了解这些东西对我们设计晶振模块有什么指导意义呢?

比如有时候,我们这两个电容不焊接,晶振也能起振。那这是为什么呢?通过我们前面的分析,晶振起振必须要有这两个电容的参与是吧,要不然无法实现选频和信号反向。但是这里究竟是为什么呢?主要的原因就是因为其实对于C1和C2来说,本身这两个电容就很小,比如我们常用的一般是12pF,15pF等等。有时候,杂散电容就会接近这个级别。那么这个时候,晶振也会起振。但是大家注意呀,这种情况下,晶振起振只是特殊情况呀。我们不能通过这种方式去节省成本。

电容C1两端的电压对反相器的输入起到比较重要的作用。如果C1过大,同样的电流加在C1上的电压信号是不成就变小了,这是不是相当于反馈信号变弱了?其实这个对晶振起振是相当不利的。反过来说,如果C1过小,它本身存储的能量也就小,也就更容易受到外界的干扰。C2的作用和C1正好相反。那么在布板的时候,如果是双面板,而且比较厚的话,分布电容影响还不大。如果是高密度多层板,那么就需要考虑分布电容的影响了。因此对于环境相对比较复杂的工控类的项目,建议最好不用使用无源晶体振荡器,选择有源的晶振就可以了。











使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

968

主题

2962

帖子

7

粉丝