MSP430F5529火箭板 ---> 控制时钟系统输出频率实验

发布者:飘然出尘最新更新时间:2021-01-25 来源: eefocus关键字:MSP430F5529  控制时钟 手机看文章 扫描二维码
随时随地手机看文章

实验内容:上电控制MSP430F5529 Launch Pad上的主时钟系统达到25Mhz

实验准备:
1、硬件:MSP430F5529 Launch Pad
2、软件:Code Composer Studio集成开发工具(CCS)
3、提升MSP430F5529核心电压的办法及介绍请参考《MSP430F5529火箭板 ----> 关于核心电压提升实验(含电源管理模块和供电监控系统介绍)》文章链接link

一、时钟系统

1、MSP430F5529 Lanuch Pad晶振的物理层分析
  在进入时钟系统之前我们先对MSP430F5529的时钟晶振做一个介绍。
   MSP430F5529 Launch Pad 板载了1个32.768Khz的RTC实时时钟XTAL1和1个4Mhz的外部晶振XTAL2
  默认情况下,MSP430F5529的系统时钟为1Mhz
   XT2的4Mhz晶振与MCU连接引脚如下图所示:
在这里插入图片描述

2、MSP430F5529 Launch Pad时钟的介绍
  MSP430应用程序通常使用一个快时钟和一个慢时钟。在某些情况下,快时钟(称为MCLK)用于驱动CPU和外围设备,而慢时钟保持计时器和外围设备在低功耗模式下运行。这种方法降低了功耗:慢时钟消耗的电量更少,因此,禁用快时钟的次数越多,应用程序消耗的电量就越少。
  这种快速时钟通常是集成在单片机中的数字控制振荡器(DCO)。DCO本身是一个重要的低功耗工具,因为与晶振不同,它有非常快的启动时间,因此可以快速关闭和重新启用。DCO可以被中断激活,并且稳定得足够快来响应它。MCU的低功耗模式只有在经常使用的情况下才有用。
  许多MSP430设备,包括F5529,将DCO与频率锁定环(FLL)模块耦合,使DCO锁定在精确的慢频参考上。这可以很好地控制DCO频率。

MSP430F5529有三个可用的慢时钟:
1、REFO:内部低频修整基准源,是一种不需要晶振起振的高精度、低功率芯片上振荡器,典型值为32.768Khz,常被用作锁相环FLL的基准频率,其设置往往要参考LPM模式的设置。
2、LEFXT1:外部低频振荡源,经典值为32.768Khz,它和REFO一样可以作为锁相环FLL的基准频率,但是它比REFO精度更高、功率更低且更稳定。
3、VLO:(Internal very low)内部低耗低频振荡源,精确度低,范围在12Khz~20Khz之间

下表为F5529推荐的时钟配置:

系统时钟 时钟源频率描述
MCLKDCO、FLL8MhzMCLK是MSP430 CPU时钟。它在所有低功耗模式下被禁用。USB通信没有预定义的MCLK下限,但通常为8Mhz。
SMCLKDCO、FLL8MhzSMCLK驱动高速外设。它在LPM0期间保持活动,但在LPM3、LPM4和LPM5中禁用。LPM0是在USB连接期间允许的最低功率模式。
ACLKREFO32KhzACLK是一个低速时钟,驱动计时器和较慢的外围设备。在低功耗模式下,这是一种非常低功耗的方法来保持单片机的活力。它在LPM3期间保持活动,但在LPM4和LPM5中禁用。
USBCLKXT24MhzMSP430F5529上的USB操作需要在XT2上有一个±2500 ppm的时钟源。这个应用程序使用了一个精确的晶体谐振器。USB模块直接从XT2接收这个时钟。

