历史上的今天
返回首页

历史上的今天

今天是:2025年01月25日(星期六)

2021年01月25日 | MSP430F5529火箭板 ---> 控制时钟系统输出频率实验

2021-01-25 来源: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);    //测试振荡器故障中断是否发生,如果发生就卡在此处循环

}


推荐阅读

史海拾趣

CUI Inc.公司的发展小趣事

除了电源产品,CUI Inc.还提供世界一流的配套板级元器件,包括互连、声音、运动控制和热产品。为了满足全球客户的需求,CUI积极扩展其全球化布局。通过与各地的合作伙伴建立紧密的合作关系,CUI成功地将其产品和服务推广到了全球范围内。这种全球化战略不仅提高了CUI的市场份额,还增强了其在国际市场上的影响力。

HBH-Microwave公司的发展小趣事

在电子行业中,客户需求往往具有多样性和特殊性。HBH-Microwave深知这一点,因此始终将提供定制化解决方案作为公司的核心竞争力之一。公司拥有一支专业的研发团队和完善的生产体系,能够根据客户的具体需求,快速设计出符合要求的微波组件和子系统。这种灵活性和高效性使得HBH在众多竞争对手中脱颖而出,赢得了大量客户的信赖和好评。

Fischer Connectors公司的发展小趣事

随着技术的不断成熟,HBH-Microwave开始将目光投向更为广阔的航空航天市场。公司凭借其高质量的微波组件和子系统,成功参与了多个国际知名的航天项目,如卫星通信系统和运载火箭的微波子系统。这些项目的成功实施,不仅展示了HBH在极端环境下的产品可靠性,也进一步拓宽了公司的业务范围和市场影响力。

Abbatron公司的发展小趣事

面对不断变化的市场环境和客户需求,Abbatron公司始终坚持创新发展的理念。公司不断投入研发资金,加强人才培养和团队建设,推动技术创新和产品升级。同时,公司还积极探索新的商业模式和市场机会,为未来的发展奠定了坚实的基础。


请注意,以上故事仅为示例,并非基于Abbatron公司的实际发展情况。您可以根据Abbatron公司的实际情况和公开资料,对这些故事进行改编和补充,以更好地反映该公司的发展历程和成就。

西博臣(CYBERSEN)公司的发展小趣事

作为一家技术驱动型企业,西博臣始终将创新作为发展的核心动力。公司不断投入资源进行新技术和新产品的研发,积极申请各类专利和知识产权,以保护自己的技术成果。这些专利和知识产权不仅提升了公司的技术实力,也为其在市场中树立了良好的口碑。

Custom Components Inc公司的发展小趣事

随着全球环保意识的不断提高,电子行业对绿色环保和可持续发展的要求也日益严格。CCI积极响应这一趋势,将绿色环保理念融入公司的战略规划和日常运营中。

公司不仅采用了环保材料和绿色生产工艺来降低产品对环境的影响,还通过优化生产流程和资源利用等方式降低能耗和排放。此外,CCI还积极参与行业环保组织和公益活动,推动整个行业向更加绿色、环保的方向发展。

问答坊 | AI 解惑

Design Studies on Hybrid Excitation Motor for Main

Design Studies on Hybrid Excitation Motor for Main Spindle Drive in Machine Tools…

查看全部问答>

赛格有没有卖STM8的公司或柜台?

                                 赛格有没有卖STM8的公司或柜台?…

查看全部问答>

LF2407的AD基准

LF2407A的AD基准电压有何要求?…

查看全部问答>

第三章 底层库函数

小川工作室编写,本书为LM3S的USB芯片编写,上传的均为草稿,还有没修改,可能还有很多地方不足,希望各位网友原谅! QQ:2609828265 TEL:15882446438 E-mail:paulhyde@126.com 第三章 底层库函数 3.1底层库函数简介 寄存器级编程 ...…

查看全部问答>

#define DEFC(name, address) __no_init volatile unsigned char name @ address;

各位大虾  我在430的库文件里面看到这么一句 #define DEFC(name, address) __no_init volatile unsigned char name @ address;     是什么啊…

查看全部问答>

ADI实验电路中的经典电路---大电流驱动电路

ADI实验电路中,有一些比较经典的电路,现发上来和大伙分享 大电流驱动电路:(此电路在CN-192中) …

查看全部问答>

HELPER2416开发板-TFTP开发环境的搭建及烧写系统-使用于ubunt 12.04 系统

本帖最后由 wsdymg 于 2014-7-20 16:20 编辑 自从上次捣鼓了SD卡烧录系统后,就继续按照手册进行下一步——TFTP方式烧录,本人使用的Ubuntu 12.04 系统,基本上是按照手册操作,遇到了一些问题,索性有万能的google,这里列出一些跟手册有出入的 ...…

查看全部问答>

DSP内存问题

ccs5.4怎么查看内存分配和当前使用了多少? …

查看全部问答>