当前位置:首页 > 行业资料 > 冶金工业 > 02何配置和使用内部及外部振荡器
C8051FMCU应用笔记SiliconLaboratoriesInc.新华龙电子有限公司4635BostonLane深圳市福田区华强北路现代之窗大厦A座13FC室(518013)Austin,TX787350755-83645240836452428364524483645251AN002—配置内部和外部振荡器SYSCLKXTAL1XTAL2OSCOSCXCNENRCCMOSVDDCXTAL1XTAL2XTAL1XTAL1OSCICNAGND晶体输入电路内部时钟振荡器引言本应用笔记的目的是介绍如何配置和使用内部及外部振荡器。本文提供了配置说明、应用举例和示例代码。关键点在器件复位时内部振荡器被自动允许,并选择工作于1.9MHz。系统时钟可以很容易地在内部振荡器和外部振荡器之间进行切换。选择外部振荡器作为系统时钟和禁止内部振荡器可以在同一个写操作内完成。如果外部振荡器被停止,在同一个写操作可以允许内部振荡器和选择内部振荡器作为系统时钟。在使用内部振荡器作为系统时钟的情况下,允许改变内部振荡器的频率。在所有的振荡器方式中,/SYSCLK是系统时钟的缓冲输出,可以在交叉开关中允许其输出到电话:Email:mcuinfo@silabs.com(版权所有)电邮:shenzhen@xhl.com.cnInternet:网址:—配置内部和外部振荡器输出端口引脚。如果时钟丢失检测器被允许,将在系统时钟频率降到10kHz左右时产生复位。晶体振荡器有效标志可以用于在晶体振荡器稳定后产生中断,这样可以让中断处理程序将时钟切换外部振荡器。配置说明除了具有高度可配置性外,C8051的振荡器还具有灵活和易于使用的特点。系统时钟可以自由地在内部振荡器和外部振荡器之间进行切换。并且也可以在选择内部振荡器时让外部振荡器保持在允许状态,这样可以避免在系统时钟被切换到外部振荡器时的启动延迟。外部振荡器具有很高的可配置性,为系统设置者提供了多种选择。时基信号可以从外部CMOS电平时钟源、晶体或陶瓷谐振器、RC组合电路或外部电容获得。内部和外部振荡器的工作受两个SFR寄存器控制,即OSCICN(内部振荡器控制寄存器)和OSCXCN(外部振荡器控制寄存器)。图7和图8分别给出了这两个寄存器的说明。内部振荡器在系统复位时,内部振荡器被选为系统时钟并工作在1.9MHz。内部振荡器可以被编程为表1中所示的四种频率之一。内部振荡器的频率可以在运行中切换‘频率改变只需要几个系统周期。如果工作频率对于改变振荡器操作之后的指令是很重要的话,可以查询IFRDY(内部振荡器频率准备好标志,OSCICN.4)。内部振荡器本身的功耗与所选择的频率无关,但是整个器件的功耗所选择的频率有关。随着工艺、供电电压及温度的不同,内部振荡器的精度在±20%。外部CMOS时钟系统时钟可以由一个接到XTAL1脚的外部CMOS电平时钟源提供,例如晶体振荡器模块或来自另一个微控制器的时钟。外部晶体通常在需要一个精确的时基信号才会选择晶体,例如ADC的绝对采样速率比较关键,或需要用于产生一个标准UART波特率时。一个替换方案是用一个低频率的音叉晶体例如32.768kHz钟表晶体,使器件工作在低功耗方式,当系统需要时再切换到高频率的内部振荡器。外部RC时间基准还可以通过一个外部串连RC电路获得。在这种配置下,电容通过电阻充电,直到XTAL1的电压达到(1/3)*AV+,此时XTAL1被接地,使电容放电。这种工作方式在XTAL1脚产生一个锯齿波,其周期主要由电容两端电压的上升时间决定;对于一个100pF的电容,放电时间小于10nS。该信号经过缓冲后被送到一个二分频器,分频器的输出作为系统时钟。在外部RC方式下时基的精度主要由R和C元件的误差决定。2AN02-1AN002—配置内部和外部振荡器外部电容该方式与上述的外部RC方式相似,区别在于该方式下电容的充电电流由接到XTAL2的内部可编程电流源提供。这是精度昀差的一种时基方式;也是昀灵活的一种方式,因为只用一个元件值可提供八种不同的工作频率,昀高频率几乎可达到昀低频率的3000倍。外部电容方式下的时基精度主要由电容的误差和流过XTAL2的内部电流源的精度决定。内部电流源的精度大约在±30%,随着工艺、供电电压及温度的不同而变化。表1.内部振荡器频率选择IFCN[1:0]标称频率001.9MHz013.8MHz107.5MHz1115MHz配置举例下面是振荡器配置的几个例子。内部振荡器复位后,内部振荡器工作在1.9MHz并被选为系统时钟。如果系统设计只使用内部振荡器而不使用外部振荡器,XTAL1脚应如图1所示那样从外部接地或通过将XOSCMD位(OSCXCN.6-4)设置为‘000’从内部接地。如果系统需要/RST引脚长时间保持低电平,则建议将XTAL1从外部接地。用IFCN位(OSCICN.1-0)对内部振荡器编程。如表1所示,有四种频率可供选择。在振荡器频率发生改变后,IFRDY(内部振荡器频率准备好,OSCICN.4)标志变为低电平,表示振荡器频率尚未达到其编程值。一旦振荡器频率稳定在它的昀新编程频率,IFRDY将变为高电平。内部振荡器的启动几乎是瞬时完成的。内部振荡器的频率可以随意改变,而且内部振荡器可以在几个时钟周期内稳定到它的昀新编程频率。因此,如果对于一个应用来说绝对频率不是很重要的话,不需要对IFRDY位进行查询。外部振荡器该系列器件支持四种不同的外部振荡器配置:外部CMOS驱动器、外部晶体或陶瓷谐振器、外部RC网络和外部电容。为了允许外部振荡器,首先应配置OSCXCN,即外部振荡器配置寄存器,然后将CLKSL置‘1’(OSCICN.3)以选择外部振荡器作为系统时钟。在基于晶体的设计中,由于晶体振荡器的启动需要几个毫秒的时间,所以需要在将CLKSLAN02-13AN002—配置内部和外部振荡器置‘1’之前等待XTLVLD(晶体振荡器有效标志,OSCXCN7.7)变为高电平(表示外部振荡器已经稳定)。在外部RC和外部电容方式下,外部振荡器的启动是瞬时完成的。外部CMOS驱动器主时钟可以由一个接到XTAL1输入脚的外部CMOS电平时钟源提供。在这种配置下,XTAL2应悬空,如图2所示。另外,XOSCMD位应设置为‘010’以直接使用输入频率,或设置为‘011’以允许二分频器。注:与I/O端口引脚不同,XTAL1、XTAL2不是5V兼容的,XTAL1的电压应保持在AV+和AGND之间。注:如果XOSCMD被设置为‘1xx’,XTLVLD标志可以用于检测外部CMOS振荡器。XTAL1XTAL2AGND内部振荡器图1.外部CMOS时钟连接外部晶体主时钟可以通过将一个晶体或陶瓷谐振器并接XTAL1和XTAL2而得到。这种配置需要将XOSCMD设置为‘110’以直接使用晶体频率,或设置为‘111’以允许二分频器,并且要根据晶体频率、等效负载电容和晶体的等效串连电阻(ESR)来设置XFCN。图3给出了使用外部晶体的系统配置。注意,负载电容应接到模拟地平面。还应该注意晶体振荡器反向器的反馈电阻已在片内提供,不需要外接电阻。应查询OSCXCN中的XTLVLD(晶体振荡器有效)位(或用该位产生中断),判断晶体振荡器频率是否稳定。一旦XTLVLD变为高电平,CLKSL(OSCICN.3)可以被置‘1’以使用外部振荡器作为系统时钟。4AN02-1AN002—配置内部和外部振荡器XTAL1XTAL2AGNDX1Cx1Cx210M外部晶体图3.外部晶体连接确定XFCNXFCN控制晶体振荡器驱动器的驱动电平。一般来说,驱动电平应足够强以保证晶体起振。但过强可能导致晶体性能过早变坏。对于3MHz以上的晶体,如果XFCN设置的很高,对晶体的寿命没有多大影响,可以使用昀大的XFCN值,尽管这可能导致晶体振荡器消耗更多的工作电流。对于低频音叉晶体,例如32.768kHz或100kHz,过强的驱动可能产生稳定性问题。此外,如果驱动电平过高音叉晶体可能根本就不能起振。如果在设计中使用一个标称负载电容为20pF左右的石英晶体,用表2的“频率范围”列可以快速确定XFCN,该列也适应于低频音叉晶体和大多数陶瓷谐振器。功率系数可以按下例所示那样进行计算。方程1给出了晶体起振所需要的功率系数(PF)。方程1.功率系数PF=5*ESR*f2*CL2其中:PF=功率系数ESR=晶体(或陶瓷谐振器)的等效串连电阻,以欧姆为单位f=晶体频率,以MHz为单位CL=等效负载电容,以pF为单位ESR可以从晶体的数据表中找到。频率是已知的,为所选晶体的频率。等效负载电容必须按方程2所示进行计算。AN02-15AN002—配置内部和外部振荡器表2.功率系数与XFCN的关系(晶体方式)XFCN功率系数频率范围(*)00090(103)15kHz–400kHz001280(103)400kHz–1MHz010810(103)1MHz–2MHz0112.30(106)2MHz–4MHz1006.30(106)4MHz–6MHz10120.4(106)6MHz–12MHz11036.6(106)12MHz–20MHz111110(106)20MHz–30MHz*对于负载电容为20pF的晶体等效负载电容是XTAL1和XTAL2两端的总电容值。这一电容值主要由晶体的并联电容(在大多数的晶体数据手册中被称为‘CO’)、外加的附载电容(CX1和CX2)和电路板导线与器件引脚(Cp1和Cp2)之间的寄生电容决定,见图4。XTAL1XTAL2Cx1Cx2Cp1Cp2X1图4.负载电容连接图从XTAL1和XTAL2引脚看,Co与CX1和CX2的串连组合相并联,也与Cp1、Cp2的串连组合相并联。假设CX1=CX2(在采用晶体的设计中通常如此)和Cp1=Cp2(如果PCB布线具有相同的长度和形状),我们有:方程2.负载电容CL=½*(Cx1+Cp1)+Co其中:CL=总负载电容,以pF为单位Cx1=以pF表示的外加电容值Cp1=以pF表示的寄生电容值6AN02-1AN002—配置内部和外部振荡器Co=以pF表示的晶体并联电容值。对于短的电路连线,Cp的典型值为2到5pF。我们通过几个例子来说明如何计算PF:晶体示例:11.0592MHz我们以ECS(ECSp/n:ECS-110.5-20-1,)的11.0592MHz晶体为例,数据手册中给出该器件昀大ESR为30Ω,并联电容为7.0pF。该晶体要求接一个20pF的负载电容。该“负载电容”被定义为晶体两端的总电容,不包括晶体本身的并联电容。假设晶体两端的总寄生电容为3pF(Cp1和Cp2均为6pF),则Cx1和Cx2应为(20-3)*2~33pF。为了得到功率系数方程中的CL,我们在晶体并联电容的基础上加入:CL=½*(6+33)+7~27pF功率系数方程变为:PF=5*30Ω*(11.0592)2*(27)2=13*106我们的目的是将XFCN设置为昀小功率系数,该系数应至少等于上述方程的计算值。在表2中我们发现两个相近的值:6.30E+6和20.4E+6,根据上述原则将XFCN的值设为‘101’。晶体示例:32.768kHz晶体振荡器驱动器能驱动适用于低功耗运用的低频音叉晶体。在本例中我们使用一个ECS(ECSp/n:ECS-.327.12.5-8)的32.768MHz的时钟晶体。数据手册中给出的ESR为35kΩ,负载电容为12.5pF,固有并联电容为1.6pF。我们仍然假设寄生负载电容为3pF。CL=½*(6+18)+1.6~14pF功率系数方程变为:PF=5*35000Ω*(0.032768)2*(14)2~36.8*103从表2中我们查到功率系数90*103是足够强的,这样XFCN值为‘000’。晶体示例:20.00MHz使用一个20MHz的晶体,ESR为30Ω,负载电容为20pF,并联电容为5pF。我们有:CL=½*(6+33)+5~25pFPF=5*30Ω*(
本文标题:02何配置和使用内部及外部振荡器
链接地址:https://www.777doc.com/doc-310161 .html