UCS模块默认配置:
  在F5529上电完成PUC后,UCS模块默认配置为:
    1、XT1默认选择LF模式,作为XT1CLK的振源。ACLK默认振源为XT1CLK
    2、MCLK默认振源为DCOCLKDIV
    3、SMCLK默认振源为DCOCLKDIV
    4、当启用FLL锁相环时,默认选择XY1CLK作为FLLREFCLK参考时钟源
    5、在具有XIN和XOUT与通用I/O共享的设备上,XIN和XOUT pin被设置为通用I/Os,并且XT1一直处于禁用状态,直到为XT1操作配置了复用I/O端口。如果XIN和XOUT不与通用I/Os共享,则默认启用XT1。
    6、上电时,XT2IN和XT2OUT引脚被设置为通用I/O,而XT2处于禁用状态

对于MSP430F5529来说,上电后,默认情况下FLL选择XT1,如果晶振引脚(XIN, XOUT)与通用I/O共享,XT1将保持禁用状态,直到与晶振引脚关联的PxSEL位和XT1BYPASS位决定被设置,如果XIN和XOUT不与通用I/O共享,则XT1启用。当XT1CLK使用32.768Khz晶体时,故障控制逻辑立即导致ACLK由REFOCLK提供,因为XT1不是立即稳定的。当晶体启动得到并稳定后,FLL稳定在MCLK和SMCLK到1.048576 MHz,fDCO = 2.097152 MHz

UCS模块故障安全操作:
  UCS模块包含振荡故障故障安全功能,该特性检测XT1、DCO和XT2的振荡器故障,存在的故障类型为:
  1、低频模式下XT1低频振荡器故障(XT1LFOFFG)
  2、高频模式下XT1高频振荡器故障(XT1HFOFFG)
  3、XT2高频振荡器故障(XT2OFFG)
  4、DCO故障标志(DCOFFG)

  对应的晶体振荡器打开后不能正常工作时,设置晶体振荡器故障位XT1LFOFFG、XT1HFOFFG、XT2OFFG。在故障位被设置之后,即使故障条件不再存在,它们仍然保持设置直到在软件中重置。如果故障一直存在,而用户却清除了故障标志位,则故障标志位在清除后再次自动置位。所以,在编写程序时,一定要判断故障标志位是否置位,如果置位,将其软件清除。

3、MSP430F5529 Launch Pad时钟树
  有如下图:
在这里插入图片描述

二、源代码

  下面我们先看一个让F5529输出8Mhz主频时钟的源代码:

#include


void SysClock_Init(); //申明系统时钟初始化函数

void SetVcoreUp(unsigned int level); //申明核心电压调整函数


void main()

{

    WDTCTL = WDTPW + WDTHOLD;

    SetVcoreUp(0x01);   //核心电压等级必须逐级提升,不能直接跳跃提升

    SetVcoreUp(0x02);

    SetVcoreUp(0x03);

    SysClock_Init();


    while(1);

}


void SetVcoreUp(unsigned int level)

{

    //Open PMM register for write

    PMMCTL0_H = PMMPW_H;        //PMMCTL0_H是电源管理寄存器PMMCTL0的高8位,PMMPW_H解锁PMM所有的寄存器

    

    //Set SVS/SVM high side new level

     SVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level; // SVLE --> 此位控制SVSL使能      SVMHE  --> 此位控制SVMHE使能

                                                                      //SVSHRVL --> SVSH 复位电平电压

    //Set SVM low side to new level

     SVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 *level;  

   

    //Wait till SVM is settle

     while((PMMIFG & SVSMLDLYIFG) == 0);

  

    //Clear already set flags

    PMMIFG &= ~(SVMLVLRIFG + SVMLIFG);


    //Set Vcore to new level

    PMMCTL0_L = PMMCOREV0 *level;


    //Wait till new level reached

    if((PMMIFG & SVMLIFG))

  while((PMMIFG & SVMLVLRIFG) == 0);


   //Set SVS/SVM low side to new level

   SVSMLCTL = SVSLE +SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;


   //Lock PMM registers for write access

   PMMCTL0_H = 0x00;           //锁存所有寄存器

}


void SysClock_Init()

