概述
在单片机使用过程中第一步就是选择单片机的时钟源,常常可以看到如下的电路原理图:
此原理图中使用晶振连接到XTALIN引脚和XTALOUT引脚,给单片机提供时钟频率,下面就来详细分析一下这种电路的工作原理。
单片机的时钟来源一般有以下几种:
1、通过单片机的CLKIN引脚由外部时钟源直接给单片机输入一个方波时钟。
2、像上图所示那样由外部晶振连接单片机的XTALIN引脚和XTALOUT引脚,跟单片机内部的震荡电路一起组成一个时钟源,通常这种时钟源叫做crystal oscillator (SysOsc),这种时钟源的精度可以到达很高一般用ppm来表示外部晶振的误差。这种振荡器由外部晶振决定频率,振荡器的最大特点就是频率稳定度高。凡是频率的精度和稳定度要求较高的系统都采用石英晶体振荡器,如电子表、计算机的主时钟、高精密度的信号产生器、所有通信系统的主振荡源等
3、internal RC Oscillator (IRC)内部时钟源,通常是一个固定的频率,比如12M,这种时钟的精度可以达到±1.5%。当通信速率比较高的时候,比如串口用115200的波特率进行通信,这时候如果IRC时钟通信就会出现误码;当把通信速率降低,比如2400波特率的时候就能通信正常,所以在高速通信的时候还是需要用到上面第2种时钟源。
4、单片机的专用时钟源,比如dedicated Watchdog Oscillator (WDOsc)专用于看门狗电路的时钟,用于单片机唤醒的定时器的时钟(internal low-power, low-frequency Oscillato),这种时钟源的精度不高,通常只有±40%的精度。
下图是一个单片机NXP824的时钟资源:
将内部IRC时钟通过切换矩阵SWM 切换到输出pin脚CLKOUT,通过示波器可以看到如下的波形,显示IRC时钟位12M。
void CLKOutInit (void)
{
LPC_SWM->PINASSIGN[11] = (LPC_SWM->PINASSIGN[11] & (~(0xFF << 16))) |
(CLKOUT << 16); /* 分配CLKOUT到管脚P0_7 */
/*
* CLKOUTSEL配置
* >bit[1:0] 0x0 IRC oscillator 0x1 Crystal oscillator(SYSOSC)
* 0x2 WDT oscillator 0x3 Main Clock
* >bit[31:2] Reserved
*/
LPC_SYSCON->CLKOUTSEL = 3; /* CLKOUT源选择:MAINCLK */
LPC_SYSCON->CLKOUTUEN = 1; /* 更新CLKOUT时钟源 */
while (!(LPC_SYSCON->CLKOUTUEN & 0x01));
LPC_SYSCON->CLKOUTDIV = 24; /* CLKOUT输出分配系数:24 */
}
由上可知,单片机的时钟源都是由震荡器产生的,下面从网络上收集并整理的资料,主要是加深对震荡电路的理解。
一般晶振分为两种:有源晶振、无源晶振。有源晶振也叫晶体振荡器,Oscillator;无源晶振有时也叫无源晶体,Crystal,晶体谐振器。至于哪个名字更专业、更准确,我觉得无需争论,名字只是代号而已,大家工作中沟通能知道说的是什么就行。简单来说,有源晶振自己供上电就能输出振荡信号;无源晶体必须额外增加电路才能振荡起来。无源晶振=晶体=谐振器=crystal,有源晶振=晶振=振荡器=oscillator。
以上分类是从使用角度来说的,如果我们单看晶振的内部构造,就会发现有源晶振内部是包含了一个无源晶振,然后再将阻容、放大等电路也包含进去,整体封装好再给我们用。 有源晶振内部构造包含了无源晶振,所以一般来说,有源晶振比无源晶振要贵。另一方面,我们只要了解了无源晶振的特性,有源晶振也就差不多了。毕竟,有源晶振可以看成是无源晶振做成的一个具体电路,供上电就能输出振荡信号了。所以,下面我们就只看无源晶振(晶体谐振器)。如上图所示LFXIN和LFXOUT内部电路有一个反向器,在上电的瞬间就在外部晶振上施加反向电压,反向电压就会使晶体产生逆压电效应,晶振就可以起振了。
首先,晶体谐振器里面的晶体指的是石英晶体,化学式是二氧化硅SiO2。石英的特点是:热膨胀系数小、Q值高、绝缘等。石英可以做成晶体谐振器,主要是利用了压电效应。压电效应又分为正压电效应和逆压电效应,以下是百度百科对其的定义:
意思对应下图:
晶体的构造示意图如下:
上图左边是晶体构造的示意图,右边是我们常见的晶振的符号,二者是不是很像?根据对前面压电效应的理解,晶体可以将电能转化为机械能,然后机械能又能转化为电能。如果给晶体通上交流电,那不就是一会儿收缩,一会儿膨胀,这不就是机械振动吗?我们知道,机械振动的物理尺寸和结构固定之后,它本身一般就有一个固有的振动频率。当外加信号的频率与固有振动频率相等时,就会发生共振,产生谐振现象。显然,晶振的频率,应该说的就是这个固有振荡频率。再从无源晶体也叫“晶体谐振器”,此处的“谐振”应该就是这个意思吧。除此之外,既然工作原理是机械振动,那么性能自然跟晶体的尺寸和结构有着非常大的关系。这方面我也查了一下,确实如此。
晶振频率与切片厚度,切割工艺的关系:切割工艺,就是对晶体坐标轴某种角度去切割。切型有非常多的种类,因为石英是各向异性的,所以不同的切型其物理性质不同。切面的方向与主轴的夹角对其性能有着非常重要的影响,比如频率稳定性、Q值、温度性能等。
常见的切割类型有两种:AT和BT切。同种频率的晶振,AT切比BT切的温度系数要小,切片厚度要薄,但是Q值比BT切要低。下面是晶体频率同切片厚度、切割类型的关系:
一般晶振手册中也会给出切割类型,不知道大家有没有关注过这个参数呢?
特殊的晶振——32.768Khz,从上图可以看出,AT切的20Mhz晶振的切片很薄,只有0.083mm,但是频率降低到32.768Khz,如果还是AT切,那么厚度就是0.083mm*20Mhz/32.768Khz=50.66mm。
显然,这个尺寸太大了!
晶体振荡器设计原理
1.1、振荡器的分类
1.2、振荡产生的原理
1.2.1、自激振荡的产生
1.2.2、产生振荡的条件
1.3、起振和振幅
1.3.1、起振过程
1.3.2、振幅的稳定
最后
以上就是结实鞋垫为你收集整理的由单片机XTALIN引脚和XTALOUT引脚导出的对晶体震荡电路的深入理解晶体振荡器设计原理1.2、振荡产生的原理1.2.2、产生振荡的条件 1.3、起振和振幅 1.3.1、起振过程1.3.2、振幅的稳定 的全部内容,希望文章能够帮你解决由单片机XTALIN引脚和XTALOUT引脚导出的对晶体震荡电路的深入理解晶体振荡器设计原理1.2、振荡产生的原理1.2.2、产生振荡的条件 1.3、起振和振幅 1.3.1、起振过程1.3.2、振幅的稳定 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复