MSP430根据型号的不同最多可以选择使用3个振荡器。我们可以根据需要选择合适的振荡频率,并可以在不需要时随时关闭振荡器,以节省功耗。这3个振荡器分别为:
(1)DCO 数控RC振荡器。它在芯片内部,不用时可以关闭。DCO的振荡频率会受周围环境温度和MSP430工作电压的影响,且同一型号的芯片所产生的频率也不相同。但DCO的调节功能可以改善它的性能,他的调节分为以下3步:a:选择BCSCTL1.RSELx确定时钟的标称频率;b:选择DCOCTL.DCOx在标称频率基础上分段粗调;c:选择DCOCTL.MODx的值进行细调。
在430F2系列中DCO(最大16MHz)设置如下:
BCSCTL1 =CALBC1_8MHZ; //设定DCO为1MHZ
DCOCTL = CALDCO_8MHZ; //CALBC1_XMHZ和CALDCO_XMHZ共8个数据保存在Flash信息存储器Segment段0x10F8~0x10FF地址中。共可设置1,8,12,16MHZ。
(2)LFXT1 接低频振荡器。典型为接32768HZ的时钟振荡器,在LF模式(XTS=0),直接连接在XIN与XOUT之间,此时振荡器不需要接负载电容,软件控制XCAPx位来设置LF模式下内部提供的负载电容。可选1、6、10、12.5pF。在HF模式(XTS=1),可以接450KHZ~8MHZ的标准晶体振荡器,此时需要接负载电容.LXFT1产生的频率信号为ACLK.低速时钟需要上百毫秒的建立时间才能稳定下来.
F2xx增加了一个新的超低功耗晶振VLO(12kHz),具有500nA的待机模式。他的使用与LFXT1互斥。BCSCTL3|=LFXT1S1;//ACLK来源于VLO
(3)XT2 接450KHZ~8MHZ的标准晶体振荡器。外部标准晶体振荡器接在XT2IN和XT2OUT之间,此时需要接负载电容,不用时可以关闭。
低频振荡器主要用来降低能量消耗,如使用电池供电的系统,高频振荡器用来对事件做出快速反应或者供CPU进行大量运算。
MSP430的3种时钟信号:MCLK系统主时钟;SMCLK系统子时钟;ACLK辅助时钟。
(1)MCLK系统主时钟。除了CPU运算使用此时钟以外,外围模块也可以使用。MCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。
(2)SMCLK系统子时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。SMCLK可以XT2CLK或者DCOCLK振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。
(3)ACLK辅助时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。但ACLK只能由LFXT1进行1、2、4、8分频作为信号源。可以作为后台时钟用来唤醒CPU.
PUC复位后,MCLK和SMCLK的信号源为DCO,DCO的振荡频率为800K或1MHZ。ACLK的信号源为LFXT1。
MSP430内部含有晶体振荡器失效监测电路,当时钟信号丢失50us时,监测电路捕捉到振荡器失效。监测LFXT1(工作在高频模式或低频模式)和XT2输出的时钟信号,若失效,分别为LFXT1OF和XT2OF置位,振荡器失效标志位OFIFG置位。如果MCLK信号来自LFXT1或者XT2,那么MSP430自动把MCLK的信号切换为DCO,这样可以保证程序继续运行。
当测试到晶体振荡器失效(LFXT1OF或XT2OF)时,振荡器失效标志位OFIFG置位,并且锁定到POR。当OFIFG置位,MCLK来自DCO,并且如果OFIE置位,那么产生非屏蔽中断。中断得到响应后,OFIE自动复位。OFIFG必须软件清零。失效源可以通过测试各个失效位识别。