{

    UCSCTL3 = SELREF_2;         //设置DCO锁相环的时钟源为REFOCLK

    UCSCTL4 |= SELA_2;          //Set ACLK = REFO

    __bis_SR_register(SCG0);    //失能锁相环时钟,系统时钟切换到备用时钟,此时可以对时钟进行设置

    UCSCTL0 = 0X0000;           //将DCOx,MODx设置成最低

    UCSCTL1 = DCORSEL_4;        //设置DCO的频率范围   2~20Mhz

    UCSCTL2 = FLLD_0 + 762;     //FLLD_0  --->  32768Hz为基准时钟的分频  ,FFLN  ---> 是后面的数字

    //(N+1) * FLLRef = Fdco

                                //(243+1) * (32768/1) = 8Mhz

    __bic_SR_register(SCG0);    //使能锁相环时钟

    //最坏的情况下,DCO恢复的解决时间是(32 * 32 * n)/f_MCLK  =  Num MCLK cycles for DCO to settle

    // (32 *32 * 8Mhz)/32768Hz = 250K       ---->  n为我们要设置的频率

    __delay_cycles(250000);


    //进入循环直到XT1、XT2、DCO稳定为止,本例中只需循环到DCO稳定下来即可

    do

    {

        UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);

        //清除XT2、XT1、DCO 默认标志

        SFRIFG1 &= ~OFIFG;      //清除默认标志,SFRIFG1 --> 中断标志寄存器

        //OFIFG --> 振荡器故障中断标志   0:没有中断发生  1:有中断即将发生

    }while(SFRIFG1 & OFIFG);    //测试振荡器故障中断是否发生,如果发生就卡在此处循环

}


关键字:MSP430F5529  控制时钟 引用地址:MSP430F5529火箭板 ---> 控制时钟系统输出频率实验

上一篇:【MSP430F5529】一些相关代码
下一篇:MSP430F5529 GPIO 按键LED灯

推荐阅读最新更新时间:2024-11-02 09:02

