msp430f149学习心得之一 时钟配置

发布者:初入茅庐最新更新时间:2020-02-29 来源: eefocus关键字:msp430f149  学习心得  时钟配置 手机看文章 扫描二维码
随时随地手机看文章

近期要参加电子设计大赛,我们的微处理器选择了msp430(高性能不说,关键很多系列的芯片可到TI官网免费申请到),本人负责软件,之前并没有深入接触过msp430系列的单片机,但还稍稍有点51的底子,现将本人学习430的一点小心得与大家分享~


********************************基于MSP430F169****************************** 

MSP430单片机中,一个时钟周期 = MCLK晶振的倒数。如果MCLK是8MHz,则一个时钟周期为1/8us。


MSP430单片机的时钟模块主要包括:


三个时钟:辅助时钟ACLK 、主时钟MCLK 、子系统时钟SMCLK


三个振荡器:低频时钟源LFXT1 (一般外接32768HZ的手表晶振)、高频时钟源XT2(一般外接8MHZ晶振)、数字控制RC振荡器(系统默认是800KHZ)


而MSP430单片机工作所需时钟就是由这些振荡器振荡后经处理产生的。


(1)ACLK:是LFXT1CLK信号经1/2/4/8分频后得到的,主要用作低速外围的时钟


(2)MCLK:是LFXT1CLK,XT2CLK,DCOCLK的三者之一决定,由软件选择,然后经1/2/4/8分频后得到,主要用于CPU和系统


(3)SMCLK:可由LFXT1CLK和DCOCLK,或者XT2CLK与DCOCLK决定,然后经1/2/4/8分频后得到,主要用于高速外围模块


*************************************寄存器配置************************************

MSP430的时钟模块由DCOCTL, BCSCTL1, BCSCTL2, IE1, IFG1这五个寄存器来确定,具体的功能如下所示:


(1)DCOCTL:  DCO控制寄存器,地址为56H,初始值为60H

//         7            6             5           4           3             2           1            0


//     DCO2   DCO1   DCO0   MOD4  MOD3   MOD2   MOD1   MOD0


//


//      DCO0~DCO2: DCO Select Bit,定义了8种频率之一,而频率由注入直流发生器的电流定义


//      MOD0~MOD4: Modulation Bit,频率的微调


(2)BCSCTL1(ACLK): Basic Clock System Control 1,地址为58H,初始值为84H

//          7             6         5            4           3              2              1            0


//     XT2OFF   XTS   DIVA1   DIVA0   XT5V     RSEL2    RSEL1    RSEL0


//


//    RSEL2~RSEL0: 选择某个内部电阻以决定标称频率(0最低,7最高)


//    XT5V: 1,该比特未用,必须选择复位


//    DIVA0~DIVA1: 选择ACLK的分频系数。DIVA=0,1,2,3(DIVA_0,DIVA_1...),ACLK的分频系数分别为:1,2,4,8。例: BCSCTL1 |= DIVA_2; //对ACLK进行2分频


//    XTS: 选择LFXT1工作在低频晶体模式(XTS=0)还是高频晶体模式(XTS=1)


//    XT2OFF: 控制XT2振荡器的开启(XT2OFF=0)与关闭(XT2OFF=1)


//


//  BCSCTL1的设置:初始值为84H,使用XT2振荡器,控制XT2振荡器的开启(XT2OFF=0)与关闭(XT2OFF=1)


    BCSCTL1 &= ~XT2OFF;//清OSCOFF/XT2


    do


    {


      IFG1 &= ~OFIFG;//清OFIFG


      OSC_Delay = 255;


       while(OSC_Delay --);//延时等待


     }


     while(IFG1 & OFIFG);//直到OFIFG=0为止


 


// RSEL2~RSEL0:选择某个内部电阻以决定标称频率(0最低,7最高)


    BCSCTL1 |= RSEL0 + RSEL1 + RSEL2;// XT2on,max RSEL  


(3)BCSCTL2(SMCLK,MCLK): Basic Clock System Control 2,地址为58H,初始值为00H

//          7             6              5            4            3           2            1            0


