[经验] MSP430学习心得笔记之一:关于Clock

Aguilera   2017-1-22 14:59 楼主

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必须软件清零。失效源可以通过测试各个失效位识别。


回复评论 (2)

对,我觉得不管什么单片机,先弄清楚时钟这个思路是对的。顶一个,支持一下。
点赞  2017-1-22 15:29
任何MCU的时钟是最重要的,建议以不同系列介绍时钟种类,上述不全面
点赞  2017-1-30 21:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复