General-Purpose Input/Output (GPIO) Retention and Wake-Up Configuration#
The SiWG917 provides mechanisms to retain General-Purpose Input/Output (GPIO) states and configure wake-up sources across various low-power modes.
This ensures that essential I/O functionality — such as wake-up triggers, status monitoring, and peripheral signaling — remains active even when most of the System-on-Chip (SoC) is powered down.
This section explains GPIO retention, wake-up source configuration, and best practices for low-power applications.
GPIO Retention Overview#
When transitioning between different power states (Active → Sleep / Active → Standby / Active → Shutdown), GPIOs that belong to certain power domains can retain their logical state even after transitioning to low power states.
Domain-Based Retention Capability#
GPIO Domain | Power Domain | Retention Capability | Typical Use |
|---|---|---|---|
High-Performance (HP) GPIO | IO_VDD_1 / 2 / 3 | No | High-performance, disabled in low-power states |
Ultra-Low-Power (ULP) GPIO | ULP_IO_VDD | Partial | Retained in low-power active states (PS2 ACTIVE and PS1) |
Ultra-Ultra-Low-Power (UULP) GPIO GPIO | UULP_VBATT_1 | Yes | Retained across all states (Domain is always on) |
Note:
Only UULP GPIOs can retain both their logic state and configuration during transitions into Sleep, Standby, or Shutdown modes.
After wake-up from Sleep mode, the SoC / HP GPIOs and ULP GPIOs must be reconfigured to restore their intended functionality.
GPIO Wake-Up Configuration#
GPIOs belonging to the UULP domain can be configured as wake-up sources for Sleep, Standby, or Shutdown modes.
The wake-up event can be triggered only by level transitions on the input pin.
Supported Wake-Up Trigger Types#
Level High
Level Low
Notes:
It is recommended to use the Universal Configurator (UC) available in Simplicity Studio to configure the UULP GPIOs as wake-up sources. This can be achieved through the PM Wakeup Source Configuration component, which internally uses the above APIs to set up the UULP GPIOs for wake-up functionality.
Multiple UULP GPIOs can be configured as wake-up sources simultaneously.
Wake-Up Event Handling#
Upon a valid wake-up event, the system transitions from a Sleep/Standby state back to the corresponding Active mode.
Once active, the registered callback function associated with the wake-up GPIO is executed.
Example: Wake-Up Callback Handler#
void uulp_gpio_wakeup_callback(void)
{
/* Clear wake-up flag */
sl_gpio_clear_interrupt_status(SL_SI91X_GPIO_UULP_PORT, SL_SI91X_GPIO_UULP_PIN_3);
/* Perform wake-up specific tasks */
system_resume_operations();
}Tip:
After wake-up, verify which GPIO triggered the event using the GPIO status register, as multiple wake-up sources may be active.
Recommended Design Guidelines#
Design Aspect | Recommendation |
|---|---|
Retention Strategy | Use UULP GPIOs for critical always-on control signals or state retention. |
Wake-Up Control | Assign UULP GPIOs for external events such as button presses or sensor triggers. |
Debouncing | Apply hardware or software debounce for mechanical switches used as wake-up sources. |
Power Domains | Avoid using HP GPIOs in low-power paths, as they are powered off in PS2 and below. |
System Resume | Reinitialize GPIOs and clear flags upon wake-up to prevent repeated triggers. |
Summary#
UULP GPIOs are the primary means of maintaining connectivity and responsiveness in low-power modes.
ULP GPIOs retain function in PS2 active and PS1 states but are inactive during PS2 sleep.
Combining low power GPIO operation with event-driven wake-up maximizes both power efficiency and system responsiveness.