UG435.07: Energy Saving with Silicon
Labs Connect v3.x
This chapter of the Connect v3.x User’s Guide discusses techniques to reduce power consumption of network applications
based on the Silicon Labs Connect Stack. The Connect stack is
delivered as part of the Silicon Labs Proprietary Flex SDK v3.0
and higher. The Connect v3.x User's Guide assumes that you
have already installed the Simplicity Studio development environment and the Flex SDK, and that you are familiar with the basics
of configuring, compiling, and flashing Connect-based applications. Refer to UG435.01: About the Connect v3.x User's Guide
for an overview of the chapters in the Connect v3.x User's Guide.
The Connect v3.x User's Guide is a series of documents that provides in-depth information for developers who are using the Silicon Labs Connect Stack for their application development. If you are new to Connect and the Proprietary Flex SDK, see
QSG168: Proprietary Flex SDK v3.x Quick Start Guide.
KEY POINTS
• Discusses Silicon Labs Connect energy
modes.
• Describes the support for sending data to
sleepy end devices.
• Describes additional methods for reducing
Proprietary is supported on all EFR32FG devices. For others, check the device's data
sheet under Ordering Information > Protocol Stack to see if Proprietary is supported. In
Proprietary SDK version 2.7.n, Connect is not supported on EFR32xG22.
silabs.com | Building a more connected world. Rev. 0.1
UG435.07: Energy Saving with Silicon Labs Connect v3.x
Introduction to Energy Modes
1. Introduction to Energy Modes
In battery-powered microcontroller applications, saving energy is essential. By reducing current consumption, the application's effective
battery life can be significantly increased.
The Wireless Gecko (EFR32™) portfolio supports five Energy Modes:
• Run Mode (Energy Mode 0)
• Sleep Mode (Energy Mode 1)
• Deep Sleep Mode (Energy Mode 2)
• Stop Mode (Energy Mode 3)
• Hibernate Mode / Shut Off Mode (Energy Mode 4)
Of these five energy modes, Silicon Labs Connect supports EM0, EM1, and EM2.
1.1 Energy Mode 0
This is the default mode. In this mode, the CPU fetches and executes instructions from flash or RAM, and all peripherals are available.
1.2 Energy Mode 1
In sleep mode, the clock to the CPU is disabled. All peripherals, as well as RAM and flash, remain available. By using the Peripheral
Reflex System (PRS) and DMA, several operations can be performed autonomously. This helps save power by halting the main loop of
the application but does not interfere with the timely handling of interrupts. For example, the radio can still receive packets in EM1.
1.3 Energy Mode 2
In deep sleep mode, no high-frequency oscillators run, which means that only asynchronous and low-frequency peripherals are available. This mode further improves energy efficiency while still allowing for a range of activities. In this mode, the radio is shut down and
the node will not receive packets.
1.4 Power Manager Component
Power Manager is a platform-level software module that manages the system's energy modes. In case of the example applications, the
Power Manager component is enabled by default. Silicon Labs recommends using Power Manager to control the energy modes of the
applications.
Figure 1.1. Silicon Labs Connect Power Manager Component
The application and the components can control the lowest allowed energy mode through the following power manager API calls:
void sl_power_manager_add_em_requirement(sl_power_manager_em_t em);
void sl_power_manager_remove_em_requirement(sl_power_manager_em_t em);
silabs.com | Building a more connected world. Rev. 0.1 | 2
UG435.07: Energy Saving with Silicon Labs Connect v3.x
Introduction to Energy Modes
1.5 Support for Sending Data to Sleepy End Devices
When a sleepy end device is in sleep mode, the MCU is stopped and the radio is turned off. As a result, the device is not able to receive data from other parties. To overcome this issue, when a sleepy device wakes up it check whether messages are waiting to receive. Silicon Labs Connect supports two ways to send data to sleepy end devices:
• Indirect Queue
• Mailbox (uses Indirect Queue)
Note: If a device is configured as a sleepy end device, the radio is always in idle mode except when it transmits or during some limited
period when it waits for specific message such as an acknowledge or pending frame. Conversely, non-sleepy devices are always in
reception mode except during transmit periods.
1.5.1 Indirect Queue
Indirect queue is a component within parent support, which is implicitly enabled in coordinators (or range extenders) in star (or extended star) topologies due to the Parent Support component. On the device side, the Poll component must be enabled to retrieve information from the coordinator—for example ,in cases when a request needs longer processing time, an end device may choose to sleep
(to allow processing to complete) and retrieve the information when it wakes up later.
The coordinator holds such data until it is requested by the relevant end device. In this case, to obtain data from the coordinator an end
device must first poll the coordinator to determine whether any data is available. To achieve this, the device sends a data request which
the coordinator acknowledges. Then, the coordinator determines whether it has any data for the requesting device. If it does, it sends a
data packet which the receiving device may acknowledge.
1.5.1.1 Coordinator/Extender Settings
There are two parameters in the Parent Support component that modify the indirect queue behavior:
• Indirect Queue Size determines how many packets can be in the queue at a time. If the queue is full, no additional items can be
added to the queue until space in the queue is recovered—either by items being sent to the recipient device, or by items aging out
(timeout reached).
• The Indirect Transmission Timeout value is specified in milliseconds. Messages older than the specified timeout will be dropped by
the coordinator.
The following figure shows where to select the Silicon Labs Connect Parent Support component.
Figure 1.2. Silicon Labs Connect Parent Support Component
On the coordinator side, no additional effort need be taken. In Connect, the stack handles the messages sent to a sleepy device.
silabs.com | Building a more connected world. Rev. 0.1 | 3