主题中讨论的其他器件: 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); }