SIXG3XX-specific interrupt sources.
Below are the interrupt handlers implemented within the RAIL library for the Series 3 Wireless Platform. See EFR32 for more details about interrupt initialization and priorities. For more information about the interrupt vectors and where they are on your specific chip, see the startup_sixg3xx.c file for your chip. These can be found under the Device/SiliconLabs folder in your release.
Warnings
RAC_RSM_IRQHandler() and RAC_SEQ_IRQHandler() must be set to the same priority level.
Public Functions#
RAIL interrupt handler for the SYSMBLPW0CPU interrupt source.
RAIL interrupt handler for the SEQACC interrupt source.
RAIL interrupt handler for the high-priority FRC_PRI interrupt source.
RAIL interrupt handler for the normal-priority FRC interrupt source.
RAIL interrupt handler for the MODEM interrupt source.
RAIL interrupt handler for the SEQ interrupt source.
RAIL interrupt handler for the RAC_RSM interrupt source.
RAIL interrupt handler for the BUFC interrupt source.
RAIL interrupt handler for the AGC interrupt source.
RAIL interrupt handler for the PROTIMER interrupt source.
RAIL interrupt handler for the SYNTH interrupt source.
RAIL interrupt handler for the RFECA0 interrupt source.
RAIL interrupt handler for the RFECA1 interrupt source.
RAIL interrupt handler for the RFTIMER interrupt source.
RAIL interrupt handler for the SYSRTC SEQ interrupt source.
RAIL interrupt handler for the EMUDG interrupt source.
Public Function Documentation#
SYSMBLPW0CPU_IRQHandler#
void sl_rail_sixg3xx_interrupts::SYSMBLPW0CPU_IRQHandler (void )
RAIL interrupt handler for the SYSMBLPW0CPU interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This interrupt is triggered by the mailbox mechanism to facilitate communication and coordination with the LPW0 subsystem. It handles events and messages exchanged between the main MCU and the LPW0 subsystem, ensuring proper synchronization and operation.
Note
The specific events handled by this interrupt depend on the configuration of the mailbox and the LPW0 subsystem.
SEQACC_IRQHandler#
void sl_rail_sixg3xx_interrupts::SEQACC_IRQHandler (void )
RAIL interrupt handler for the SEQACC interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This interrupt handles sequencer accelerator access-related events, such as PHY configuration, aborts, errors, and bus errors. It ensures proper handling of sequencer operations and transitions the system to appropriate states based on the events received.
If the PHY configuration sequence completes successfully, the system transitions to the idle state.
If an error occurs during the PHY loading sequence (e.g., abort, sequencer error, or bus error), the system transitions to the uninitialized state.
The interrupt flags are cleared after processing to ensure proper operation of subsequent events.
FRC_PRI_IRQHandler#
void sl_rail_sixg3xx_interrupts::FRC_PRI_IRQHandler (void )
RAIL interrupt handler for the high-priority FRC_PRI interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
Note
The interrupt vector should still point to the RAIL interrupt handler for compatibility with future RAIL releases.
FRC_IRQHandler#
void sl_rail_sixg3xx_interrupts::FRC_IRQHandler (void )
RAIL interrupt handler for the normal-priority FRC interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles packet completion events for the transmit side. The receive side events are queued and processed in the BUFC_IRQHandler. The following events are currently in use:
TX Completed
This event cannot be disabled and is used to clean up after a transmit event. If enabled, one of the following events will be generated after transmit completion: SL_RAIL_EVENT_TX_PACKET_SENT, SL_RAIL_EVENT_TX_ABORTED, SL_RAIL_EVENT_TX_BLOCKED, or SL_RAIL_EVENT_TX_UNDERFLOW.
TX Ack Completed
This event is only turned on if the user calls sl_rail_config_events() with one of SL_RAIL_EVENT_TXACK_PACKET_SENT, SL_RAIL_EVENT_TXACK_ABORTED, SL_RAIL_EVENT_TXACK_BLOCKED, or SL_RAIL_EVENT_TXACK_UNDERFLOW. If enabled, the corresponding event will be generated when an Ack completes.
MODEM_IRQHandler#
void sl_rail_sixg3xx_interrupts::MODEM_IRQHandler (void )
RAIL interrupt handler for the MODEM interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles demodulator and modulator status and error events. The following events are currently in use:
Preamble Detection
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_RX_PREAMBLE_DETECT. This event will call the RAIL events_callback when a preamble is detected by the demodulator if enabled.
Preamble Lost
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_RX_PREAMBLE_LOST. This event will call the RAIL events_callback when a preamble is lost by the demodulator if enabled.
Timing Detection
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_RX_TIMING_DETECT. This event will call the RAIL events_callback when timing is detected by the demodulator if enabled.
Timing Lost
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_RX_TIMING_LOST. This event will call the RAIL events_callback when timing is lost by the demodulator if enabled.
Sync 1 Detection
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_RX_SYNC_0_DETECT. This event will call the RAIL events_callback when sync word 1 is detected by the demodulator if enabled.
Sync 2 Detection
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_RX_SYNC_1_DETECT. This event will call the RAIL events_callback when sync word 2 is detected by the demodulator if enabled.
RAC_SEQ_IRQHandler#
void sl_rail_sixg3xx_interrupts::RAC_SEQ_IRQHandler (void )
RAIL interrupt handler for the SEQ interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles interrupts generated from the radio sequencer. The following events are currently in use:
RX timeout
This event cannot be disabled and occurs when a receive timeout, as configured via sl_rail_set_state_timing()sl_rail_state_timing_t::rxsearch_timeout or sl_rail_state_timing_t::tx_to_rxsearch_timeout, expires and the radio exits receive. This event will call the generic callback if SL_RAIL_EVENT_RX_TIMEOUT is enabled.
Ack Timeout
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_RX_ACK_TIMEOUT. This event is only available when using Auto-Ack or IEEE 802.15.4 and will call the events_callback whenever an Ack packet is not received within the Ack timeout window.
Address Filtering Passed
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_RX_FILTER_PASSED. This event is only enabled when using Address Filtering and will call the generic callback whenever a packet passes the filtering criteria.
IEEE802154 Frame Pending
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND. This event is only available when in IEEE 802.15.4 mode and will call the events_callback whenever a data request packet is received so you can set a frame-pending indicator in the outgoing Ack.
Temperature Calibration
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_CAL_NEEDED. This event will fire whenever the temperature changes enough to require recalibration during the RX state.
RAC_RSM_IRQHandler#
void sl_rail_sixg3xx_interrupts::RAC_RSM_IRQHandler (void )
RAIL interrupt handler for the RAC_RSM interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles interrupts generated from the radio state machine. The following events are currently in use:
Radio State Changed
Enabled in some debug modes.
BUFC_IRQHandler#
void sl_rail_sixg3xx_interrupts::BUFC_IRQHandler (void )
RAIL interrupt handler for the BUFC interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles interrupts generated from the radio buffer controller. The following events are currently in use:
RX Buffer Threshold
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_RX_FIFO_ALMOST_FULL. This event will trigger an events_callback when the contents of the receive buffer exceed the receive buffer threshold set by sl_rail_set_rx_fifo_threshold().
RX Buffer Underflow
This event cannot be disabled and indicates that too much data was read from the RX buffer. It should not occur in normal operation as all receive APIs protect against it.
RX Buffer Corruption
This event cannot be disabled and indicates the pointers in the RX buffer have become corrupt. This event should not occur in normal operation.
TX Buffer Threshold
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_TX_FIFO_ALMOST_EMPTY. This event will trigger an events_callback when the contents of the transmit buffer fall beneath the transmit threshold set by sl_rail_set_tx_fifo_threshold().
TX Buffer Overflow
This event cannot be disabled and indicates too much data was placed into the TX buffer. This event should not occur in normal operation as all transmit APIs protect against it.
TX Buffer Underflow
This event cannot be disabled and occurs when the transmit FIFO runs out of bytes before the end of the packet. This event will always perform any necessary cleanup and will call the events_callback if SL_RAIL_EVENT_TX_UNDERFLOW is enabled.
TX Buffer Corruption
This event cannot be disabled and indicates the pointers in the TX buffer have become corrupt. This event should not occur in normal operation.
RX Entry Buffer Threshold
This event cannot be disabled when in receive mode and is used to indicate that a new packet is available in the receive buffer. This event will call the events_callback with any of the following if they are enabled: SL_RAIL_EVENT_RX_PACKET_RECEIVED, SL_RAIL_EVENT_RX_ADDRESS_FILTERED, SL_RAIL_EVENT_RX_PACKET_ABORTED, SL_RAIL_EVENT_RX_FRAME_ERROR, or SL_RAIL_EVENT_RX_FIFO_OVERFLOW. The SL_RAIL_EVENT_RX_ADDRESS_FILTERED event is only used with Address Filtering to indicate termination of a packet that does not meet the filtering criteria.
RX Entry Buffer Underflow
This event cannot be disabled and indicates that too much data was read from the RX entry buffer. This event should not occur in normal operation.
RX Entry Buffer Overflow
This event cannot be disabled and will fire one time if the RX entry buffer overflows. It will cause the SL_RAIL_EVENT_RX_FIFO_OVERFLOW event to happen later after all valid entries are processed in the RX entry buffer.
RX Entry Buffer Corruption
This event cannot be disabled and indicates the pointers in the RX entry buffer have become corrupt. This event should not occur in normal operation.
AGC_IRQHandler#
void sl_rail_sixg3xx_interrupts::AGC_IRQHandler (void )
RAIL interrupt handler for the AGC interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles interrupts generated from the automatic gain control block. The following events are currently in use:
RSSI Valid
This event is enabled by sl_rail_start_average_rssi() and occurs when the first RSSI sample is ready after going into RX state. It will cause the events_callback to be called with SL_RAIL_EVENT_RSSI_AVERAGE_DONE set.
PROTIMER_IRQHandler#
void sl_rail_sixg3xx_interrupts::PROTIMER_IRQHandler (void )
RAIL interrupt handler for the PROTIMER interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles interrupts generated from the RAIL timebase (PROTIMER). The following events are currently in use:
Scheduled TX/RX
This event cannot be disabled and occurs when a scheduled transmit or receive begins.
RX scheduled window end timeout
This event cannot be disabled and occurs when the scheduled receive window ends and the radio exits receive. This event will call the events_callback if SL_RAIL_EVENT_RX_SCHEDULED_RX_END is enabled.
Transmit with CCA Failed
This event cannot be disabled and occurs when CCA indicates the channel is busy. This event will call the events_callback if SL_RAIL_EVENT_TX_CHANNEL_BUSY is enabled.
Transmit with CCA Success
This event cannot be disabled and occurs when CCA indicates the channel is clear and the packet will be transmitted. This event will call the events_callback if SL_RAIL_EVENT_TX_CHANNEL_CLEAR is enabled.
Starting a CCA check
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_TX_START_CCA. It will occur when the radio begins warming up for a CCA check.
CCA Check Activated
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_TX_CCA_ACTIVATED. It will occur when the CCA check is actually activated, though it may not occur if there was no (zero) backoff prior to the CCA check.
CCA Retry
This event is enabled by sl_rail_config_events() when given SL_RAIL_EVENT_TX_CCA_RETRY. It will occur whenever CSMA or LBT have a failed channel check and are going to begin retrying.
RAIL Timer
This event is enabled by sl_rail_set_timer() and will call the provided callback when the timer expires.
SYNTH_IRQHandler#
void sl_rail_sixg3xx_interrupts::SYNTH_IRQHandler (void )
RAIL interrupt handler for the SYNTH interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles interrupts generated from the synth module. The following events are currently in use:
Radio Sequencer Handshake
This event is used to keep the main core awake during some radio operations.
RFECA0_IRQHandler#
void sl_rail_sixg3xx_interrupts::RFECA0_IRQHandler (void )
RAIL interrupt handler for the RFECA0 interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles interrupts from the RFECA which is used for debug and some internal RAIL features. Currently no interrupt sources from this module are enabled
Note
The interrupt vector should still point to the RAIL interrupt handler for compatibility with future RAIL releases.
RFECA1_IRQHandler#
void sl_rail_sixg3xx_interrupts::RFECA1_IRQHandler (void )
RAIL interrupt handler for the RFECA1 interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles interrupts from the RFECA which is used for debug and some internal RAIL features. Currently no interrupt sources from this module are enabled
Note
The interrupt vector should still point to the RAIL interrupt handler for compatibility with future RAIL releases.
RFTIMER_IRQHandler#
void sl_rail_sixg3xx_interrupts::RFTIMER_IRQHandler (void )
RAIL interrupt handler for the RFTIMER interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles interrupts from the RFTIMER module which is used for debug and some internal RAIL features. Currently no interrupt sources from this module are enabled
Note
The interrupt vector should still point to the RAIL interrupt handler for compatibility with future RAIL releases.
SYSRTC_SEQ_IRQHandler#
void sl_rail_sixg3xx_interrupts::SYSRTC_SEQ_IRQHandler (void )
RAIL interrupt handler for the SYSRTC SEQ interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
The following events are currently in use:
SYSRTC compare channel
This event is enabled by the rail_power_manager and is only used during rail timebase synchronization after sleep.
EMUDG_IRQHandler#
void sl_rail_sixg3xx_interrupts::EMUDG_IRQHandler (void )
RAIL interrupt handler for the EMUDG interrupt source.
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
This source handles multiple features based on temperature such as:
HFXO compensation defined by SL_RAIL_SUPPORTS_HFXO_COMPENSATION.
This feature is enabled by sl_rail_config_hfxo_compensation().
Chip thermal protection defined by SL_RAIL_SUPPORTS_THERMAL_PROTECTION.
This feature is enabled by sl_rail_config_thermal_protection().
VCO calibration
This feature is automatically enabled.
This source is currently not used on the SIXG301 device family.