返回首页
当前位置: 主页 > MSP430单片机 >

MSP430时基模块范例1

时间:2009-11-17 22:04来源:网络 作者:网友 点击:
MSP430 时基模块 范例

1-简介
     简介MSP430单片机基础时钟结构及其应用范例

2-时钟模块
      有关MSP430时基原理的详细介绍我们在此将不作详述.详情请读者参阅TI公司的官方技术资料.
      时基模块结构如下图:
      MSP430系列单片机基础时钟主要是由低频晶体振荡器,高频晶体振荡器,数字控制振荡器(DCO),锁频环(FLL)及FLL+等模块构成.由于430系列单片机中的型号不同,而时钟模块也将有所不同.虽然不同型号的单片机的时基模块有所不同,但这些模块产生出来的结果是相同的.在MSP430F13,14中是有TX2振荡器的,而MSP430F11X,F11X1中是用LFXT1CLK来代替XT2CLK时钟信号的.在时钟模块中有3个(对于F13,F14)时钟信号源(或2个时钟信号源,对于F11X,F11X1):

1-LFXT1CLK: 低频/高频时钟源.由外接晶体振荡器,而无需外接两个振荡电容器.较常使用的晶体振荡器是32768HZ.
2-XT2CLK:   高频时钟源.由外接晶体振荡器.需要外接两个振荡电容器.较常用的晶体振荡器是8MHZ.
3-DCOCLK  数字可控制的RC振荡器.  

MSP430单片机时钟模块提供3个时钟信号输出,以供给片内各部电路使用.

1-ACLK: 辅助时钟信号.由图所示,ACLK是从FLXT1CLK信号由1/2/4/8分频器分频后所得到的.由BCSCTL1寄存器设置DIVA相应为来决定分频因子.ACLK可用于提供CPU外围功能模块作时钟信号使用.

2-MCLK: 主时钟信号.由图所示,MCLK是由3个时钟源所提供的.他们分别是LFXT1CLK,XT2CLK(F13,F14,如果是F11,F11X1则由LFXT1CLK代替),DCO时钟源信号提供.MCLK主要用于MCU和相关系统模块作时钟使用.同样可设置相关寄存器来决定分频因子及相关的设置.

3-SMCLK: 子系统时钟,由图所示,SMCLK是由2个时钟源信号所提供.他们分别是XT2CLK(F13,F14)
和DCO.如果是F11,F11X1则由LFXT1CLK代替TX2CLK.同样可设置相关寄存器来决定分频因子及相关的设置.
3-MSP430模块参考图片与电路图
  MSP430X1X1系列产品中,其中XT1时钟源引脚接法有如3种应用.F13,14的XT1相同.
  需要注意的是,下图C中.LFXT1只有工作在调频模式下才需要外接电容.
  对以引脚较少的MSPX1XX系列产品中有着不同时基模块,具体如下:

  MSP430X11X1:LFXT1CLK , DCO

  MSP430F12X: LFXT1CLK , DCO

  MSP430F13X/14X/15X/16X:LFXT1CLK , DCO , XT2CLK

  MSP430F4XX:
LFXT1CLK , DCO , XT2CLK , FLL+
MSP430X11X1          A                                   B                                C


4-范例寄存器解译
  
 WDTCL    看门狗定时器控制寄存器
    PxDIR    通用IO方向控制寄存器
    PxSEL    通用IO复用功能模块控制寄存器
    BCSCTL1  时基控制寄存器1
    BCSCTL2  时基控制寄存器1
    IFG1     中断标志寄存器1
    
5-时基模块应用范例
(1)

  本例程是设置时钟模块的工作方式和相关的控制寄存器.以MSP430F149和C程序编写.
设置主时钟信号MCLK=TX2,子时钟信号SMCLK=DCOCLK,将MCLK从MSP430F149的P5.4口输出,在F14X系列中P5.4和MCLK是复用的,(详情请看相关的芯片资料可查得
)
 
#include <msp430x14x.h>


void main (void)
{
  unsigned int i;
  WDTCL = WDTPW+WDTHOLD:
        //停止看门狗
  P5DIR = 0x10;                 //设置P5.4输出
  P5SEL = 0x10;                 //设置P5.4口为外围模块用作MCLK信号输出
  BCSCTL1 &= ~XT2OFF;           //使TX2有效,TX2上电时默认为关闭的.

do
{
  IFG1 &= ~OFIFG;       
       //清振荡器失效标志
  for(i= 0xff; i>0; i--);      //延时,待稳定.
}

while ((IFG1 & OFIFG)!=0);  
   //若振荡器失效标志有效

BCSCTL2 |= SELM1;              //使MCLK = XT2
for(;;);
}

//例程1完





时基模块应用范例
(2)

  XT1时钟源外接高频晶体振荡器并使其工作在高频模式.利用P2.0的复用引脚功能输出ACLK(高频).同时P1.1输出一个方波.

#include <msp430x11x1.h>

void main(void)
{
  unsigned int i;
  WDTCTL = WDTPW + WDTHOLD;
   // 停止看门狗
  BCSCTL1 |= XTS;              // 设置时基寄存器1,使ACLK = LFXT1 = HF XTAL,也就是高频模式.
  P2DIR |= 0x01;               // 设置P2.0方向寄存器为输出
  P2SEL |= 0x01;               // 设置P2.0口为外围模块用作ACLK信号输出
  P1DIR |= 0x02;               // 设置P1.1方向寄存器为输

do
 {
  IFG1 &= ~OFIFG;  
            // 清振荡器失效标志
  for (i = 0xFF; i > 0; i--);  // /延时,待稳定.
 }
while ((IFG1 & OFIFG));  
      //若振荡器失效标志有效?

BCSCTL2 |= SELM_3;             // 设置时基寄存器2,使主时钟信号MCLK = LFXT1 (可靠的)

for (;;)                       // 无穷循环
 {
  P1OUT |= 0x02;
              // P1.1 = 1
  P1OUT &= ~0x02;              // P1.1 = 0
 }
}

//例程2完

(责任编辑:admin)
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名:密码: 验证码:点击我更换图片
推荐内容