我使用是MSP430F5510,原本我是用低频振荡器32Khz倍频到8Mhz作为系统时钟,整块电路板在待机的时候功耗约为40uA(单片机在LPM3),因为我用内部时钟,如果我在定时器B中断函数里面退出低功耗模式,就会导致单片机复位,此时SYSRSTTV=0x0002,即复位类型为BOR,但是用外部晶振就不会有这个问题,对于这个问题,我严重怀疑是芯片的BUG!!!!!
为了避免上面所提到的问题,我现在用外部晶振,但是发现整块电路板功耗奇高,整块电路板待机电流为330uA(单片机在LPM3),这是什么问题,是不是进入低功耗模式之前要操作一下XT2高频振荡器,但是我以前做MSP430F149的时候没有这个问题,我的本意是让MCLK=SMCLK=8Mhz,即外部晶振时钟。下面我贴上我的时钟初始化程序,及晶振相关电路,希望大家帮我解决一下这个功耗问题!
P5SEL |= BIT2+BIT3; // Port select XT2
P5SEL |= BIT4+BIT5; // Port select XT1
UCSCTL6 |= XCAP_3;
UCSCTL6 &= ~(XT2OFF + XT1OFF); // Set XT2,XT1 On
UCSCTL6 |= (XT2DRIVE1 + XT1DRIVE0); // Internal load cap
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
//UCSCTL6 &= ~XT2DRIVE1; // Decrease XT2 Drive according to
// expected frequency
UCSCTL4 |= SELA_0 + SELM_5 + SELS_5; // Select SMCLK, ACLK source and DCO source
