下文将进一步讲解晶振的原理,以及晶振和STM32的关系。
                     
01压电效应                                                                                                         
                                    
压电效应:某些电介质在沿一定方向上受到外力的作用而变形时,其内部会产生极化现象,同时在它的两个相对表面上出现正负相反的电荷。
                     
正压电效应:当外力去掉后,电介质又会恢复到不带电的状态。
                     
逆压电效应:当作用力的方向改变时,电荷的极性也随之改变。相反,当在电介质的极化方向上施加电场,这些电介质也会发生变形,电场去掉后,电介质的变形随之消失。
                     
当在晶体表面上施加机械压力时,与机械压力成比例的电压出现在晶体上。该电压会导致晶体失真,失真的量将与施加的电压成比例,并且还与施加在晶体上的交流电压成正比,从而导致晶体以其固有频率振动。这种压电效应会产生机械振动或振荡,可用来代替以前的振荡器中的标准LC振荡电路。
                     
下图展示了:石英晶体的等效电路是一个串联的RLC电路。
                     
                     
6FZFRb.png
                     
▲ 石英晶体等效模型
                     
                     
该电路代表晶体的机械振动,与电容Cp并联,电容Cp代表与晶体的电连接。石英晶体振荡器倾向于朝着其“串联谐振”方向运行。晶体的等效阻抗具有串联谐振,其中Cs在晶体工作频率下与电感Ls谐振。该频率称为晶体串联频率ƒs。如上图所示,除了Ls和Cs与并联电容器Cp谐振外,还有一个第二频率点是由于并联谐振而建立的第二频率点。
                     
0 2 晶体振荡器的应用                                                                                                           
                                                                                 
                                                                                                                                                                                                
                                            
晶体振荡器不仅仅是给MCU提供时钟,它在各个领域有各种应用,下面简单介绍一些晶体振荡器的应用:


科尔皮兹晶体振荡器                                                                        
                                                               
Colpitts振荡器用于产生非常高频率的正弦输出信号。该振荡器可以用作不同类型的传感器,例如温度传感器。使用Colpitts电路中的某些设备,我们可以实现更高的温度稳定性和高频。
                     
3u6bEn.png
                     
▲ 科尔皮兹晶体振荡器
                     
阿姆斯壮晶体振荡器                                                                        
                                                                                      
该电路一直流行到1940年代。这些在再生无线电接收机中被广泛使用。在该输入中,来自天线的射频信号通过一个额外的绕组磁性耦合到振荡电路中,并且减少了反馈,以在反馈环路中进行增益控制。最后,它产生了一个窄带射频滤波器和放大器。在该晶体振荡器中,LC谐振电路被反馈环路取代。
                     
AJVVRr.png
                     
▲ 阿姆斯壮晶体振荡器
                     
                                                                                              皮尔斯晶体振荡器                                                                        
                                                                        
                                                                                          
在这个简单的电路中,晶体确定振荡频率,并以其串联谐振频率工作,ƒs在输出和输入之间提供低阻抗路径。谐振时有一个180 度的相移,使反馈为正。输出正弦波的幅度限制为漏极端子的最大电压范围。
                     
jqiUVv.png
                     
▲ 皮尔斯晶体振荡器
                                             
                                                                                                                                              0                          3                                                                                                       无源晶振和有源晶振的区别                                                                                                           
                                                                                 
                                                                                                                                                                        
                                                                                                                                             
无源晶振和有源晶振的区别体现:
                                                                                                                                                      
有源晶振:不依靠外部电路,通过自身产生震荡。
                           
无源晶振:就是一个晶体振荡器,无法通过自身产生震荡。
                           
有源晶振的缺陷:与无源晶振相比,有源晶振信号电平几乎是不变的,价格方面也会更高。
                                                                                                      
                                                                           
                                                                                                                    
上面描述的还是不清晰,那么我们先看下有源晶振的结构图:
                     
2yENvy.jpeg
                     
▲ 有源晶振结构图
                     
                     
上图中XT就是晶体振荡器,其他的器件就是上文说的外部电路,这样只要给有源晶振供电,就可以产生时钟波形。
                     
而无源晶振,就是只有XT这个晶体振荡器。以STM32为例,STM32集成了上图除XT外的电路,所以我们可以接无源晶振。主要因为晶振不好集成,外挂晶振比较方便。
                     
我们可以直接看有源晶振的解剖图,可以看到晶体振荡器和外部电路。
                                                                                             
                                                                                                   
b6jYje.png
                                                                           
qyE7V3.png
                                                                                                                           
                                                                                                                    
▲ 有源晶振解剖图
                     
                     
下面看一下无源晶振的解剖图,只看到了晶振振荡器。
                                                                                                                         rM7nai.jpeg                                                                             N7vaqq.jpeg                                                                             qIzUja.jpeg                                                                         

▲ 无源晶振解剖图,左右滑动查看更多

0 4  STM32外接晶振                                                                                                           
                                    
以STM32F207为例,一般情况下外部高速时钟(HSE)我们接25M的无源晶振。在用户手册中ST提供了两种方式:
                     
zUZnYz.png
                     
▲ HSE时钟源
                     
                     
外部高速时钟(HSE)可以通过两个时钟源产生:
                     
1、外部晶体/陶瓷谐振器
                     
2、外部用户时钟
                     
在外部时钟模式中,直接向OSC_IN引脚输入25MHZ的时钟信号,OSC_OUT处于高阻态。也就是说,我们可以外接有源晶振,但是上文说到,一般有源晶振价格都会高一点,很少有外接有源晶振的案例。
                     
上面我们说到,STM32内部集成了晶体振荡器的外部电路,如果外接无源晶振,STM32理论上可以通过禁止部分电路,达到关闭外部高速时钟(HSE)的目的。
                     
事实上,在STM32F207的RCC时钟控制寄存器(RCCclock control register)的16位HSEON,用来打开或关闭HSE振荡器。
                     
yuARNv.png
                     
由软件置1和清零。
                     
由硬件清零,用于在进入停机或待机模式时停止HSE 振荡器。如果HSE 振荡器直接或间接用于作为系统时钟,则此位不可复位。
                     
BnM7Nr.png
                     
如上图,在system_stm32f2xx.c文件中,345行就是开启HSE的,我们添加343行的死循环,再去测量晶振,发现没有波形。
                     
还有另一种方法,我们使用Jlink的J-FlashARM工具,擦除全片数据,再次上电,发现没有波形。
                     
JveIry.png
                     
这也就解答了一些萌新同学的问题,硬件没有问题,测量晶振发现没有起振,以为是硬件的问题。其实下载一个正常运行(使能了RCCclock control register的HSEON位)的demo,再去测量晶振波形就行了。

本文源自微信公众号:知晓编程,不代表用户或本站观点,如有侵权,请联系nick.zong@aspencore.com 删除!