历史上的今天
返回首页

历史上的今天

今天是:2025年03月26日(星期三)

正在发生

2020年03月26日 | MSP430教程9:MSP430单片机时钟模块

2020-03-26 来源:eefocus

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


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


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


2.MCLK系统主时钟:MCLK可由软件选择来自LFXT1CLK、XT2CLK、DCOCLK三者之一,然后经1、2、4、8分频得到,MCLK主要用于CPU和系统。


3.SMCLK子系统时钟:可由软件选自LFXT1CLK和DCOCLK(MSP430X11X、MSP430X12X系列,因其不含XT2),或XT2CLK和DCOCLK,然后经1、2、4、8分频得到。SMCLK主要用于高速外围模块。

 

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

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


1.DCOCTL            

7           6           5        4          3        2        1         0   
 DCO2      DCO1       DCO0       MOD4      MOD3      MOD2     MOD1      MOD0

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

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

DCOCTL POR后初始值为60H。


2.BCSCTL1          

 7         6         5          4            3        2          1         0  
 XT2OFF    XTS     DIVA1       DIVA0       XT5V     RSEL2      RSEL1    RSEL0 

BCSCTL1初始值为84H

XT2OFF            控制XT2的开启和关闭 
    0                  XT2振荡器开启 
    1                  XT2振荡器关闭(默认)

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

DIVA1、DIVA0  控制ACLK分频 
   0          0       不分频(默认) 
   0          1       2分频 
   1          0       4分频 
   1          1       8分频

XT5V                此位设置为0 
RSEL0~RSEL2 三位控制内部电阻以决定标称频率 
          0            选择最低标称频率 
         ...            ...... 
          7            选择最高标称频率    


3.BCSCLK2          

7          6        5         4       3          2           1          0  
SELM1    SELM0    DIVM1     DIVM0     SELS      DIVS1      DIVS0       DCOR
SELM1 SELM0     选择MCLK时钟源
     0         0          DCOCLK(默认)
     0         1          DCOCLK
     1         0          LFXT1CLK对于MSP430F11/12X,XT2CLK对于MSP430F13/14/15/16X
     1         1          LFXT1CLK
DIVM1  DIVM0      选择MCLK分频
     0         0          不分频
     0         1          2分频
     1         0          4分频
     1         1          8分频
  SELS                 选择SMCLK时钟源
     0                     DCLK(默认)
     1                     LFXT1CLK对于MSP430F11/12X,XT2CLK对于MSP430F13/14/15/16X
DIVS1  DIVS0       选择SMCLK分频
     0        0           不分频
     0        1           2分频
     1        0           4分频
     1        1           8分频
  DCOR                选择DCO电阻
     0                     内部电阻
     1                     外部电阻


时钟模块的应用


一、设置MCLK=XT2,SMCLK=DCOCLK,将MCLK由P5.4输出(MSP430X14X中引脚P5.4和MCLK复用)

#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,将ACLK用P2.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(;;);
}

推荐阅读

史海拾趣

问答坊 | AI 解惑

ARM文件系统的实现

ARM文件系统的实现…

查看全部问答>

基于DSP的全桥移相控制感应加热电源研究

引言 随着感应加热电源对自动化控制程度及可靠性要求的提高,感应加热电源正向智能化与数字化控制的方向发展。DSP具有高速的数字处理能力及丰富的外设功能,使得一些先进的控制策略能够应用实践,研究基于DSP的数字控制感应加热电源,可使产品具有 ...…

查看全部问答>

散分!同时寻找北京WINCE开发人员加入“嵌入式技术外包群”

帮朋友发布一下消息,请大家多多捧场哈! 如题!诚请在北京的WINCE技术高手加入“嵌入式技术外包群”,该群将不定期       发布一些外包信息!       群号:48348107…

查看全部问答>

新建嵌入式交流群6239452 欢迎加入!

新建嵌入式交流群6239452 欢迎加入!…

查看全部问答>

PNG双缓冲问题,为什么我的图片不能显示呢??

int width= dstRc.right-dstRc.left,                                         heigth = dstRc.top-dstRc.bottom;       ...…

查看全部问答>

wceload.exe 后台安装 CAB 文件

        平台:WinCE>NET4.2 开发平台EVC4.2         目的: 运行 wceload.exe打开SD卡里面的Main.CAB自动安装文件,而且是在后台安装,就是不是显示有关安装信息.    &nbs ...…

查看全部问答>

有没有人和我来一起做STM32的学习板

                                 不知道2面板可以不?QQ:11830067…

查看全部问答>

单片机学习网址资料及简介大全(资料来源网上)

replyreload += \',\' + 1320779;Timson,如果您要查看本帖隐藏内容请回复单片机学习网址资料及简介大全(资料来源网上) 以图片的预览,希望觉得有用的,可以下载,希望能对大家有所启发吧。 Timson,如果您要查看本帖隐藏内容请回复 Timson, ...…

查看全部问答>

这是怎么回事啊,MSP-EXP430F5529开发板上的复位按钮复不了位

最近才发现,MSP-EXP430F5529开发板上的复位按钮复不了位啊,这是怎么回事,检查线路是对的啊,没有哪儿断路啊…

查看全部问答>