MSP430F5529火箭板-控制时钟系统输出频率实验(含时钟系统分析)

发布者:数字舞者最新更新时间:2021-01-11 来源: eefocus关键字:输出频率 手机看文章 扫描二维码
随时随地手机看文章

实验内容:上电控制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 多路PWM输出控制舵机和电机
下一篇:FreeRTOS 8.2.1在MSP430 上的低功耗实现

推荐阅读最新更新时间:2024-11-03 11:14

stm32单片机pwm设置与实际输出频率不一致
背景:一个驱动板,硬件那边的人帮我焊接,给我焊出一堆问题来。后面我特地连教带把关弄焊接,板子是能工作了,但是输出频率不对。特此记录问题以及结果: 1.单片机驱动板的外部晶振在外发的板厂贴错了90度,导致外部晶振起不来 2.但stm32单片机内部也有一个8mhz晶振,因此单片机还是能工作的 3.并且串口还能正常按配置的速率进行通信,这个要去研究串口配置库函数void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)怎么写的,如图1,我大概看了一眼,库函数里面,对串口速率的配置是按apbclock的实际值来倒算分频因子进行配置的,因此不受前面s
[单片机]
stm32单片机pwm设置与实际<font color='red'>输出</font><font color='red'>频率</font>不一致
STM32的PWM输出频率和脉宽(占空比)的计算
一、stm32的pwm输出引脚是使用的IO口的复用功能。 二、T2~T5这4个通用定时器均可输出4路PWM CH1~CH4。 三、我们以tim3的CH1路pwm输出为例来进行图文讲解(其它类似),并在最后给出tim3的ch1和ch2两路pwm输出的c代码(已在STM32F103RBT6上测试成功,大家放心使用!)。 四、给出了PWM频率和占空比的计算公式。 步骤如下: 1、使能TIM3时钟 RCC- APB1ENR |= 1 1; 2、配置对应引脚(PA6)的复用输出功能 GPIOA- CRL &= 0XF0FFFFFF;//PA6清0 GPIOA- CRL |= 0X0B000000;//复用功能输出(推挽
[单片机]
数字万用表测量电流的方法
数字万用表使用前,应认真阅读有关的使用说明书,熟悉电源开关、量程开关、插孔、特殊插口的作用。下面小编给大家介绍一下数字万用表测量电流的方法。 直流电流测量方法将黑表笔插入COM插孔,万能表当测量最大值为200mA的电流时,红表笔插入mA插孔,当测量最大值为20A的电流时,红表笔插入20A插孔。 将功能开关置于直流电流档A-量程,并将测试表笔串联接入到待测负载上,电流值显示的同时,将显示红表笔的极性。 数字万用表在使用时如果使用前不知道被测电流范围,将功能开关置于最大量程并逐渐下降. 如果显示器只显示 1 ,表示过量程,功能开关应置于更高量程. 表示最大输入电流为200mA,过量的电流将烧坏保险丝,应再更换,20A量程无保险丝保
[测试测量]
定时器输出的PWM频率范围及占空比精度
我想要TIM定时器输出的PWM波形:0.1%精度占空比, 频率范围:200Hz - 10KHz。请问能实现吗? Ⅰ 写在前面 如果有朋友下载了上一篇文章我提供的例程,在“bsp_timer.h”文件下,你就会发现有如下一段被我注释了的【说明性文字】。 这个工程是我从之前项目中提取出来(复制部分代码),从新整理的一个的工程。里面的这个被注释了的描述文字是之前整理的,今天重新对其说明一下。 这里句题外话: 我一般都是注重让大家明白其原理,提供的工程代码以简单为原则。比如:没有添加系统,没有添加参数越界检查等额外的代码。不是让你直接拷贝过去就用,一般需要结合你实际工程,对其修改。 Ⅱ 解读那段文字
[单片机]
定时器<font color='red'>输出</font>的PWM<font color='red'>频率</font>范围及占空比精度
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
[单片机]
<font color='red'>MSP430F5529</font><font color='red'>火箭</font><font color='red'>板</font>-<font color='red'>控制</font><font color='red'>时钟</font><font color='red'>系统</font><font color='red'>输出</font><font color='red'>频率</font>实验(含<font color='red'>时钟</font><font color='red'>系统</font>分析)
太阳能LED照明原理与技术详
太阳能是地球上最直接最普遍也是最清洁的能源,太阳能作为一种巨量可再生能源,每天达到地球表面的辐射能大约等于2.5亿万桶石油,可以说是取之不尽、用之不竭。led的光谱几乎全部集中于可见光频段,所以发光效率高,一般人都认为,节能灯可节能4/5是伟大的创举,但LED比节能灯还要节能1/4,这是固体光源更伟大的改革。 太阳能LED照明集成了太阳能与LED的优点。 1、太阳能LED照明系统简介及工作原理 系统由太阳能电池组件部分(包括支架)、LED灯头、控制箱(内有控制器、蓄电池)和灯杆几部分构成;太阳能电池板光效达到127Wp/m2,效率较高,对系统的抗风设计非常有利;灯头部分以1W白光LED和1W黄光LED集成于印刷电路板上排列为
[电源管理]
通用电子产品功能测试平台设计方案
  本文分析当前 电子 产品测试中普遍存在的问题,提出一套通用电子产品功能测试平台,利用COM技术实现,所谓COM(Component Object Model ,组件对象模型),是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准。通过这种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于同一台计算机。   1.概述   1.1背景   1.1.1目前现状   纵观国内外的电子产品测试系统,普遍存在以下几点问题:   1)整个大系统的测试任务中,其统一性与整体性缺乏体系支持;   2)测试工艺、流程、标准不统
[测试测量]
<font color='red'>析</font>通用电子产品功能测试平台设计方案
MSP430F5529火箭 ----> 关于核心电压提升实验
一、电源管理模块和供电监控系统 1、电源管理模块介绍   PMM模块涉及与设备的电源及其监控有关的所有功能。它的主要功能是首先为核心逻辑产生一个电源电压,其次,为设备上电压(DVCC)和核心电压(VCORE)提供几个机制以实现对它们的监督和监控。   PMM使用集成的低压差线性稳压调节器(LDO)来调节从应用到设备的主磁芯电压(D V c c DV_{cc}DVcc)产生二次磁芯电压(V c o r e V_{core}Vcore),一般来说,V c o r e V_{core}Vcore为CPU、内存(闪存和RAM)、数字模块供电,而D V c c DV_{cc}DVcc为I/Os和所有模拟模块(包括振荡器)供电。   在本章中
[单片机]
<font color='red'>MSP430F5529</font><font color='red'>火箭</font><font color='red'>板</font> ----> 关于核心电压提升实验
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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