MSP430F5529 (六)定时器Timer_A-1
MSP430F5529共有两类共4个定时器,分别是Timer_A定时器3个和Timer_B定时器1个,按照每个寄存器配备的捕获/比较器的个数分别命名为Timer0_A(内有5个捕获比较器)、Timer1_A(3个)、Timer2_A(3个)、Timer0_B(7个)。 这一章,我们讲定时器Timer0_A.(A类的都一样) 注意:下面所提到的所有寄存器,在TA后面插入0或1或2就分别表示Timer0_A、Timer1_A、Timer2_A(我这里省略了数字) 定时器很重要啊! 6.1 简介一下 定时器A是一个复合了捕获/比较寄存器的十六位的定时(加减)计数器。定时器A支持多重捕获/比较,PWM输
[单片机]
<font color='red'>MSP430F5529</font> (六)定时器Timer_A-1
MSP430F5529学习笔记(一)
MSP430F5529作为一款TI公司推出的16位嵌入式控制芯片,相比于传统的51单片机,有着更加丰富外设资源。但是他不具有32等ARM-M架构嵌入式芯片的强大计算能力。 MSP430系列的单片机主张的是超低功耗,例如在使用电池长期供电的设备中,430的超低功耗可以有效延长产品的使用时间。 在学习430之前建议先学习8051系列的单片机,对51有一个充分的认识之后在进一步学习430。这两款处理器都有相似的地方,从最简单的编程开始,他们都是直接操作寄存器,完成各种外设的配置。 一、430与51做一个简单的对比 指令集不同 51内核单片机是8 位单片机。其指令是采用的被称为“ CISC ”的复杂指令集,共具有111 条指令
[单片机]
<font color='red'>MSP430F5529</font>学习笔记(一)
msp430f5529学习笔记(2)时钟系统
什么是时钟系统和时钟源 在单片机中,单片机每开始一个周期的工作就需要一个节拍来告诉它,这就相当于我们的心脏每跳动一次,血液被泵到身体各处一次一样。那么单片机的时钟就是单片机工作所需要的节拍,单片机的取指令、译指令等工作都需要以这样的时钟周期为最小周期。 而实际上这样一个时钟就是一个方波信号,在每一个上升沿或者下降沿会迫使单片机工作一次。产生这样有规律的方波信号的源头就叫做时钟源(振荡器),因此单片机工作的快慢就和这个时钟源的频率有关系,频率越高,单片机完成一次工作的时间就越短,频率越低,单片机完成一次工作的时间就越长。但并不意味着可以无脑的选择最高频率,对很多不需要大量处理,只是控制的情况,为了增加可靠性,降低编
[单片机]
<font color='red'>msp430f5529</font>学习笔记(2)<font color='red'>时钟</font><font color='red'>系统</font>
MSP430F5529 DriverLib 库函数学习笔记(四点五)printf打印输出
平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 代码实现 重定向fputc(int ch, FILE *f)直接使用printf的方法只有字符串和%s打印正常,数字打印不出来 只好换成这个。 这个程序是我以前写在STM32里的,现在移植过来,效果依然不错。 #include string.h #include stdarg.h #include stdio.h void UART_printf(uint16_t baseAddress, const char *format,...) {
[单片机]
<font color='red'>MSP430F5529</font> DriverLib 库函数学习笔记(四点五)printf打印<font color='red'>输出</font>
MSP430F5529 DriverLib 库函数学习笔记(六)定时器A产生PWM波
平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 1.通过Timer_A_outputPWM配置产生PWM波 所选输出引脚为P1.2 初始化函数 #define TIMER_PERIOD 12500 void Timer_A_PWM_Init(void) { Timer_A_outputPWMParam htim = {0}; //P1.2复用输出 GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P1, GPIO_
[单片机]
<font color='red'>MSP430F5529</font> DriverLib 库函数学习笔记(六)定时器A产生PWM波
MSP430F5529火箭板 --->基于定时器A的LED灯闪烁实验(含Timer_A分析)
一、定时器——Timer_A 在进入正题之前,我们先来了解一下MSP430F5529的定时器,本次实验我们使用Timer_A定时器,这里需要注意的是MSP430F5529一共有3个A类定时器,分别是Timer0_A5、Timer1_A3、Timer2_A3 在这里需要提一下的是Timer_A定时器有6种寄存器,都是以TAx开头,如果该寄存器涉及捕获比较单元的后面会有个n 上面我们大致了解了一下MSP430F5529有关定时器Timer_A的相关寄存器个数和A类定时器的个数,下面我们就寄存器配置方法进行分析: 1、Timer_A框图 在学习使用Timer_A之前我们一定要先大致了解一下Timer_A的流程框图,这有助于我
[单片机]
<font color='red'>MSP430F5529</font>火箭板 --->基于定时器A的LED灯闪烁实验(含Timer_A分析)
STM8 CAN外部时钟控制寄存器
STM8 CAN外部时钟控制寄存器(CLK_CANCCR) 地址偏移值:0x0B 复位值:0x00 位7:3 保留。始终为0。 位2:0 CANDIV :外部CAN时钟分频值 由软件写入,用于指定外部CAN时钟的分频值。详情请参见章节23.9 000:外部CAN时钟=fHSE/1(复位值) 001:外部CAN时钟=fHSE/2 010:外部CAN时钟=fMASTER/4 … 111:外部CAN时钟=fMASTER/8
[单片机]
STM8 CAN外部<font color='red'>时钟</font><font color='red'>控制</font>寄存器
一种时钟与功耗管理控制器的硬件实现
摘 要 :本文阐述了一种芯片时钟与功耗管理控制器的工作原理,进行了模块划分,采用硬件描述 语言实现了设计,并利用Synopsys公司的EDA工具进行了仿真和综合。该控制器已成功应用于东南大学ASIC中心研制的嵌入式处理器芯片Garfield4Plus中,并通过了实际的流片和测试。 引言 在SoC芯片设计中,功耗是微处理器芯片是否成功的重要标准之一。同时,作为一个庞大的数字电路系统,处理器芯片的时钟架构及其控制也将变得尤为重要,将直接影响到芯片的功耗。基于以上考虑,整个芯片的时钟和功耗必须得到统一的管理和控制。包括核与总线在内的各功能模块的时钟应当能够跟据具体工作需要自由开关,以保证芯片尽可能地减小功耗。
[工业控制]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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