Other Parts Discussed in Thread: MSP430FR2311, ENERGYTRACE
主题中讨论的其他器件: ENERGYTRACE
大家好、我们将在 EXP430FR2311 Launchpad 上使用 MSP430FR2311进行开发。
我们能够在 LPM 3.5和 LPM4中降低到低功耗。 但是、我们无法在 LPM3中实现低功耗模式。 在其他论坛帖子中、我能够看到这是因为 ACLK 请求 XT1CLK、然后请求 REFO、消耗15 uA。 但是、在我们的应用中、我们不需要 ACLK、因为我们可以直接从 VLOCLK 获取 RTC。
我们使用的是 TI MSP driverlib、因此我们将其添加到了代码中:
//HWREG8 (CS_BASE + OFS_CSCTL8)&&~选择时钟; CS_disableClockRequest (CS_ACLK | CS_MCLK | CS_SMCLK | CS_MODOSC);
鉴于此、我们预计 ACLK 将在 LPM3中关闭、因为我们不允许它获取任何时钟请求。 [这意味着 REFO 时钟也会关闭]。
但是、它似乎不起作用、我们看到~17uA 泄漏。
请帮帮我们。 我们希望最大程度地降低 LPM3中的功耗、并且我们只需要运行 VLOCLK + RTC [或 timer0/Timer1]。 然而、REFO -> ACLK 似乎仍在正常运行、这是没有理由的。 最后粘贴了我们的最小代码
#include
#include
void init_clock()
{
FRAMCTL_configureWaitStateControl (FRAMCTL_ACCESS_TIME_CYCESS_0);
// REFO 时钟(精确为32kHz)-> FLL -> 8MHz OUT (DCO)
// CS_initClockSignal (CS_FLLREF、CS_REFOCLK_SELECT、CS_CLOCK_DIVIDER_1);// fLLREFCLK /1 = 32.768kHz
//CS_initFLLSettle (7995,243);//fDCOCLKDIV =(FLLN + 1)*(fFLLREFCLK/n)、9MHz =(x + 1)* 32.768kHz
//DCO -> SMCLK。 仅供 SPI 使用
//CS_initClockSignal (CS_SMCLK、CS_DCOCLKDIV_SELECT、CS_CLOCK_DIVIDER_1);
//DCO -> MCLK。 由 CPU/FRAM/RAM 使用
//CS_initClockSignal (CS_MCLK、CS_DCOCLKDIV_SELECT、CS_CLOCK_DIVIDER_1);
//VLO -> ACLK。 使用者
CS_initClockSignal (CS_ACLK、CS_VLOCLK_select、CS_clock_divider);
//关闭 SVS
PMM_disableSVSH ();
//初始化 RTC
RTC_INIT (RTC_BASE、10000、RTC_CLOCKDIVIDER_1);
RTC_clearInterrupt (RTC_BASE、RTC_overflow_interrupt_FLAG);
//为 RTC 溢出启用中断
RTC_enableInterrupt (RTC_BASE、RTC_overflow_interrupt);
//使用时钟源 VLOCLK 启动 RTC 时钟
RTC_START (RTC_BASE、CS_ACLK);
cs_disableClockRequest (CS_ACLK | CS_MCLK | CS_SMCLK | CS_MODOSC);
}
void main (void)
{
WDT_A_HOLD (WDT_A_base);
// init_clock ();
GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN_All8);
GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN_All8);
GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN_All8);
GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN_All8);
//TBDXXX
PMM_unlockLPM5 ();
CS_TurnOffSMCLK ();
RTC_STOP (RTC_BASE);
while (1) _bis_SR_register (LPM3_bits);
}


