EFR32xG1x_Interrupts
EFR32xG1x Specific Interrupt sources.
Functions | |
void | FRC_PRI_IRQHandler (void) |
RAIL interrupt handler for the FRC_PRI interrupt source. | |
void | FRC_IRQHandler (void) |
RAIL interrupt handler for the FRC interrupt source. | |
void | MODEM_IRQHandler (void) |
RAIL interrupt handler for the MODEM interrupt source. | |
void | RAC_SEQ_IRQHandler (void) |
RAIL interrupt handler for the SEQ interrupt source. | |
void | RAC_RSM_IRQHandler (void) |
RAIL interrupt handler for the RAC_RSM interrupt source. | |
void | BUFC_IRQHandler (void) |
RAIL interrupt handler for the BUFC interrupt source. | |
void | AGC_IRQHandler (void) |
RAIL interrupt handler for the AGC interrupt source. | |
void | PROTIMER_IRQHandler (void) |
RAIL interrupt handler for the PROTIMER interrupt source. | |
void | SYNTH_IRQHandler (void) |
RAIL interrupt handler for the SYNTH interrupt source. | |
void | RFSENSE_IRQHandler (void) |
RAIL interrupt handler for the RFSENSE interrupt source. |
Detailed Description
EFR32xG1x Specific Interrupt sources.
Below are the interrupt handlers implemented within the RAIL library for EFR32. Please 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 consult the startup_efr32xg1xx.c file for your chip. These can be found in the under the Device/SiliconLabs folder in your release.
- Warning
- RAC_RSM_IRQHandler() and RAC_SEQ_IRQHandler() must be set to the same priority level.
Function Documentation
◆ AGC_IRQHandler()
void AGC_IRQHandler | ( | void |
| ) |
RAIL interrupt handler for the AGC interrupt source.
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 RAIL_StartAverageRssi() and occurs when the first RSSI sample is ready after going into RX state. It will cause the eventsCallback to be called with RAIL_EVENT_RSSI_AVERAGE_DONE set.
◆ BUFC_IRQHandler()
void BUFC_IRQHandler | ( | void |
| ) |
RAIL interrupt handler for the BUFC interrupt source.
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 RAIL_ConfigEvents() when given RAIL_EVENT_RX_FIFO_ALMOST_FULL. This event will trigger an eventsCallback when the contents of the receive buffer exceed the receive buffer threshold set by RAIL_SetRxFifoThreshold().
- RX Buffer Underflow
- This event cannot be disabled and indicates that too much data was read from the RX buffer. This 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 RAIL_ConfigEvents() when given RAIL_EVENT_TX_FIFO_ALMOST_EMPTY. This event will trigger an eventsCallback when the contents of the transmit buffer falls beneath the transmit threshold set by RAIL_SetTxFifoThreshold().
- 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 eventsCallback if 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 eventsCallback with any of the following if they are enabled: RAIL_EVENT_RX_PACKET_RECEIVED, RAIL_EVENT_RX_ADDRESS_FILTERED, RAIL_EVENT_RX_PACKET_ABORTED, RAIL_EVENT_RX_FRAME_ERROR, or RAIL_EVENT_RX_FIFO_OVERFLOW. The 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 we overflow the RX entry buffer. This will cause the RAIL_EVENT_RX_FIFO_OVERFLOW event to happen later after we have processed all valid entries in the RX entry buffer
- 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 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.
◆ FRC_IRQHandler()
void FRC_IRQHandler | ( | void |
| ) |
RAIL interrupt handler for the FRC interrupt source.
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 cleanup after any transmit event. If enabled, one of the following events will be generated after transmit completion: RAIL_EVENT_TX_PACKET_SENT, RAIL_EVENT_TX_ABORTED, RAIL_EVENT_TX_BLOCKED, or RAIL_EVENT_TX_UNDERFLOW.
- TX ACK Completed
- This event is only turned on if the user calls RAIL_ConfigEvents() with one of RAIL_EVENT_TXACK_PACKET_SENT, RAIL_EVENT_TXACK_ABORTED, RAIL_EVENT_TXACK_BLOCKED, or RAIL_EVENT_TXACK_UNDERFLOW. If enabled, the corresponding event will be generated when an ACK completes.
◆ FRC_PRI_IRQHandler()
void FRC_PRI_IRQHandler | ( | void |
| ) |
RAIL interrupt handler for the FRC_PRI interrupt source.
This source handles high priority interrupt events within the FRC. Currently there are no interrupt sources enabled within this group.
- Note
- The interrupt vector should point to the RAIL interrupt handler for compatibility with future RAIL releases.
◆ MODEM_IRQHandler()
void MODEM_IRQHandler | ( | void |
| ) |
RAIL interrupt handler for the MODEM interrupt source.
This source handles demodulator and modulator status and error events. The following events are currently in use:
- Preamble Detection
- This event is enabled by RAIL_ConfigEvents() when given RAIL_EVENT_RX_PREAMBLE_DETECT. This event will call the RAIL eventsCallback when a preamble is detected by the demodulator if enabled.
- Sync 1 Detection
- This event is enabled by RAIL_ConfigEvents() when given RAIL_EVENT_RX_SYNC1_DETECT. This event will call the RAIL eventsCallback when sync 1 is detected by the demodulator if enabled.
- Sync 1 Detection
- This event is enabled by RAIL_ConfigEvents() when given RAIL_EVENT_RX_SYNC2_DETECT. This event will call the RAIL eventsCallback when sync 1 is detected by the demodulator if enabled.
◆ PROTIMER_IRQHandler()
void PROTIMER_IRQHandler | ( | void |
| ) |
RAIL interrupt handler for the PROTIMER interrupt source.
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 eventsCallback if 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 eventsCallback if 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 eventsCallback if RAIL_EVENT_TX_CHANNEL_CLEAR is enabled.
- Starting a CCA check
- This event is enabled by RAIL_ConfigEvents() when given RAIL_EVENT_TX_START_CCA. It will occur when the radio begins warming up for a CCA check.
- CCA Retry
- This event is enabled by RAIL_ConfigEvents() when given RAIL_EVENT_TX_CCA_RETRY. It will occur whenever CSMA or LBT have a failed channel check and are going to begin retrying. Note that on the EFR32xG1 platform this is enabled by default to handle issues with certain CCA threshold values.
- RAIL Timer
- This event is enabled by RAIL_SetTimer() and will call the provided callback when the timer expires.
◆ RAC_RSM_IRQHandler()
void RAC_RSM_IRQHandler | ( | void |
| ) |
RAIL interrupt handler for the RAC_RSM interrupt source.
Currently there are no interrupt sources enabled within this group.
- Note
- The interrupt vector should still point to the RAIL interrupt handler for compatibility with future RAIL releases.
◆ RAC_SEQ_IRQHandler()
void RAC_SEQ_IRQHandler | ( | void |
| ) |
RAIL interrupt handler for the SEQ interrupt source.
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 RAIL_SetStateTiming()'s RAIL_StateTiming_t::rxSearchTimeout or RAIL_StateTiming_t::txToRxSearchTimeout expires and the radio exits receive. This event will call the generic callback if RAIL_EVENT_RX_TIMEOUT is enabled.
- Ack Timeout
- This event is enabled by RAIL_ConfigEvents() when given RAIL_EVENT_RX_ACK_TIMEOUT. This event is only available when using Auto ACK or IEEE 802.15.4 and will call the eventsCallback whenever an ACK packet is not received within the ACK timeout window.
- Address Filtering Passed
- This event is enabled by RAIL_ConfigEvents() when given 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 RAIL_ConfigEvents() when given RAIL_EVENT_IEEE802154_DATA_REQUEST_COMMAND. This event is only available when in IEEE 802.15.4 mode and will call the eventsCallback whenever a data request packet is received so you can set frame pending in the outgoing ACK.
- Temperature Calibration
- This event is enabled by RAIL_ConfigEvents() when given RAIL_EVENT_CAL_NEEDED. This event will fire whenever the temperature changes enough to require recalibration during the RX state.
- PA Voltage High
- This event cannot be disabled and occurs once per transmit while the PA voltage is over the max rating.
- PA Output High
- This event cannot be disabled and occurs while the PA output power is over the max rating.
- PA Output Low
- This event cannot be disabled and occurs once per transmit while the PA output power is below the configured level.
◆ RFSENSE_IRQHandler()
void RFSENSE_IRQHandler | ( | void |
| ) |
RAIL interrupt handler for the RFSENSE interrupt source.
This source handles interrupts generated from the RF Sense module. The following events are currently in use:
- RF Sensed
- This event is enabled by when the RFSENSE block is initialized using RAIL_StartRfSense() and can be disabled by turning off the RFSENSE block using RAIL_StartRfSense() with the band set to RAIL_RFSENSE_OFF. This event will possibly generate a callback provided to RAIL_StartRfSense whenever the RFSENSE block detects RF energy.
◆ SYNTH_IRQHandler()
void SYNTH_IRQHandler | ( | void |
| ) |
RAIL interrupt handler for the SYNTH interrupt source.
Currently there are no interrupt sources enabled within this group.
- Note
- The interrupt vector should still point to the RAIL interrupt handler for compatibility with future RAIL releases.