求助,msp430f5438A内部时钟倍频问题
最近做一个项目要求低功耗,原先使用的是外部8M晶振,但8M晶振一直起振使功耗无法去到想要的水平(3.6v供电,50微安电流)。如果进入低功耗时强制把外部晶振引脚关掉的话,退出低功耗重新初始化时钟也无法让8M晶振重新起振,这样就无法正常工作。后来为了解决这个问题就想到用内部时钟,但内部时钟倍频始终没办法调整到8M,频率好像被哪里限制了,最高输出的频率测得是2.358M。请各位帮忙看看,谢谢!下面是我的时钟初始化程序(不好意思,这个程序也是网上找来的):
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); // 看看异常是否还在
}
按芯片说明倍频是通过UCSCTL2寄存器调整的,但我无论怎么更改都无法把频率调上去,就如上面所说频率好像被哪个地方限制住了,请各位帮忙看看。 请大家出出主意,这问题困扰了我好久。 怎么都没人回复我?是不是我的问题有问题?
页:
[1]