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:
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:
- High-Performance Core Domain: CPU, DMA engines, NVIC, and SRAM.
- Low-Power Autonomous Domain: Low-Power UART (LPUART), Low-Power Timers (LPTIM), and Ultra-Low-Power (ULP) coprocessor.
- 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
- Gate peripheral power rails with dedicated high-side load switches.
- Tri-state or pull down all connected GPIOs before entering sleep to eliminate ESD leakage.
- Audit regulator quiescent current (I_Q) across the full thermal operating envelope.
- Use edge-triggered interrupts and RTC alarms rather than periodic polling.
- 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.