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:

  1. 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).

  2. Configure Pin Mapping

    • Route SSI signals (SCLK, MOSI, MISO, CS) through ULP GPIOs for proper low-power operation.

  3. Clock Configuration

    • Enable the ULP clock source (typically the 32 MHz RC oscillator) and gate unused clocks.

  4. Power Manager Setup

    • Configure the Power Manager for PS2 mode.

    • Define the required RAM retention regions for DMA descriptors and SSI buffers.

  5. 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.

  6. Peripheral Management Before Sleep

    • Disable unused peripherals.

    • Ensure all pending SSI transfers complete before entering PS2.

  7. DMA Configuration (if applicable)

    • Place DMA descriptors and buffers in ULP memory to allow autonomous transfers in deep sleep.

  8. Wakeup Configuration

    • Use Power Manager APIs to configure wakeup sources (GPIO, timer, wireless events, etc.).

  9. 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:

  1. Reinitialize SSI using sl_si91x_ssi_init().

  2. Reconfigure ULP GPIOs for SSI signals and any active wakeup sources.

  3. Reset SSI parameters—such as baud rate, frame format, FIFO thresholds, DMA, and callbacks—using sl_si91x_ssi_set_configuration().

  4. 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#

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.