查看: 2692|回复: 4
打印 上一主题 下一主题

MSP430的系统时钟

[复制链接]
跳转到指定楼层
沙发
发表于 2014-8-12 11:13:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 SDC158477392 于 2014-8-12 11:14 编辑

通用知识           时钟周期也称为振荡周期:定义为时钟脉冲的倒数(时钟周期就是直接供内部CPU使用的晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。         
       机器周期:在计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。8051系列单片机的一个机器周期由6个S周期(状态周期)组成。一个S周期=2个时钟周期,所以8051单片机的一个机器周期=6个状态周期=12个时钟周期。        
       指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。 专用知识: 在430中,一个时钟周期 = MCLK晶振的倒数。如果MCLK是8M,则一个时钟周期为1/8us; 一个机器周期 = 一个时钟周期,即430每个动作都能完成一个基本操作; 一个指令周期 = 1~6个机器周期,具体根据具体指令而定。 另:指令长度,只是一个存储单位,与时间没有必然关系。
        MSP430根据型号的不同最多可以选择使用3个振荡器。我们可以根据需要选择合适的振荡频率,并可以在不需要时随时关闭振荡器,以节省功耗。这3个振荡器分别为:  (1)DCO  数控RC振荡器。它在芯片内部,不用时可以关闭。DCO的振荡频率会受周围环境温度和MSP430工作电压的影响,且同一型号的芯片所产生的频率也不相同。但DCO的调节功能可以改善它的性能,他的调节分为以下3个步骤      a:选择BCSCTL1.RSELx确定时钟的标称频率;     b:选择DCOCTL.DCOx在标称频率基础上分段粗调;     c:选择DCOCTL.MODx的值进行细调。  (2)LFXT1  接低频振荡器。典型为接32768HZ的时钟振荡器,此时振荡器不需要接负载电容。也可以接450KHZ~8MHZ的标准晶体振荡器,此时需要接负载电容。  (3)XT2  接450KHZ~8MHZ的标准晶体振荡器。此时需要接负载电容,不用时可以关闭。         
        低频振荡器主要用来降低能量消耗,如使用电池供电的系统,高频振荡器用来对事件做出快速反应或者供CPU进行大量运算。当然高端430还有锁频环(FLL)及FLL+等模块,但是初步不用考虑那么多。
MSP430的3种时钟信号:MCLK系统主时钟;SMCLK系统子时钟;ACLK辅助时钟。
          (1)MCLK系统主时钟。除了CPU运算使用此时钟以外,外围模块也可以使用。MCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。  (2)SMCLK系统子时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。SMCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。  (3)ACLK辅助时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。但ACLK只能由LFXT1进行1、2、4、8分频作为信号源。  PUC复位后,MCLK和SMCLK的信号源为DCO,DCO的振荡频率默认为800KHZ。ACLK的信号源为LFXT1。  

MSP430内部含有晶体振荡器失效监测电路,监测LFXT1(工作在高频模式)和XT2输出的时钟信号。当时钟信号丢失50us时,监测电路捕捉到振荡器失效。如果MCLK信号来自LFXT1或者XT2,那么MSP430自动把MCLK的信号切换为DCO,这样可以保证程序继续运行。但MSP430不对工作在低频模式的LFXT1进行监测。      
        为了实现具体的时钟可以设置跟时钟相关的寄存器,在低端430中是DCOCTL、BCSCTL1和BCSCTL2三个寄存器。而对于高端的430,则要考虑SCFI0、SCFQCTL、FLL_CTL0、FLL_CTL1和BTCTL等几个寄存器。具体设置,参看DataSheet。        
        在f149中,基础时钟是被叫做basic clock module,  
         其一共有三个时钟源:一个LFXT1CLK,为低速/高速晶振源,通常接32.768khz,也可以接(400khz~8Mhz)
                                         一个为XT2CLK,外接标准高速晶振,通常是接8Mhz,也可以接(400khz~8Mhz)
                                        还有一个叫DCOCLK,为内部晶振,由RC震荡回路构成。
在430内部一共有三个时钟系统 :
                      一个为ACLK,通常由LFXT1CLK作为时钟源,可以通过软件控制改时钟的分频系数。
                      一个为MCLK,即Main CLK,一听就知道是主时钟单元,为系统内核提供时钟,它可以通过软件从三个时钟源选
                      一个为SMCLK,称作辅助主时钟,也是可以由软件选择时钟源。   Basic Clock Module Registers(基础时钟寄存器)  
DCO control register                             DCOCTL   Basic clock system control 1               BCSCTL1   Basic clock system                                                   
control 2           BCSCTL2   SFR interrupt enable register 1           IE1   SFR interrupt flag register 1                 IFG1

1、 DCOCTL寄存器是用来配置DCOCLK的,这里暂且不提。2、 BCSCTL1 与BCSCTL2 寄存器则显得比较重要,这两个寄存器控制了你整个系统中430的工作时钟系统。   
BCSCTL1寄存器:  XT2OFF    XTS   DIVAx    XT5V   RSELx    
XT20FF: 用来控制XT2晶振的开启和关闭,置1时关闭,置0时,开启   
XTS:      用来选择低速晶体的工作模式(可忽略)   
DIVAx:   用来选择ACLK的分频系数   
XT5V:      无用   
RSELx:   选择电阻(没用过,一般置0)   
BCSCTL2寄存器:SELMx    DIVMx   SELS   DIVSx    DOCR   
SELMx:  选择MCLK的时钟源,   00 DCOCLK    01 DCOCLK     10 XT2CLK     11 LFX1CLK   
DIVMx: MCLK的分频   00 1分频   01 2分频   10 4分频   11 8分频   
SELS:SMCLK的时钟源,0时为内置DCO,1时为外置高速XT2   
DIVSx:SMCLK的分频,同MCLK分频   
DCOR:控制频率的电阻是内部还是外部(没用过)   




实例初始化程序  
void Init_CLK(void)  
  {      
      unsigned int i;      
      BCSCTL1=0x00;  //XT2开启,LFXTCLK为低频模式,ACLK分频为0  
        do   
          {         
          IFG1&=~OFIFG;      
           for(i=0x20;i>0;i--);     
          }
        while((IFG1&OFIFG)==OFIFG);   //当OSCFault=1 即晶振不起振则等待      
      BCSCTL2=0X00;      
      BCSCTL2|=SELM1;                  //MCLK 时钟为XT2,      
      BCSCTL2|=SELS;                    //SMCLK时钟为XT2  
  }


回复

使用道具 举报

板凳
发表于 2014-8-12 11:17:42 | 只看该作者
高手啊。。{:soso_e179:}
回复 支持 反对

使用道具 举报

地板
发表于 2014-8-12 11:28:49 | 只看该作者
楼主好人 好人呀
回复 支持 反对

使用道具 举报

4#
发表于 2014-8-12 11:34:30 | 只看该作者
{:soso__15960872840493620282_2:}
回复 支持 反对

使用道具 举报

5#
发表于 2014-8-12 19:47:31 | 只看该作者
为什么我的猪就是不行啊。。。啊。。。啊。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表