微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MSP430X5XX的时钟系统与低功耗模式

MSP430X5XX的时钟系统与低功耗模式

时间:11-25 来源:互联网 点击:

累的话,可以向我索要xls格式的详表(moosewolerATgmailDOTcom),上边有我加的批注和公式,可以帮助大家方便的设置频率。
5.UCS关键寄存器
详表中我用颜色对8个UCS相关的寄存器进行了分组。这8个寄存器可以分为6组:

  • UCSCTL0、UCSCTL1:DCO配置寄存器。配置DCO频率范围。禁用FLL的时候,设置DCO的开环输出频率。
  • UCSCTL2、UCSCTL3:FLL配置寄存器。这个已经在3.REFO、VLO和DCO中讲过了
  • UCSCTL4、UCSCTL5:MCLK、SMCLK、ACLK配置寄存器。这个在2. 调整模块中讲过了
  • UCSCTL6:外置晶振配置寄存器。可以设定外接晶振的驱动电流,内置电容等参数。
  • UCSCTL7:UCS模块错误寄存器。可以指示UCS当前的错误状态
  • UCSCTL8:UCS请求寄存器。这个后面解释
因为54xx系列单片机内置晶振(REFO),所以
  • FLL配置寄存器是最重要的一组寄存器,它直接和工作频率相关。
  • 其次是DCO配置寄存器,说它重要,只是因为DCORSEL这个参数在这组寄存器中。当设置的频率无法达到的时候,先确定一下频率范围是否合适。
这两个寄存器弄明白了,就可以让UCS输出正常的工作频率了。
其他的寄存器都各有各的作用,具体怎么用可以查看参考文献。
6.MSP430的低功耗模式

A.1 一个设置时钟频率的样例
void McuSetFrequency(void)
{
// 关看门狗
WDTCTL = WDTPW+WDTHOLD;

// 关FLL,等设置完成后,再开启FLL
__bis_SR_register(SCG0);

// MCLK=SMCLK=1MHz; ACLK=32.768kHz; FLL允许
UCSCTL0 = 0x0000;
UCSCTL1 = 0x0010;
UCSCTL2 = 0x103C;
UCSCTL3 = 0x0022;
UCSCTL4 = 0x0233;
UCSCTL5 = 0x0000;
UCSCTL6 = 0x0101;
UCSCTL7 = 0x0000;
UCSCTL8 = 0x0007;

// 重新开启FLL
__bic_SR_register(SCG0);

// 延时等待FLL自动调整DCO,250000是根据8MHz时钟设置的。
// 最惨的状况是FLL把DCO从0开始调到31后才稳定,这个延时即是根据这种情况算得的。
__delay_cycles(250000);

// 等待异常标志清除
// 用VLO和REFO做MCLK的时钟源的时候,不需要考虑这些标志,直接用。
do
{
// 清异常标志
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
SFRIFG1 &= ~OFIFG;
}while (SFRIFG1&OFIFG); // 看看异常是否还在
}


参考文献:
[slau208e] MSP430x5xx Family User Guide
[slas612] MSP430F543x(A), MSP430F541x(A) Mixed Signal Microcontroller
[slac166o] MSP430F54xx Code Examples Rev0


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top