MSP430教程9:MSP430单片机时钟模块_hrj19800929_新浪博客

MSP430的时钟模块由低速晶体振荡器LFXT1、高速晶体振荡器XT2MSP430X11X,MSP430X12X没有)、数字控制振荡器DCO、琐相环FLLMSP430X16X以上包括)和增强型琐相环FLL+等部件组成。

 

 

 

MSP430X1XX基本时钟模块有三个时钟输入源LFXT1CLK(低速32768Hz,高速450Hz8MHz)XT2CLK(450Hz8MHz)DCOCLK,提供以下三种时钟信号

1.ACLK辅助时钟:由LFXT1CLK信号经1248分频后得到,可以由软件选作各个外围模块的时钟信号,一般用于低速外设。

2.MCLK系统主时钟:MCLK可由软件选择来自LFXT1CLKXT2CLKDCOCLK三者之一,然后经1248分频得到,MCLK主要用于CPU和系统。

3.SMCLK子系统时钟:可由软件选自LFXT1CLKDCOCLKMSP430X11XMSP430X12X系列,因其不含XT2),或XT2CLKDCOCLK,然后经1248分频得到。SMCLK主要用于高速外围模块。

 

系统频率与系统的工作电压密切相关(MSP430工作电压1.8V~3.6V,编程电压2.7V~3.6V,所以不同的工作电压,需要选择不同的系统时钟。当两个外部振荡器失效时,DCO振荡器会自动被选作MCLK的时钟源。PUC信号之后,DCOCLK被自动选作MCLKSMCLK的时钟信号,LFXT1CLK被选作ACLK的时钟信号,根据需要MCLKSMCLK的时钟源可以另外设置。

控制时钟模块的三个寄存器为DCO控制寄存器DCOCTL、基本时钟系统控制寄存器1BCSCTL1、基本时钟控制寄存器2BCSCTL2

 

 

 

1.DCOCTL            

                                                       
DCO2       DCO1       DCO0        MOD4       MOD3       MOD2     MOD1      MOD0

DCO.0~DCO.2    定义8种频率之一(DCO=0~DCO=8),可分段调节DCOCLK频率,相领两种频率相差10%

MOD.0~MOD.4   定义在32DCO周期中插入的fdco+1周期个数,而余下的周期为fdco周期,控制切换DCODCO+1选择的两种频率,如果DCO常数为7,表示已经选择{zg}频率,此时不能利用MOD.0~MOD.4进行频率调整。

DCOCTL POR后初始值为60H

 

 

 

2.BCSCTL1          

                                              1 0
XT2OFF   XTS     DIVA1       DIVA0       XT5V     RSEL2       RSEL1     RSEL0

BCSCTL1初始值为84H

XT2OFF            控制XT2的开启和关闭
                      XT2
振荡器开启

                      XT2
振荡器关闭(默认)

XTS                控制LFXT1工作模式
                     
低频模式(默认)

                     
高频模式

DIVA1DIVA0  控制ACLK分频
                
不分频(默认)

                 2
分频

                 4
分频

                 8
分频

XT5V                此位设置为0
RSEL0~RSEL2
三位控制内部电阻以决定标称频率

                     
选择{zd1}标称频率

         ...             ......
                     
选择{zg}标称频率    

 

 

 

3.BCSCLK2          

                                                    
SELM1     SELM0     DIVM1      DIVM0      SELS      DIVS1       DIVS0       DCOR
SELM1 SELM0    
选择MCLK时钟源

                     DCOCLK
(默认)
                     DCOCLK
                     LFXT1CLK
对于MSP430F11/12XXT2CLK对于MSP430F13/14/15/16X
                     LFXT1CLK
DIVM1   DIVM0      
选择MCLK分频

                    
不分频
                     2
分频
                     4
分频
                     8
分频
   SELS                
选择SMCLK时钟源
                        DCLK
(默认)
                        LFXT1CLK
对于MSP430F11/12XXT2CLK对于MSP430F13/14/15/16X
DIVS1   DIVS0      
选择SMCLK分频

                    
不分频
                     2
分频
                     4
分频
                     8
分频
   DCOR                
选择DCO电阻
                       
内部电阻
                       
外部电阻

 

 

 

时钟模块的应用

 

 

 

一、设置MCLK=XT2SMCLK=DCOCLK,将MCLKP5.4输出(MSP430X14X中引脚P5.4MCLK复用)

#include   "msp430x14x.h"
void   main(void)
{
   unsigned int i;
   WDTCTL= WDTPW+WDTHOLD;     //Stop   watchdog to   prevent   to   overflow
   P5DIR   | =   0X10;                           //Set   P5.4 to output                          
   P5SEL | =   0X10;                           //Set   P5.4 to MCLK mode
   BCSCTL1 &= ~XT2OFF;                 //Enable XT2

   do{
   IFG1 & = ~OFIFG;                         //Clear OFIFG
   for(i=0xff;i>0;i--);                             //Set a delay
   }while(IFG1&OFIFG);                     //check-up the OFIFG
  
   BCSCTL2 | = SELM_2;                   //Set   XT2CLK the clock of MCLK

   for(;;);
}

 

 

 

二、 设置ACLK=MCLK=LFXT1=HF,将ACLKP2.0(复用)输出。

#include "msp430x14x.h"
void main(void)
{
   unsigned int i,j;
   WDTCTL = WDTPW+ WDTHOLD;
   P1DIR =0x02;
   P2DIR =0x01;
   P2SEL=0x01;
   BCSCTL1 | = XTS;

   do{
     IFG1 & = ~OFIFG;
     for(i=0xff;i>0;i--);
   }while(IFG1 & OFIFG);
  
   BCSCTL2 | = SELM_3;
  
   for(;;);
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

郑重声明:资讯 【MSP430教程9:MSP430单片机时钟模块_hrj19800929_新浪博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——