//     SELM1   SELM0   DIVM1   DIVM0   SELS   DIVS1   DIVS0   DCOR


//


//   DCOR: Enable External Resister,0—选择内部电阻,1—选择外部电阻


//   DIVS0~DIVS1: DIVS=0,1,2,3,对应SMCLK的分频因子为1,2,4,8


//   SELS: 选择SMCLK的时钟源,0:DCOCLK,1:XT2CLK/LFXTCLK


//   DIVM0~DIVM1:选择MCLK的分频因子,DIVM=0,1,2,3,对应MCLK的分频因子为1,2,4,8


//   SELM0~SELM1:选择MCLK的时钟源,0,1:DCOCLK,2:XT2CLK,3:LFXT1CLK


//


// BCSCTL2的设置:初始值为00H,设置BCSCTL2,选定MCLK和SMCLK的时钟源XT2,并可以设置其分频因子


//注意:ACLK只能来源于LFXT1,可以在BCSCTL1里设置ACLK的分频,就是说ACLK最大只能为32768Hz(XIN 与 XOUT间接32.768KHz晶振) 


  //设置SMCLK的分频因子,DIVS0~DIVS1:DIVS=0,1,2,3,对应SMCLK的分频因子为1,2,4,8


  //BCSCTL2 = DIVS_0;


  //BCSCTL2 = DIVS_1;


  //BCSCTL2 = DIVS_2;


  //BCSCTL2 = DIVS_3;


 


  //设置MCLK的分频因子,DIVM0~DIVM1:DIVM=0,1,2,3,对应MCLK的分频因子为1,2,4,8


  //BCSCTL2 = DIVM_0;


  //BCSCTL2 = DIVM_1;


  //BCSCTL2 = DIVM_2;


  //BCSCTL2 = DIVM_3;


 


  //BCSCTL2:设置三个时钟源分别选择什么振荡器


 


  //SELM0~SELM1:选择MCLK的时钟源,0,1:DCOCLK,2:XT2CLK,3:LFXT1CLK


  //选择 MCLK 时钟源为XT2,


  //BCSCTL2 = SELM_2 ;


 


  //SELS:选择SMCLK的时钟源,0:DCOCLK,1:XT2CLK/LFXTCLK


  //选择 SMCLK 时钟源为XT2


  //BCSCTL2 = SELS ;


 


  //选择MCLK 与 SMCLK为XT2


  BCSCTL2 = SELM_2 + SELS;


 


(4)IE1,Interrupt Enable Register 1

//       7      6     5      4      3      2      1      0


//                                                     OFIE


//      7~2 and 0 : These bits may be used by other modules


//      OFIE: Oscillator fault interrupt enable.  0---Interrupt not enabled


//                                                                           1---Interrupt enabled


(5)IEG1,Interrupt Flag Register 1

//       7      6     5      4      3      2      1      0


//                                                     OFIFG


//     7~2 and 0 : These bits may be used by other modules


//     OFIE: Oscillator fault interrupt flag.  0 No interrupt pending


//                                                                     1 Interrupt pending


//


在PUC信号后,默认情况下由DCOCLK作MCLK与SMCLK的时钟信号,由于DCOCTL初始值为60H,根据需要可将MCLK的时钟源另外设置为LFXT1或者XT2,设置顺序如下:


//(1)清OSCOFF/XT2


//(2)清OFIFG


//(3)延时等待至少50us


//(4)再次检查OFIFG,如果仍置位,则重复(1)~(4)步,直到OFIFG=0为止


//(5)设置BCSCTL2的相应SELM


示例:


 /*---------------------------------------------------------------*-

* 函数名称: void Clock_Mclk_XT2 ( void )  

* 参    数:

* 返    回:

* 函数功能: 主时钟设置为 XT2

*

*

* 说     明:

-*----------------------------------------------------------------*/

void Clock_Mclk_XT2 ( void )   

