Synchronous Serial Interface (SSI) Low-Power Instance#
Low-Power Instance#
The low-power (ULP) instance of the Synchronous Serial Interface (SSI) provides an optimized solution for energy-constrained applications.
This capability enables serial communication during deep sleep states, helping extend battery life in portable and IoT devices.
Usage of the Low-power Instance#
The Ultra-Low-Power (ULP) SSI instance allows communication during Power State 2 (PS2) with minimal energy consumption.
Battery-powered systems can maintain essential data transfers without fully waking the CPU, conserving energy and improving efficiency.
Benefits of Using ULP SSI#
Maintain communication during deep sleep modes.
Significantly reduce overall system power consumption.
Enable autonomous data acquisition from low-power sensors.
Support wake-on-data or event-driven scenarios.
Configure ULP SSI for Low-power Operation (PS2)#
To configure the ULP SSI instance for operation in PS2 mode:
Enable the ULP SSI Component
In Simplicity Studio, open the Software Components view.
Install and enable the ULP SSI component (instead of the standard SSI).
Configure Pin Mapping
Route SSI signals (SCLK, MOSI, MISO, CS) through ULP GPIOs for proper low-power operation.
Clock Configuration
Enable the ULP clock source (typically the 32 MHz RC oscillator) and gate unused clocks.
Power Manager Setup
Configure the Power Manager for PS2 mode.
Define the required RAM retention regions for DMA descriptors and SSI buffers.
Power Transition Control
Use
sl_si91x_power_manager_add_ps_requirement(SL_SI91X_POWER_MANAGER_PS2)to request entry into PS2.Remove the PS2 requirement when returning to active operation.
Peripheral Management Before Sleep
Disable unused peripherals.
Ensure all pending SSI transfers complete before entering PS2.
DMA Configuration (if applicable)
Place DMA descriptors and buffers in ULP memory to allow autonomous transfers in deep sleep.
Wakeup Configuration
Use Power Manager APIs to configure wakeup sources (GPIO, timer, wireless events, etc.).
Resume Operation After Wakeup
After exiting PS2, reinitialize and reconfigure ULP SSI as needed to resume communication.
Reinitialize After Wakeup#
When the SiWx917 device exits PS2 (low-power mode), reinitialize and reconfigure the ULP SSI and GPIO peripherals to restore communication.
Steps to Reinitialize:
Reinitialize SSI using
sl_si91x_ssi_init().Reconfigure ULP GPIOs for SSI signals and any active wakeup sources.
Reset SSI parameters—such as baud rate, frame format, FIFO thresholds, DMA, and callbacks—using
sl_si91x_ssi_set_configuration().Resume SSI transfers or polling after verifying the first transaction.
Example – ULP SSI in Low-power Mode#
// Init and configure (regular/ULP) SSI before entering PS2
sl_si91x_ssi_init(SL_SSI_ULP_MASTER_ACTIVE, &ssi_driver_handle);
sl_si91x_ssi_set_configuration(ssi_driver_handle,
                               &ulp_ssi_primary_config,
                               ulp_ssi_primary_slave_number);
sl_si91x_ssi_register_event_callback(ssi_driver_handle,
                                     ulp_ssi_primary_callback_event_handler);
// Before sleep
// Request transition from PS4 (active) to PS2 (deep sleep capable)
sl_si91x_power_manager_add_ps_requirement(SL_SI91X_POWER_MANAGER_PS2);
// After wakeup
// Wakeup path: reinit SSI
sl_si91x_ssi_deinit(ssi_driver_handle);
sl_si91x_ssi_init(SL_SSI_ULP_MASTER_ACTIVE, &ssi_driver_handle);Implementation Example#
ULP SSI Primary Example:
sl_si91x_ulp_ssi_master
Best Practices for Sleep/Wake Cycles#
Use ULP GPIOs for SSI signal routing whenever possible.
Configure register retention for key control and status registers.
Implement callback handlers to manage state transitions during sleep and wakeup.
Validate SSI operation after wakeup before resuming communication.
Ensure all ongoing transfers complete before entering sleep mode.
Note: Always reinitialize the SSI peripheral after wake-up from PS2 because some configurations might not be retained in deep sleep.