Firmware & RTOS Embedded Systems Low Power 6 min read

Architecting Microamp-Level Deep Sleep in Battery-Powered IoT Nodes

Kenura R. Gunarathna
Kenura R. Gunarathna Published on 2/28/2025
Architecting Microamp-Level Deep Sleep in Battery-Powered IoT Nodes

When deploying remote sensing or telemetric devices into field environments without wired power, the battery life calculation is the single most critical engineering metric. A device that draws 15 mA continuously will drain a standard 2500 mAh Li-SOCl₂ cell in less than a week. Conversely, an architecture that rests at sub-15 µA during quiescent periods can easily deliver 5 to 7 years of maintenance-free field operation.

Achieving microamp-level quiescent consumption requires tight co-design across both firmware state machines and electrical schematic design. In this post, we share practical architectural lessons learned from designing ultra-low-power industrial sensor nodes at KRAG.


1. Peripheral Power Rail Gating (Load Switches vs. GPIO Sinking)

A common pitfall in embedded design is putting the microcontroller into deep sleep while leaving external sensors (I2C temp/humidity probes, SPI flash memories, RS485 transceivers) continuously powered on. Even in their standby or shutdown modes, many digital sensors consume between 1 µA and 50 µA each.

Instead of leaving peripheral rails hot, we place high-side P-channel MOSFETs or dedicated integrated load switches (such as the TPS22916 or SLG59M1730V) between the primary 3.3V rail and the sensor power domains:

[Primary 3.3V Rail]

    ┌───┴───┐
    │ Load  │ ◄─── GPIO Gate Control (from MCU)
    │ Switch│
    └───┬───┘

 [Switched 3.3V_SW Rail] ──► [Sensors, SPI Flash, Accelerometer]

The Phantom Power Trap: Floating GPIO Back-Powering

When cutting power to an external sensor via a load switch, all digital signals connected to it (SCL, SDA, CS, MOSI, INT) must be dealt with carefully.

If the MCU drives an output pin HIGH or leaves a weak internal pull-up enabled to an unpowered IC, current flows through the internal ESD clamping diodes of the sensor:

Ileakage=VMCU_IOVESD_ForwardRInternalI_{\text{leakage}} = \frac{V_{\text{MCU\_IO}} - V_{\text{ESD\_Forward}}}{R_{\text{Internal}}}

This “phantom powers” the unpowered chip, often causing erratic behavior, elevated sleep currents of several hundred microamps, and premature silicon degradation.

Rule of thumb: Before asserting deep sleep, configure every GPIO connected to gated rails to high-impedance (INPUT_PULLDOWN or ANALOG_HI-Z).


2. RTC Domain Separation and Wakeup Sources

Modern microcontrollers like the STM32L4/L5 series and ESP32-S3 divide their internal silicon into multiple autonomous power domains:

  1. High-Performance Core Domain: CPU, DMA engines, NVIC, and SRAM.
  2. Low-Power Autonomous Domain: Low-Power UART (LPUART), Low-Power Timers (LPTIM), and Ultra-Low-Power (ULP) coprocessor.
  3. Always-On RTC Domain: Backup registers, real-time clock oscillator, and external wake-up pin comparators.

In KRAG’s firmware architectures, we avoid busy-wait polling loops entirely. The core CPU executes its sensor read and telemetry cycle in under 80 milliseconds at full clock speed, commits non-volatile state to FRAM or retention RAM, and invokes deep sleep:

/* Example STM32 Low-Power Wakeup Configuration */
void Enter_UltraLowPower_Sleep(uint32_t sleep_seconds) {
    /* 1. Isolate GPIO lines to avoid leakage */
    HAL_PWREx_EnableGPIOPullDown(PWR_GPIO_A, PWR_GPIO_BIT_ALL);
    HAL_PWREx_EnablePullUpPullDownConfig();

    /* 2. Configure Wakeup Timer via 32.768 kHz LSE Crystal */
    HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, sleep_seconds, RTC_WAKEUPCLOCK_CK_SPRE_16BITS);

    /* 3. Enter Standby Mode with SRAM2 retention */
    HAL_PWR_EnterSTANDBYMode();
}

By keeping only the 32.768 kHz quartz crystal oscillator and wakeup comparator active, the core chip quiescent draw drops to 1.2 µA.


3. Quiescent Current of Regulators (LDOs & Buck Converters)

Engineers frequently select linear regulators (LDOs) based solely on their maximum output current capability (e.g. 500 mA) without checking their ground pin quiescent current (I_Q).

  • Standard regulators like the AMS1117 consume 5,000 µA (5 mA) just staying turned on!
  • Ultra-low I_Q regulators like the Texas Instruments TPS7A02 or Richtek RT9078 draw only 25 nA to 2 µA under zero load.

When stepping down from a 3.6V Li-SOCl₂ cell or 4.2V LiPo to 3.0V logic, switching to an ultra-low I_Q LDO can immediately turn a 6-month battery lifetime into a 5-year deployment.


4. Empirical Power Profiling

Theoretical power budgets on spreadsheets are indispensable, but real verification requires high-bandwidth dynamic profiling. At KRAG, we validate every hardware revision using a Nordic Power Profiler Kit II (PPK2) and Keysight precision source meters.

This lets us observe transient inrush spikes during radio transmission (such as LTE-M connection handshakes or LoRaWAN SF12 bursts) and verify that our deep sleep plateau stabilizes at single-digit microamps without hidden voltage rail resonance.


Summary Checklist for Long-Life IoT Firmware

  1. Gate peripheral power rails with dedicated high-side load switches.
  2. Tri-state or pull down all connected GPIOs before entering sleep to eliminate ESD leakage.
  3. Audit regulator quiescent current (I_Q) across the full thermal operating envelope.
  4. Use edge-triggered interrupts and RTC alarms rather than periodic polling.
  5. Verify with continuous current-profiling hardware across both transmit bursts and deep sleep states.

Have questions about optimizing battery life or designing custom low-power embedded hardware? Reach out to our engineering team or start an interactive project scope.

KRAG Logo KRAG

Engineering tomorrow's software, firmware, and custom electronics from code to circuit.

Now booking Q3/Q4 R&D sprints
Tech Horizon Newsletter
Insights in Embedded & Software

Bite-sized engineering updates covering chip architecture, RTOS releases, PCB layout techniques, and modern cloud patterns.

© 2026 KRAG. All rights reserved.

info@krag.lk +94-714-709-567 +94-777-190-590