{

    volatile unsigned int i;

    WDTCTL = WDTPW + WDTHOLD;                 //关开门狗

    

//    P5DIR |= 0x10;                            // P5.4= 输出

//    P5SEL |= 0x10;                            // P5.4= MCLK模式  

    BCSCTL1 &= ~XT2OFF;                       // XT2= HF XTAL

    do

    {

        IFG1 &= ~OFIFG;                        // 清除 OSCFault 位

        for (i = 0xFF; i > 0; i--);            // 标志位设置延时

    }

    while ((IFG1 & OFIFG));                   // OSCFault 位是否设置成功


    BCSCTL2 |= SELM_2;                        // MCLK= XT2 (safe)

}


/*---------------------------------------------------------------*-

* 函数名称:

* 参    数:

* 返    回:

* 函数功能: 

*

*

* 说     明:子时钟设置为 XT2未分频

-*----------------------------------------------------------------*/

void Clock_Smclk_XT2 ( void )

{

    BCSCTL2 |= SELS;

}

关键字:msp430f149  学习心得  时钟配置 引用地址:msp430f149学习心得之一 时钟配置

上一篇:MSP430G2xx1系列USI的SPI模式详解
下一篇:msp430频率测试程序

推荐阅读最新更新时间:2024-11-17 11:53

