热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

MSP430学习芯经(一)Clock

转载自yangbme最终编辑ms森林MSP430根据型号的不同最多可以选择使用3个振荡器。我们可以根
转载自  yangbme
最终编辑  ms森林

 

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


推荐阅读
author-avatar
手机用户2502937527
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有