MSP430F5529的低功耗处理

l4568527193   2012-5-13 14:23 楼主

应用中用到了5529的usb模块,但又要求低功耗,在进入LPM3后不关断晶振XT2的话,低功耗的效果就不好,现在困惑的是,如何在低功耗的同时,又能迅速检测usb的接入。

时钟初始化:

void Init_Clock (void){

P5SEL |=0x3c;

Init_FLL_Settle(USB_MCLK_FREQ / 1000, USB_MCLK_FREQ / 32768); //Start the FLL, at the freq indicated by the config constant USB_MCLK_FREQ

XT2_Start(XT2DRIVE_0); //Start the "USB crystal"

UCSCTL3 |= SELREF_2; // FLLref = REFO

UCSCTL4 |= SELA_0+SELS_0 + SELM_0;; //SELA_2; SMCLK = MCLK = XT2 // ACLK=REFO,SMCLK=DCO,MCLK=DCO

UCSCTL6 &= ~XT2OFF; // 振荡器使能

do {

UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG); // 清除 XT2,XT1,DCO 错误标志

SFRIFG1 &= ~OFIFG ;

}while(SFRIFG1&OFIFG); // 检测振荡器错误标志

UCSCTL6 |= XT2DRIVE0; //+ XT2DRIVE1; // XT2 驱动模式 24~32MHz

SetVCore(3);

}

此为进入低功耗处理

void MCU_GoToSleep(){

UCSCTL6 |=XT2OFF;

LPM3;

}

在终端函数中,先EXIT_LPM3,然后用以下函数退出低功耗模式

void MCU_ExitSleep(){

UCSCTL6 &=~XTS;

UCSCTL6 &= ~XT2OFF; // 振荡器使能

}

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复