STM32F407的时钟配置(system_config.c浅见)
入手STM32F4系列是从F4Discovery开始的,板子确实很对得起99元的价格~因为最近要做一个图像识别方面的项目,因此开始在f4上进行编程,之前也写过f103系类的单片机,但时钟方面都是使用别人已经写好的时钟配置函数,没有去仔细考虑,换用了f4之后,分析了一下系统的启动过程,发现system_config.c中的SystemInit函数已经把时钟配置好了,但还有一些地方需要做修改,否则可能会导致时钟启动过程出现错误,现在 写出来,也算是做的个备忘吧。 startup_stm32f40_41xxx.s是怎么对SystemInit进行调用的呢?见103行: /* Call the clock system intit
[单片机]
STM32F1系列HAL库配置系统时钟
其实一开始对于时钟我也是知之甚少,在MSP432中我就一直忽视时钟配置,其实也是在STM32学习时落下的病根,现在趁有空补一下。 时钟简单讲解 对于时钟系统,在之前我写启动文件涉及到,其实,每个功能的实现都涉及到时钟。我们首先说明一下RCC RCC:复位和时钟控制 什么是复位,什么又是时钟?在STM32参考手册中文版我们可以看到 注意“除了时钟控制器的RCC_CSR寄存器中的复位标志位和备份区域中的寄存器(见图4)以外,系统复位将复位所有寄存器至它们的复位状态。”这句话告诉我们复位时,让寄存器(除了上述提及的CSR以及备份区域寄存器外)恢复至初始状态,也就是我们上电后寄存器的默认状态。 我们使用时也是在不断复位中使用的
[单片机]
STM32F1系列HAL库<font color='red'>配置</font>系统<font color='red'>时钟</font>
初学MSP430F5529时钟以及FLL配置
一、基本 1.5529包含五个时钟源 XT1CLK:外部低频晶振,32.786KHz,可以用作FLL参考电源,也可以整4MHZ到32Mhz XT2CLK:外部高频晶振,可用作fll参考源可以4MHZ到32MHZ 但是F5529的最高CPU频率好像是25MHZ? VLO:内部低耗低频晶振,10kHZ REF:内部低频参考源,32.786Khz,可用作FLL参考源,精度高 DCO:数控振荡器,通过FLL设置 三个信号源 ACLK:辅助时钟源 MCLK:主时钟源 SMCLK: 时钟源和信号源的关系是,信号源来自于时钟源的分频。这三个时钟源可以选择从哪个时钟源里面得到时钟信号,并且自身还可以分频。于是可以获得多种多样的分频时钟。时钟源和信
[单片机]
基于MSP430F149单片机的目标指示器设计
针对目前我军侦察分队和射击指挥分队野外训练时,各种目标设置、显示费时费力、安全隐患大等诸多问题,本文提出基于 MSP 430F149 单片机 设计目标指示器,以满足部队野外训练时快速设置目标,并能根据不同的战术需要灵活显示目标和根据不同的射击法则显示炸点等,较好地解决部队野外训练的急需。 目标指示器的功能 根据需要,目标指示器以灯光、烟火等方式显示目标或炸点。每个指示器可以模拟显示如机枪火力点、坦克火力点、炮阵地等n类性质的目标,同时带有m个炸点显示器。目标指示器主要完成GPS模块的数据采集、执行灯光显示和烟火显示等任务。 目标指示器硬件设计 硬件设计方案 目标指示器的设计是以单片机为核心的,集灯光显示
[单片机]
基于<font color='red'>MSP430F149</font>单片机的目标指示器设计
基于MSP430F149电机保护算法研究
目前,我国高压电动机的保护主要有机电式和集成电路两种,但都存在着诸多弊病,不能很好地保护电动机。其中,异步电动机的机电式保护,主要以电流增大作为判据,保护原理粗略,对断相等严重不对称故障,由于一般不出现显著的电流增大,从而使保护装置难以及时动作,造成事故扩大;集成电路式保护虽在保护原理上有所改善,但其保护特性一般无法与电动机热曲线实现较好配合,常发生拒动或误动,严重的甚至烧毁电动机。因此,研究电机保护算法具有重要的意义。 1 电动机故障分析 电动机的故障形式可分为对称和不对称两类。 对称故障包括过载、堵转和三相短路等,这类故障对电动机的损坏主要是热效应和机械应力,使绕组发热甚至损坏。其主要特征是三相仍基本对称但
[单片机]
基于<font color='red'>MSP430F149</font>电机保护算法研究
单片机stm32时钟频率和配置方法详解
  单片机stm32时钟频率   STM32F103内部8M的内部震荡,经过倍频后最高可以达到72M。目前TI的M3系列芯片最高频率可以达到80M。   在stm32固件库3.0中对时钟频率的选择进行了大大的简化,原先的一大堆操作都在后台进行。系统给出的函数为SystemInit()。但在调用前还需要进行一些宏定义的设置,具体的设置在system_stm32f10x.c文件中。   文件开头就有一个这样的定义:   //#define SYSCLK_FREQ_HSE HSE_Value   //#define SYSCLK_FREQ_20MHz 20000000   //#define SYSCLK_FREQ_36MHz
[单片机]
单片机stm32<font color='red'>时钟</font>频率和<font color='red'>配置</font>方法详解
MSP430F149为核心的温度检测仪的设计
0 引言 兰州大型的综合工程重离子加速器——冷却存储环(HIFRL-CSR)是国家科学重点工程之一,在其内部控制系统里存在着大量的测量温度的场合,这些场合依靠约束离子的行为发挥CSR主环中的磁场作用,在磁场中,这些带电粒子束有时处于聚焦状态,有时则处于传输状态,且磁场性能的好坏对束流品质有直接影响。 由于磁铁的温度与磁场性能及安全密切相关。磁铁的线圈中通过电流时,会产生很高的温度,因此,对其温度的测量是一项非常重要的工作。以MSP430F149为核心的温度检测仪基于此要求进行设计,并投入使用,是一款成本低并且性能良好的测温仪。 1 温度测量原理 1.1 温度测量的流程分析 在该设计中,测温范围应控制在20~70℃范围内,
[测试测量]
以<font color='red'>MSP430F149</font>为核心的温度检测仪的设计
基于M-Power500的无线语音传输系统设计与实现
    随着无线通信技术的迅猛发展,通信方式越来越多,且整体朝着数据业务量增大的方向发展。但在日常生活中,语音通信仍占据重要地位。在短距离通信中,通信设备的价格、音质、功耗一直是消费者关注的焦点。手机虽然是很好的选择,但是对于要求随时随地的地区性短距离通信来说,其耗价很不合算。而目前市场上的对讲机在体积、价位和功耗上都不能满足特定场合下用户的需求。本文介绍了一种针对 短距离通信的、全双工、低功耗的无线语音传输系统实现方案。该设计体积小、音质好、价廉,有一定的实际需求。 1 系统总体设计方案     无线语音系统按功能划分可由以下几部分组成:语音信号采集模块、语音信号编解码模块、控制模块、射频模块及语音信号输出模块。     语音信号
[网络通信]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved