PMU Deep-sleep mode

In Deep-sleep mode, the system clock to the processor is disabled as in Sleep mode. All analog blocks are powered down, except for the BOD circuit and the watchdog oscillator, which can be selected or deselected during Deep-sleep mode in the PDSLEEPCFG register. The main clock, and therefore all peripheral clocks, are disabled except for the clock to the watchdog timer if the watchdog oscillator is selected. The IRC is running, but its output is disabled. The flash is in stand-by mode.

Deep-sleep mode eliminates all power used by analog peripherals and all dynamic power used by the processor itself, memory systems and related controllers, and internal buses. The processor state and registers, peripheral registers, and internal SRAM values are maintained, and the logic levels of the pins remain static.

Power configuration in Deep-sleep mode

Power consumption in Deep-sleep mode is determined by the Deep-sleep power configuration setting in the PDSLEEPCFG (SYSCON registerName = PDSLEEPCFG addressOffset = 0x230) register:

  • The watchdog oscillator can be left running in Deep-sleep mode if required for the WWDT.
  • The BOD circuit can be left running in Deep-sleep mode if required by the application.

Programming Deep-sleep mode

The following steps must be performed to enter Deep-sleep mode:

  1. The PM bits in the PCON register must be set to 0x1 (PMU registerName = PCON addressOffset = 0x000).
  2. Select the power configuration in Deep-sleep mode in the PDSLEEPCFG ( SYSCON registerName = PDSLEEPCFG addressOffset = 0x230) register.
  3. Select the power configuration after wake-up in the PDAWAKECFG (SYSCON registerName = PDAWAKECFG addressOffset = 0x234) register.
  4. If any of the available wake-up interrupts are needed for wake-up, enable the interrupts in the interrupt wake-up registers (SYSCON registerName = STARTERP0 addressOffset = 0x204, SYSCON registerName = STARTERP1 addressOffset = 0x214) and in the NVIC.
  5. Select the IRC as the main clock. See SYSCON registerName = MAINCLKSEL addressOffset = 0x070.
  6. Write one to the SLEEPDEEP bit in the ARM Cortex-M0+ SCR register (PMU registerName = SCR addressOffset = 0xD10).
  7. Use the ARM WFI instruction.

Wake-up from Deep-sleep mode

The microcontroller can wake up from Deep-sleep mode in the following ways: