The MCUXpresso SDK provides a power driver for the MCUXpresso SDK devices.
The Power library provides two API's to enter low power modes, for example, Deep Sleep and Deep Power Down. Deep Sleep is a sleep mode in which the ARM Core, Flash, and many other peripheral are turned off to save power. The processor can be woken by an IO activity and resumes executing from next instruction after sleep. If a peripheral or RAM needs to On for wakeup or to retain memory then those peripheral need to be kept on during deep sleep. Deep power down is a power down mode where the processor resets upon wake up and during power down the entire part is powered down except for the RTC. For Deep Power Down only the Reset and RTC Alarm or WakeUp can be wakeup sources. The power library provides an API POWER_EnterDeepSleep() to enter deep sleep mode. This function takes a parameter which is a bit mask of the PDRUNCFG register. Any bit that is set is powered on during deep sleep. This mask would usually has the RAM memory that needs to retain power and also any wakeup source. The API POWER_EnterDeepPowerDown() is used to enter deep power down mode. This API also has a parameter but since the voltage is cut off for the peripheral this parameter has no effect
The power library provides API's to set the voltage for the desired operating frequency of the processor. The voltage regulation system can be in normal regulation mode or in low power regulation mode. The API POWER_SetVoltageForFreq() is used to set the voltage for normal regulation mode. Based on the frequency parameter the optimum voltage level is set. The API POWER_SetLowPowerVoltageForFreq() is used to set the low-power voltage regulation mode and set the voltages for the desired frequency. For POWER_SetLowPowerVoltageForFreq() only two FRO frequencies are supported, 12MHz and 48 MHz.
|
#define | LOWPOWER_CFG_LPMODE_ACTIVE 0 |
| ACTIVE mode.
|
|
#define | LOWPOWER_CFG_LPMODE_DEEPSLEEP 1 |
| DEEP SLEEP mode.
|
|
#define | LOWPOWER_CFG_LPMODE_POWERDOWN 2 |
| POWER DOWN mode.
|
|
#define | LOWPOWER_CFG_LPMODE_DEEPPOWERDOWN 3 |
| DEEP POWER DOWN mode.
|
|
#define | LOWPOWER_CFG_LPMODE_SLEEP 4 |
| SLEEP mode.
|
|
#define | LOWPOWER_CFG_SELCLOCK_1MHZ 0 |
| The 1 MHz clock is used during the configuration of the PMC.
|
|
#define | LOWPOWER_CFG_SELCLOCK_12MHZ 1 |
| The 12 MHz clock is used during the configuration of the PMC (to speed up PMC configuration process)
|
|
#define | LOWPOWER_CFG_SELMEMSUPPLY_LDOMEM 0 |
| In DEEP SLEEP power mode, the Memories are supplied by the LDO_MEM.
|
|
#define | LOWPOWER_CFG_SELMEMSUPPLY_LDODEEPSLEEP 1 |
| In DEEP SLEEP power mode, the Memories are supplied by the LDO_DEEP_SLEEP (or DCDC)
|
|
#define | LOWPOWER_CFG_MEMLOWPOWERMODE_SOURCEBIASING 0 |
| All SRAM instances use "Source Biasing" as low power mode technic (it is recommended to set LDO_MEM as high as possible – 1.1V typical – during low power mode)
|
|
#define | LOWPOWER_CFG_MEMLOWPOWERMODE_VOLTAGESCALING 1 |
| All SRAM instances use "Voltage Scaling" as low power mode technic (it is recommended to set LDO_MEM as low as possible – down to 0.7V – during low power mode)
|
|
#define | LOWPOWER_CFG_LDODEEPSLEEPREF_FLASHBUFFER 0 |
| LDO DEEP SLEEP uses Flash Buffer as reference.
|
|
#define | LOWPOWER_CFG_LDODEEPSLEEPREF_BANDGAG0P8V 1 |
| LDO DEEP SLEEP uses Band Gap 0.8V as reference.
|
|
#define | LOWPOWER_CPURETCTRL_ENA_DISABLE 0 |
| In POWER DOWN mode, CPU Retention is disabled.
|
|
#define | LOWPOWER_CPURETCTRL_ENA_ENABLE 1 |
| In POWER DOWN mode, CPU Retention is enabled.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAMX0 (1UL << 0) |
| SRAM instances retention control during low power modes. More...
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAMX1 (1UL << 1) |
| Enable SRAMX_1 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAMX2 (1UL << 2) |
| Enable SRAMX_2 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAMX3 (1UL << 3) |
| Enable SRAMX_3 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM00 (1UL << 4) |
| Enable SRAM0_0 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM01 (1UL << 5) |
| Enable SRAM0_1 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM10 (1UL << 6) |
| Enable SRAM1_0 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM20 (1UL << 7) |
| Enable SRAM2_0 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM30 (1UL << 8) |
| Enable SRAM3_0 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM31 (1UL << 9) |
| Enable SRAM3_1 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM40 (1UL << 10) |
| Enable SRAM4_0 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM41 (1UL << 11) |
| Enable SRAM4_1 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM42 (1UL << 12) |
| Enable SRAM4_2 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM43 (1UL << 13) |
| Enable SRAM4_3 retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM_USB_HS (1UL << 14) |
| Enable SRAM USB HS retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAMRETCTRL_RETEN_RAM_PUF (1UL << 15) |
| Enable SRAM PUFF retention when entering in Low power modes.
|
|
#define | LOWPOWER_SRAM_LPMODE_MASK (0xFUL) |
| SRAM Low Power Modes.
|
|
#define | LOWPOWER_SRAM_LPMODE_ACTIVE (0x6UL) |
| SRAM functional mode.
|
|
#define | LOWPOWER_SRAM_LPMODE_SLEEP (0xFUL) |
| SRAM Sleep mode (Data retention, fast wake up)
|
|
#define | LOWPOWER_SRAM_LPMODE_DEEPSLEEP (0x8UL) |
| SRAM Deep Sleep mode (Data retention, slow wake up)
|
|
#define | LOWPOWER_SRAM_LPMODE_SHUTDOWN (0x9UL) |
| SRAM Shut Down mode (no data retention)
|
|
#define | LOWPOWER_SRAM_LPMODE_POWERUP (0xAUL) |
| SRAM is powering up.
|
|
#define | LOWPOWER_VOLTAGE_LDO_PMU_INDEX 0 |
| LDO Voltage control in Low Power Modes.
|
|
#define | WAKEUP_SYS (1ULL << 0) /*!< [SLEEP, DEEP SLEEP ] */ /* WWDT0_IRQ and BOD_IRQ*/ |
| Low Power Modes Wake up sources.
|
|
#define | WAKEUP_SDMA0 (1ULL << 1) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_GPIO_GLOBALINT0 (1ULL << 2) |
| [SLEEP, DEEP SLEEP, POWER DOWN ]
|
|
#define | WAKEUP_GPIO_GLOBALINT1 (1ULL << 3) |
| [SLEEP, DEEP SLEEP, POWER DOWN ]
|
|
#define | WAKEUP_GPIO_INT0_0 (1ULL << 4) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_GPIO_INT0_1 (1ULL << 5) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_GPIO_INT0_2 (1ULL << 6) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_GPIO_INT0_3 (1ULL << 7) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_UTICK (1ULL << 8) |
| [SLEEP, ]
|
|
#define | WAKEUP_MRT (1ULL << 9) |
| [SLEEP, ]
|
|
#define | WAKEUP_CTIMER0 (1ULL << 10) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_CTIMER1 (1ULL << 11) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_SCT (1ULL << 12) |
| [SLEEP, ]
|
|
#define | WAKEUP_CTIMER3 (1ULL << 13) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_FLEXCOMM0 (1ULL << 14) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_FLEXCOMM1 (1ULL << 15) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_FLEXCOMM2 (1ULL << 16) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_FLEXCOMM3 (1ULL << 17) |
| [SLEEP, DEEP SLEEP, POWER DOWN ]
|
|
#define | WAKEUP_FLEXCOMM4 (1ULL << 18) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_FLEXCOMM5 (1ULL << 19) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_FLEXCOMM6 (1ULL << 20) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_FLEXCOMM7 (1ULL << 21) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_ADC (1ULL << 22) |
| [SLEEP, ]
|
|
#define | WAKEUP_ACMP_CAPT (1ULL << 24) |
| [SLEEP, DEEP SLEEP, POWER DOWN ]
|
|
#define | WAKEUP_USB0_NEEDCLK (1ULL << 27) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_USB0 (1ULL << 28) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_RTC_LITE_ALARM_WAKEUP (1ULL << 29) |
| [SLEEP, DEEP SLEEP, POWER DOWN, DEEP POWER DOWN]
|
|
#define | WAKEUP_EZH_ARCH_B (1ULL << 30) |
| [SLEEP, ]
|
|
#define | WAKEUP_WAKEUP_MAILBOX (1ULL << 31) |
| [SLEEP, DEEP SLEEP, POWER DOWN ]
|
|
#define | WAKEUP_GPIO_INT0_4 (1ULL << 32) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_GPIO_INT0_5 (1ULL << 33) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_GPIO_INT0_6 (1ULL << 34) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_GPIO_INT0_7 (1ULL << 35) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_CTIMER2 (1ULL << 36) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_CTIMER4 (1ULL << 37) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_OS_EVENT_TIMER (1ULL << 38) |
| [SLEEP, DEEP SLEEP, POWER DOWN, DEEP POWER DOWN]
|
|
#define | WAKEUP_SDIO (1ULL << 42) |
| [SLEEP, ]
|
|
#define | WAKEUP_USB1 (1ULL << 47) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_USB1_NEEDCLK (1ULL << 48) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_SEC_HYPERVISOR_CALL (1ULL << 49) |
| [SLEEP, ]
|
|
#define | WAKEUP_SEC_GPIO_INT0_0 (1ULL << 50) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_SEC_GPIO_INT0_1 (1ULL << 51) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_PLU (1ULL << 52) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_SHA (1ULL << 54) |
| [SLEEP, ]
|
|
#define | WAKEUP_CASPER (1ULL << 55) |
| [SLEEP, ]
|
|
#define | WAKEUP_PUFF (1ULL << 56) |
| [SLEEP, ]
|
|
#define | WAKEUP_PQ (1ULL << 57) |
| [SLEEP, ]
|
|
#define | WAKEUP_SDMA1 (1ULL << 58) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_LSPI_HS (1ULL << 59) |
| [SLEEP, DEEP SLEEP ]
|
|
#define | WAKEUP_ALLWAKEUPIOS (1ULL << 63) |
| [ , DEEP POWER DOWN]
|
|
#define | LOWPOWER_HWWAKE_FORCED (1UL << 0) |
| Sleep Postpone. More...
|
|
#define | LOWPOWER_HWWAKE_PERIPHERALS (1UL << 1) |
| Wake for Flexcomms. More...
|
|
#define | LOWPOWER_HWWAKE_SDMA0 (1UL << 3) |
| Wake for DMA0. More...
|
|
#define | LOWPOWER_HWWAKE_SDMA1 (1UL << 5) |
| Wake for DMA1. More...
|
|
#define | LOWPOWER_HWWAKE_ENABLE_FRO192M (1UL << 31) |
| Need to be set if FRO192M is disable - via PDCTRL0 - in Deep Sleep mode and any of LOWPOWER_HWWAKE_PERIPHERALS, LOWPOWER_HWWAKE_SDMA0 or LOWPOWER_HWWAKE_SDMA1 is set.
|
|
#define | LOWPOWER_WAKEUPIOSRC_PIO0_INDEX 0 |
| Wake up I/O sources. More...
|
|
#define | LOWPOWER_WAKEUPIOSRC_PIO1_INDEX 2 |
| Pin P0(28)
|
|
#define | LOWPOWER_WAKEUPIOSRC_PIO2_INDEX 4 |
| Pin P1(18)
|
|
#define | LOWPOWER_WAKEUPIOSRC_PIO3_INDEX 6 |
| Pin P1(30)
|
|
#define | LOWPOWER_WAKEUPIOSRC_DISABLE 0 |
| Wake up is disable.
|
|
#define | LOWPOWER_WAKEUPIOSRC_RISING 1 |
| Wake up on rising edge.
|
|
#define | LOWPOWER_WAKEUPIOSRC_FALLING 2 |
| Wake up on falling edge.
|
|
#define | LOWPOWER_WAKEUPIOSRC_RISING_FALLING 3 |
| Wake up on both rising or falling edges.
|
|
#define | LOWPOWER_WAKEUPIO_PIO0_PULLUPDOWN_INDEX 8 |
| Wake-up I/O 0 pull-up/down configuration index.
|
|
#define | LOWPOWER_WAKEUPIO_PIO1_PULLUPDOWN_INDEX 9 |
| Wake-up I/O 1 pull-up/down configuration index.
|
|
#define | LOWPOWER_WAKEUPIO_PIO2_PULLUPDOWN_INDEX 10 |
| Wake-up I/O 2 pull-up/down configuration index.
|
|
#define | LOWPOWER_WAKEUPIO_PIO3_PULLUPDOWN_INDEX 11 |
| Wake-up I/O 3 pull-up/down configuration index.
|
|
#define | LOWPOWER_WAKEUPIO_PIO0_PULLUPDOWN_MASK (1UL << LOWPOWER_WAKEUPIO_PIO0_PULLUPDOWN_INDEX) |
| Wake-up I/O 0 pull-up/down mask.
|
|
#define | LOWPOWER_WAKEUPIO_PIO1_PULLUPDOWN_MASK (1UL << LOWPOWER_WAKEUPIO_PIO1_PULLUPDOWN_INDEX) |
| Wake-up I/O 1 pull-up/down mask.
|
|
#define | LOWPOWER_WAKEUPIO_PIO2_PULLUPDOWN_MASK (1UL << LOWPOWER_WAKEUPIO_PIO2_PULLUPDOWN_INDEX) |
| Wake-up I/O 2 pull-up/down mask.
|
|
#define | LOWPOWER_WAKEUPIO_PIO3_PULLUPDOWN_MASK (1UL << LOWPOWER_WAKEUPIO_PIO3_PULLUPDOWN_INDEX) |
| Wake-up I/O 3 pull-up/down mask.
|
|
#define | LOWPOWER_WAKEUPIO_PULLDOWN 0 |
| Select pull-down.
|
|
#define | LOWPOWER_WAKEUPIO_PULLUP 1 |
| Select pull-up.
|
|
#define | LOWPOWER_TIMERCFG_CTRL_INDEX 0 |
| Wake up timers configuration in Low Power Modes.
|
|
#define | LOWPOWER_TIMERCFG_CTRL_DISABLE 0 |
| Wake Timer Disable.
|
|
#define | LOWPOWER_TIMERCFG_CTRL_ENABLE 1 |
| Wake Timer Enable.
|
|
#define | LOWPOWER_TIMERCFG_TIMER_RTC1KHZ 0 |
| Primary Wake up timers configuration in Low Power Modes. More...
|
|
#define | LOWPOWER_TIMERCFG_TIMER_RTC1HZ 1 |
| 1 Hz Real Time Counter (RTC) used as wake up source
|
|
#define | LOWPOWER_TIMERCFG_TIMER_OSTIMER 2 |
| OS Event Timer used as wake up source.
|
|
#define | LOWPOWER_TIMERCFG_OSC32K_FRO32KHZ 0 |
| Wake up Timers uses FRO 32 KHz as clock source.
|
|
#define | LOWPOWER_TIMERCFG_OSC32K_XTAL32KHZ 1 |
| Wake up Timers uses Chrystal 32 KHz as clock source.
|
|
|
static void | POWER_EnablePD (pd_bit_t en) |
| API to enable PDRUNCFG bit in the Syscon. More...
|
|
static void | POWER_DisablePD (pd_bit_t en) |
| API to disable PDRUNCFG bit in the Syscon. More...
|
|
static void | POWER_SetBodVbatLevel (power_bod_vbat_level_t level, power_bod_hyst_t hyst, bool enBodVbatReset) |
| set BOD VBAT level. More...
|
|
static void | POWER_SetBodCoreLevel (power_bod_core_level_t level, power_bod_hyst_t hyst, bool enBodCoreReset) |
| set BOD core level. More...
|
|
static void | POWER_EnableDeepSleep (void) |
| API to enable deep sleep bit in the ARM Core. More...
|
|
static void | POWER_DisableDeepSleep (void) |
| API to disable deep sleep bit in the ARM Core. More...
|
|
static void | POWER_PowerDownFlash (void) |
| API to power down flash controller. More...
|
|
static void | POWER_PowerUpFlash (void) |
| API to power up flash controller. More...
|
|
void | POWER_EnterLowPower (LPC_LOWPOWER_T *p_lowpower_cfg) |
| Configures and enters in low power mode. More...
|
|
void | POWER_CycleCpuAndFlash (void) |
| Shut off the Flash and execute the _WFI(), then power up the Flash after wake-up event This MUST BE EXECUTED outside the Flash: either from ROM or from SRAM. The rest could stay in Flash. But, for consistency, it is preferable to have all functions defined in this file implemented in ROM. More...
|
|
void | POWER_EnterDeepSleep (uint32_t exclude_from_pd, uint32_t sram_retention_ctrl, uint64_t wakeup_interrupts, uint32_t hardware_wake_ctrl) |
| Configures and enters in DEEP-SLEEP low power mode. More...
|
|
void | POWER_EnterPowerDown (uint32_t exclude_from_pd, uint32_t sram_retention_ctrl, uint64_t wakeup_interrupts, uint32_t cpu_retention_ctrl) |
| Configures and enters in POWERDOWN low power mode. More...
|
|
void | POWER_EnterDeepPowerDown (uint32_t exclude_from_pd, uint32_t sram_retention_ctrl, uint64_t wakeup_interrupts, uint32_t wakeup_io_ctrl) |
| Configures and enters in DEEPPOWERDOWN low power mode. More...
|
|
void | POWER_EnterSleep (void) |
| Configures and enters in SLEEP low power mode. More...
|
|
void | POWER_SetVoltageForFreq (uint32_t system_freq_hz) |
| Power Library API to choose normal regulation and set the voltage for the desired operating frequency. More...
|
|
uint32_t | POWER_GetLibVersion (void) |
| Power Library API to return the library version. More...
|
|
void | POWER_Xtal16mhzCapabankTrim (int32_t pi32_16MfXtalIecLoadpF_x100, int32_t pi32_16MfXtalPPcbParCappF_x100, int32_t pi32_16MfXtalNPcbParCappF_x100) |
| Sets board-specific trim values for 16MHz XTAL. More...
|
|
void | POWER_Xtal32khzCapabankTrim (int32_t pi32_32kfXtalIecLoadpF_x100, int32_t pi32_32kfXtalPPcbParCappF_x100, int32_t pi32_32kfXtalNPcbParCappF_x100) |
| Sets board-specific trim values for 32kHz XTAL. More...
|
|
void | POWER_SetXtal16mhzLdo (void) |
| Enables and sets LDO for 16MHz XTAL. More...
|
|
void | POWER_SetXtal16mhzTrim (uint32_t amp, uint32_t gm) |
| Set up 16-MHz XTAL Trimmings. More...
|
|