RAIL Features#
RAIL includes the following features in software, as well as many others. This table reflects the most recent version of RAIL. If you are interested in when a particular feature became available, see the RAIL changelog.
RAIL Highlights | Description |
---|---|
Simple Transmit and Receive | Both transmit and receive can be started with a single API. Finished transmission and received packets are signaled with RAIL events. |
Automatic State Transitions | Configurable transitions to go from one state to the next based on successful or unsuccessful transmit and receive operations. These support an optional delay as well to allow for consistent timings from one state to the next. |
Frame Buffering | Two configurable size frame buffers—one for receive and one for transmit—are available. Both can hold multiple frames. |
Timekeeping, Timestamping, and Timers | RAIL automatically maintains a RAIL timebase with µsec granularity. It can be used for: |
" | Timestamping packets (enabled by default) at different packet positions |
" | Scheduling receive and transmit operations |
" | One general purpose timer with optional timer virtualization in RAIL (called MultiTimer) |
" | Optional synchronization with RTC, to keep time and make scheduling possible from EM2 sleep mode |
Scheduled Transmit | Transmit at an absolute or relative time in the future. |
Scheduled Receive | Start receiving at an absolute or relative time in the future with an optional timeout after that start time. |
CCA (Clear Channel Assessment) with Retransmission | Supports two common medium access methodologies, which delays transmission until the channel is clear: |
" | CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) -- based on IEEE 802.15.4 specification. |
" | LBT (Listen Before Talk) -- based on ETSI EN 300 220-1 specification. |
RSSI (Received Signal Strength Indicator) Read | Ability to read instantaneous and average RSSI values from hardware. RSSI and Link Quality Indicator (LQI) measurements for each received frame is also available. |
Address Filtering | Two address fields are supported (with fixed location), both maximum four bytes long. Each field can filter for four addresses (for example, unicast and broadcast address). Addresses can be enabled and configured at runtime. For IEEE 802.15.4, this is handled specially, since it uses addresses with the location configured with the frame type. |
Auto ACK | Automatic transmission of a response packet after some delay to every successful receive. This can be a constant payload or dynamically loaded by the user any time before the transmission is supposed to begin. For IEEE 802.15.4 this is handled automatically to improve performance. |
IEEE 802.15.4 Helper Features | These features include: |
" | Address filtering (supporting three short address, long address and PAN ID) |
" | Auto ACK |
" | Event on Data Request command to set the frame pending bit |
" | Note: To implement IEEE 802.15.4-based protocols, Silicon Labs recommends using the Connect stack’s MAC mode, which is a full IEEE 802.15.4 MAC layer implementation. For more information, see UG235.03: Architecture of the Silicon Labs Connect Stack v2.x or UG435.03: Architecture of the Silicon Labs Connect Stack v3.x. |
Bluetooth LE and Z-Wave Helper APIs | Helpers for implementing a Bluetooth LE or Z-Wave networking stack. These provide special modes and optimizations in hardware for these specific modes. |
Multi-PHY Support | The PHY configuration can be changed runtime. Also, RAIL can load PHY. |
Multiprotocol Support | Separate version of the RAIL library with a radio scheduler that can manage requests from different radio configurations on the same chip: |
" | Supports time-slicing N different radio configurations where N >= 2. |
" | Allows for different priority tasks from the different configurations and manages them so the highest priority is always completed. |
" | Allows for tasks to be moved around if the timing isn't critical, for most robust network. |
Calibration Support | Chip-specific calibrations. Commonly these include recalibrating for large temperature changes while in receive and image rejection calibration for increased sensitivity. |
Stream Generation for RF Testing | RAIL can generate Continuous Wave and PN9 pseudo-random modulated streams with any PHY for RF testing. |
Receive Antenna Diversity | Allows toggling between two antennas in receive mode and selecting the one with the stronger signal to improve sensitivity. Note that this is only supported on certain chips and PHY configurations. |
RAIL API to Get Entropy from Radio | Radio can be used to collect entropy from receive chain noise. |
Power Manager Support | When enabled, notifies the power manager component when the radio is on to prevent Energy Mode 2 (EM2) sleep. |