|
Radio Control Layer (RCL)
|
#include <stdint.h>#include <stddef.h>#include <stdbool.h>#include <ti/devices/DeviceFamily.h>#include <ti/drivers/rcl/RCL_Types.h>#include <ti/drivers/Power.h>
Include dependency graph for LRFCC23X0.h:Go to the source code of this file.
Macros | |
| #define | LRF_TxPowerTable_INVALID_VALUE ((LRF_TxPowerTable_Value){.rawValue = 0xFFFF}) |
| #define | LRF_EventNone ((LRF_Events){ .value = (0U << 0U)}) |
| #define | LRF_EventOpDone ((LRF_Events){ .value = (1U << 0U)}) |
| #define | LRF_EventPingRsp ((LRF_Events){ .value = (1U << 1U)}) |
| #define | LRF_EventRxCtrl ((LRF_Events){ .value = (1U << 2U)}) |
| #define | LRF_EventRxCtrlAck ((LRF_Events){ .value = (1U << 3U)}) |
| #define | LRF_EventRxNok ((LRF_Events){ .value = (1U << 4U)}) |
| #define | LRF_EventRxIgnored ((LRF_Events){ .value = (1U << 5U)}) |
| #define | LRF_EventRxEmpty ((LRF_Events){ .value = (1U << 6U)}) |
| #define | LRF_EventRxBufFull ((LRF_Events){ .value = (1U << 7U)}) |
| #define | LRF_EventRxOk ((LRF_Events){ .value = (1U << 8U)}) |
| #define | LRF_EventTxCtrl ((LRF_Events){ .value = (1U << 9U)}) |
| #define | LRF_EventTxCtrlAckAck ((LRF_Events){ .value = (1U << 10U)}) |
| #define | LRF_EventTxRetrans ((LRF_Events){ .value = (1U << 11U)}) |
| #define | LRF_EventTxAck ((LRF_Events){ .value = (1U << 12U)}) |
| #define | LRF_EventTxDone ((LRF_Events){ .value = (1U << 13U)}) |
| #define | LRF_EventTxCtrlAck ((LRF_Events){ .value = (1U << 14U)}) |
| #define | LRF_EventOpError ((LRF_Events){ .value = (1U << 15U)}) |
| #define | LRF_EventRxfifo ((LRF_Events){ .value = (1U << 16U)}) |
| #define | LRF_EventTxfifo ((LRF_Events){ .value = (1U << 17U)}) |
| #define | LRF_EventLossOfLock ((LRF_Events){ .value = (1U << 18U)}) |
| #define | LRF_EventLock ((LRF_Events){ .value = (1U << 19U)}) |
| #define | LRF_EventRfesoft0 ((LRF_Events){ .value = (1U << 20U)}) |
| #define | LRF_EventRfesoft1 ((LRF_Events){ .value = (1U << 21U)}) |
| #define | LRF_EventRfedone ((LRF_Events){ .value = (1U << 22U)}) |
| #define | LRF_EventMdmsoft0 ((LRF_Events){ .value = (1U << 23U)}) |
| #define | LRF_EventMdmsoft1 ((LRF_Events){ .value = (1U << 24U)}) |
| #define | LRF_EventMdmsoft2 ((LRF_Events){ .value = (1U << 25U)}) |
| #define | LRF_EventMdmout ((LRF_Events){ .value = (1U << 26U)}) |
| #define | LRF_EventMdmin ((LRF_Events){ .value = (1U << 27U)}) |
| #define | LRF_EventMdmdone ((LRF_Events){ .value = (1U << 28U)}) |
| #define | LRF_EventSystim0 ((LRF_Events){ .value = (1U << 29U)}) |
| #define | LRF_EventSystim1 ((LRF_Events){ .value = (1U << 30U)}) |
| #define | LRF_EventSystim2 ((LRF_Events){ .value = (1U << 31U)}) |
| #define | LRF_TxPowerEntry_INVALID_VALUE |
| #define | LRF_TRIM_NUM_VARIANTS 2 |
| #define | LRF_BASE_ADDR 0x40080000U |
| #define | PBE_RAM_BASE_ADDR 0x40090000U |
| #define | BUF_RAM_BASE_ADDR 0x40092000U |
| #define | RXF_UNWRAPPED_BASE_ADDR 0x40093000U |
| #define | TXF_UNWRAPPED_BASE_ADDR 0x40093800U |
| #define | MCE_RAM_BASE_ADDR 0x40094000U |
| #define | RFE_RAM_BASE_ADDR 0x40096000U |
| #define | S2R_RAM_BASE_ADDR 0x40098000U |
| #define | TOPSM_RAM_SZ 0x00001000U /* 4 KB */ |
| #define | MAX_REG_CONFIG_LEN 1024U /* 1024 entries, using 4 KB */ |
| #define | LRF_TXPOWER_REFERENCE_TEMPERATURE 25 |
| #define | LRF_TXPOWER_TEMPERATURE_SCALING 0x100 |
| #define | LRF_TXPOWER_BYPASS_FREQUENCY_BACKOFF 0xFFFFFFFF |
| #define | LRF_POWER_PERIPH_VALUE(x) (PowerCC23X0_PERIPH_GROUP_LRFD | (x)) |
| #define | PowerLPF3_PERIPH_LRFD_BUFRAM LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_BUFRAM_S) |
| #define | PowerLPF3_PERIPH_LRFD_MDM LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_MDM_S) |
| #define | PowerLPF3_PERIPH_LRFD_TRC LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_TRC_S) |
Typedefs | |
| typedef uint8_t | LRF_TxPowerTable_TempCoeff |
Enumerations | |
| enum | LRF_TxPowerResult { TxPowerResult_Ok, TxPowerResult_Error } |
Functions | |
| static void | LRF_sendHardStop (void) |
| static void | LRF_sendGracefulStop (void) |
| static void | LRF_hardStop (void) |
| static uint32_t | LRF_getTxFifoWritable (void) |
| void | LRF_programTemperatureCompensatedTxPower (void) |
| Programs current TX power setting in radio with temperature compensation. More... | |
| LRF_TxPowerResult | LRF_programTxPower (LRF_TxPowerTable_Index powerLevel, uint32_t rfFreq) |
| Finds settings corresponding to the highest tx power lower than the specified value in the tx power table and programs it in the radio. More... | |
| int8_t | LRF_readMaxRssi (void) |
| Reads maximum RSSI from register. More... | |
| void | LRF_initializeMaxRssi (int8_t initRssi) |
| Initialize maximum RSSI register. More... | |
| static void | LRF_setRclClockEnable (uint16_t mask) |
| Request specific clock enable bits for use by the RCL. More... | |
| static void | LRF_clearRclClockEnable (uint16_t mask) |
| Remove request of specific clock enable bits for use by the RCL. More... | |
| void | LRF_enableCoexGrant (void) |
| Enable monitoring of coexistence grant signal in RFE. More... | |
| void | LRF_disableCoexGrant (void) |
| Disable monitoring of coexistence grant signal in RFE. More... | |
| void | LRF_deassertCoexRequest (void) |
| Deassert coexistence REQUEST. More... | |
| void | LRF_enableTemperatureMonitoring (void) |
| Enable temperature monitoring to allow handlers to update temperature compensation. More... | |
| void | LRF_disableTemperatureMonitoring (void) |
| Disable temperature monitoring. More... | |
| void | LRF_updateTemperatureCompensation (uint32_t rfFrequency, bool tx) |
| Update temperature compensation in radio. More... | |
| int16_t | LRF_getLastTrimTemperature (void) |
| Get temperature used in last setting of trims. More... | |
| void | LRF_setAntennaSelection (uint32_t value) |
| Set the default antenna to be used during the next radio configuration. More... | |
Variables | |
| const LRF_TxShape | LRF_shapeBaseGfsk05 |
| const LRF_TxShape | LRF_shapeBaseGfsk067 |
| const LRF_TxShape | LRF_shapeBaseGfsk20 |
| union LRF_TxPowerTable_Value |
Type for tx power configuration.
Register value to be written to registers, prior to temperature compensation
| Data Fields | ||
|---|---|---|
| struct LRF_TxPowerTable_Value | __unnamed__ | |
| uint16_t | rawValue | |
| union LRF_Events_u |
| Data Fields | ||
|---|---|---|
| struct LRF_Events_u | __unnamed__ | |
| uint32_t | value | |
| union LRF_TxPowerTable_Index |
Index of the tx power table.
| Data Fields | ||
|---|---|---|
| struct LRF_TxPowerTable_Index | __unnamed__ | |
| int8_t | rawValue |
rawValue is twice the dBm number, allowing 0.5 dB steps |
| struct LRF_TxPowerTable_Entry |
Single entry of the tx power table. Maps power in dBm to specific register settings.
Collaboration diagram for LRF_TxPowerTable_Entry:| Data Fields | ||
|---|---|---|
| LRF_TxPowerTable_Index | power |
Power level |
| LRF_TxPowerTable_TempCoeff | tempCoeff |
Temperature coefficient |
| LRF_TxPowerTable_Value | value |
Settings to be compensated and written into register |
| struct LRF_TxPowerTable |
Tx power table, containing all characterized dBm to register settings mappings.
The table must be sorted from lowest to highest power level
Collaboration diagram for LRF_TxPowerTable:| Data Fields | ||
|---|---|---|
| uint32_t | numEntries | |
| LRF_TxPowerTable_Entry | powerTable[] | |
| struct LRF_TxPowerLimitTable_Entry |
Single entry of the Tx power limit table.
Collaboration diagram for LRF_TxPowerLimitTable_Entry:| Data Fields | ||
|---|---|---|
| uint16_t | minFreq |
Start of frequency range |
| uint16_t | maxFreq |
End of frequency range. Single frequency specified by maxFreq = minFreq |
| uint8_t | regulatoryMask |
Regulatory domain mask |
| LRF_TxPowerTable_Index | maxTxPower |
Max power level for frequency in range [minFreq,maxFreq] |
| struct LRF_TxPowerLimitTable |
Tx power limit table, containing frequency dependent power limits for specific regulatory domain.
Collaboration diagram for LRF_TxPowerLimitTable:| Data Fields | ||
|---|---|---|
| uint32_t | numEntries |
Number of entries in the table |
| uint32_t | freqDiv |
Frequency divisor. Used to determine the prefix of the frequency in the table |
| LRF_TxPowerLimitTable_Entry | limitTable[] |
Table with frequency specific power limits |
| struct LRF_TxShape |
| Data Fields | ||
|---|---|---|
| struct LRF_TxShape | __unnamed__ | |
| uint8_t | coeff[] | |
| struct LRF_CoexConfiguration |
| union LRF_Trim1 |
Collaboration diagram for LRF_Trim1:| Data Fields | ||
|---|---|---|
| struct LRF_Trim1 | fields | |
| struct LRF_Trim1 | __unnamed__ | |
| LRF_DoubleWord | data | |
| union LRF_Trim2 |
Collaboration diagram for LRF_Trim2:| Data Fields | ||
|---|---|---|
| struct LRF_Trim2 | fields | |
| struct LRF_Trim2 | __unnamed__ | |
| LRF_DoubleWord | data | |
| union LRF_Trim_Variant |
Collaboration diagram for LRF_Trim_Variant:| Data Fields | ||
|---|---|---|
| struct LRF_Trim_Variant | fields | |
| struct LRF_Trim_Variant | __unnamed__ | |
| LRF_DoubleWord | data | |
| struct LRF_Trim_tempLdoRtrim |
| struct LRF_Trim_tempRssiAgc |
| struct LRF_Trim_dcoldoOffset |
| struct LRF_TrimDef |
Collaboration diagram for LRF_TrimDef:| Data Fields | ||
|---|---|---|
| uint8_t | revision | |
| uint8_t | nToolsClientOffset | |
| uint8_t | reserved[2] | |
| LRF_Trim0 | trim0 | |
| LRF_Trim1 | trim1 | |
| LRF_Trim2 | trim2 | |
| LRF_Trim_Variant | trimVariant[LRF_TRIM_NUM_VARIANTS] | |
| LRF_Trim3 | trim3 | |
| LRF_Trim4 | trim4 | |
| struct LRF_SwConfig |
Software defined PHY parameters.
Collaboration diagram for LRF_SwConfig:| Data Fields | ||
|---|---|---|
| int32_t | rxIntFrequency |
Receiver intermediate frequency [Hz] |
| int32_t | rxFrequencyOffset |
Receiver frequency offset [Hz] |
| int32_t | txFrequencyOffset |
Transmitter frequency offset [Hz] |
| uint32_t | modFrequencyDeviation |
Transmitter frequency deviation [Hz] |
| const LRF_TxShape * | txShape |
Transmitter shape definition |
| uint8_t | bwIndex |
Index to use for bandwitdh dependent settings (0: normal 1: high) |
| uint8_t | bwIndexDither |
Index to use for bandwitdh dependent ADC dithering settings (0: low 1: normal/high) |
| struct LRF_SwParam |
Software defined PHY parameter list.
Collaboration diagram for LRF_SwParam:| Data Fields | ||
|---|---|---|
| const LRF_SwConfig * | swConfig |
Software defined parameters. |
| const LRF_TxPowerLimitTable * | txPowerLimitTable |
TX power limit table |
| const LRF_TxPowerTable * | txPowerTable |
TX power table |
| const LRF_TrimDef * | trimDef |
Trim definitions. NULL: Do not apply trim. |
| struct LRF_Config |
| struct LRF_TxPowerTable_Value.__unnamed__ |
| struct LRF_Events_u.__unnamed__ |
| struct LRF_TxPowerTable_Index.__unnamed__ |
| union LRF_Trim0.fields.__unnamed__ |
| Data Fields | ||
|---|---|---|
| __unnamed__ | pa0 | |
| struct LRF_Trim0.fields.atstRefH |
| struct LRF_Trim1.__unnamed__ |
| struct LRF_Trim2.fields.dcoLdo0 |
| struct LRF_Trim2.fields.ifadcAldo |
| struct LRF_Trim2.fields.ifadcDldo |
| struct LRF_Trim2.__unnamed__ |
| struct LRF_Trim_Variant.fields |
| struct LRF_Trim_Variant.fields.ifadc0 |
| struct LRF_Trim_Variant.fields.ifadc1 |
| struct LRF_Trim_Variant.fields.ifadclf |
| struct LRF_Trim_Variant.__unnamed__ |
| struct LRF_Trim3.fields |
| Data Fields | ||
|---|---|---|
| fields | lrfdrfeExtTrim1 | |
| LRF_Trim_tempRssiAgc | lrfdrfeExtTrim0 | |
| struct LRF_Trim3.fields.lrfdrfeExtTrim1 |
| Data Fields | ||
|---|---|---|
| LRF_Trim_tempLdoRtrim | tempLdoRtrim | |
| uint8_t | hfxtPdError | |
| LRF_Trim_dcoldoOffset | dcoldoOffset | |
| struct LRF_Trim4.fields |
| Data Fields | ||
|---|---|---|
| fields | fend0Rssi | |
| fields | syntDiv0 | |
| uint16_t | res1 | |
| fields | ifamprfldo[LRF_TRIM_NUM_VARIANTS] | |
| struct LRF_Trim4.fields.fend0Rssi |
| struct LRF_Trim4.__unnamed__ |
| Data Fields | ||
|---|---|---|
| int8_t | rssiOffset | |
| uint8_t | trimCompleteN | |
| uint16_t | demIQMC0 | |
| uint16_t | res1 | |
| uint8_t | ifamprfldo[LRF_TRIM_NUM_VARIANTS] | |
| #define LRF_TxPowerTable_INVALID_VALUE ((LRF_TxPowerTable_Value){.rawValue = 0xFFFF}) |
Value indicating that no valid tx power could be found in the table.
Referenced by LRF_programTxPower().
| #define LRF_EventNone ((LRF_Events){ .value = (0U << 0U)}) |
No events
Referenced by __attribute__(), and rclDispatchHwi().
| #define LRF_EventOpDone ((LRF_Events){ .value = (1U << 0U)}) |
The PBE operation has finished
Referenced by RCL_Handler_BLE5_adv(), RCL_Handler_BLE5_aux_adv(), RCL_Handler_BLE5_ChannelAssessment(), RCL_Handler_BLE5_conn(), RCL_Handler_BLE5_dtmTx(), RCL_Handler_BLE5_genericRx(), RCL_Handler_BLE5_genericTx(), RCL_Handler_BLE5_periodicAdv(), RCL_Handler_BLE5_periodicScan(), RCL_Handler_BLE5_scan_init(), RCL_Handler_Ble5_txTest(), RCL_Handler_BLE_CS(), RCL_Handler_BLE_CS_Precal(), RCL_Handler_Generic_Fs(), RCL_Handler_Generic_FsOff(), RCL_Handler_Generic_PbeOperation(), RCL_Handler_Generic_Rx(), RCL_Handler_Generic_Tx(), RCL_Handler_Generic_TxRepeat(), RCL_Handler_Generic_TxTest(), RCL_Handler_Ieee_processRxAction(), RCL_Handler_Ieee_RxTx(), RCL_Handler_Ieee_TxTest(), RCL_Handler_Nesb_Prx(), and RCL_Handler_Nesb_Ptx().
| #define LRF_EventPingRsp ((LRF_Events){ .value = (1U << 1U)}) |
When receiving a CMD_PING, PBE responds with a PINGRSP.
| #define LRF_EventRxCtrl ((LRF_Events){ .value = (1U << 2U)}) |
Frame filtering passed, or LL control packet received correctly
Referenced by RCL_Handler_Ieee_RxTx(), and RCL_Handler_Ieee_updateSrcMatchTableShort().
| #define LRF_EventRxCtrlAck ((LRF_Events){ .value = (1U << 3U)}) |
LL control packet received with CRC OK, not to be ignored, then acknowledgement sent
Referenced by RCL_Handler_Ieee_processRxAction().
| #define LRF_EventRxNok ((LRF_Events){ .value = (1U << 4U)}) |
Packet received with CRC error
Referenced by RCL_Handler_BLE5_adv(), RCL_Handler_BLE5_aux_adv(), RCL_Handler_BLE5_conn(), RCL_Handler_BLE5_genericRx(), RCL_Handler_BLE5_maskEventsByFifoConf(), RCL_Handler_BLE5_periodicScan(), RCL_Handler_BLE5_scan_init(), RCL_Handler_Generic_Rx(), RCL_Handler_Ieee_maskEventsByFifoConf(), RCL_Handler_Ieee_processRxAction(), RCL_Handler_Nesb_Prx(), and RCL_Handler_Nesb_Ptx().
| #define LRF_EventRxIgnored ((LRF_Events){ .value = (1U << 5U)}) |
Packet received, but may be ignored by MCU
Referenced by RCL_Handler_BLE5_adv(), RCL_Handler_BLE5_aux_adv(), RCL_Handler_BLE5_conn(), RCL_Handler_BLE5_genericRx(), RCL_Handler_BLE5_maskEventsByFifoConf(), RCL_Handler_BLE5_periodicScan(), RCL_Handler_BLE5_scan_init(), RCL_Handler_Generic_maskEventsByFifoConf(), RCL_Handler_Ieee_maskEventsByFifoConf(), RCL_Handler_Ieee_processRxAction(), RCL_Handler_Nesb_Prx(), and RCL_Handler_Nesb_Ptx().
| #define LRF_EventRxEmpty ((LRF_Events){ .value = (1U << 6U)}) |
Empty packet received, or Rx ACK treatment finished
Referenced by RCL_Handler_BLE5_conn(), RCL_Handler_BLE5_maskEventsByFifoConf(), and RCL_Handler_Ieee_RxTx().
| #define LRF_EventRxBufFull ((LRF_Events){ .value = (1U << 7U)}) |
Packet received which did not fit in the RX FIFO and was not to be discarded.Â
Referenced by RCL_Handler_BLE5_adv(), RCL_Handler_BLE5_aux_adv(), RCL_Handler_BLE5_conn(), RCL_Handler_BLE5_genericRx(), RCL_Handler_BLE5_maskEventsByFifoConf(), RCL_Handler_BLE5_periodicScan(), RCL_Handler_BLE5_scan_init(), RCL_Handler_Generic_maskEventsByFifoConf(), RCL_Handler_Generic_Rx(), RCL_Handler_Ieee_maskEventsByFifoConf(), RCL_Handler_Ieee_processRxAction(), RCL_Handler_Nesb_Prx(), and RCL_Handler_Nesb_Ptx().
| #define LRF_EventRxOk ((LRF_Events){ .value = (1U << 8U)}) |
Packet received with CRC OK and not to be ignored by the MCU
Referenced by RCL_Handler_BLE5_adv(), RCL_Handler_BLE5_aux_adv(), RCL_Handler_BLE5_conn(), RCL_Handler_BLE5_genericRx(), RCL_Handler_BLE5_periodicScan(), RCL_Handler_BLE5_scan_init(), RCL_Handler_Generic_Rx(), RCL_Handler_Ieee_processRxAction(), RCL_Handler_Nesb_Prx(), and RCL_Handler_Nesb_Ptx().
| #define LRF_EventTxCtrl ((LRF_Events){ .value = (1U << 9U)}) |
Transmitted LL control packet
Referenced by RCL_Handler_Ieee_processRxAction().
| #define LRF_EventTxCtrlAckAck ((LRF_Events){ .value = (1U << 10U)}) |
Acknowledgement received on a transmitted LL control packet, and acknowledgement transmitted for that packet
| #define LRF_EventTxRetrans ((LRF_Events){ .value = (1U << 11U)}) |
Packet retransmitted with same SN
| #define LRF_EventTxAck ((LRF_Events){ .value = (1U << 12U)}) |
Acknowledgement transmitted, or acknowledgement received on a transmitted packet.
Referenced by RCL_Handler_Ieee_maskEventsByFifoConf(), and RCL_Handler_Ieee_processRxAction().
| #define LRF_EventTxDone ((LRF_Events){ .value = (1U << 13U)}) |
Packet transmitted
Referenced by RCL_Handler_BLE5_conn(), and RCL_Handler_Ieee_RxTx().
| #define LRF_EventTxCtrlAck ((LRF_Events){ .value = (1U << 14U)}) |
Acknowledgement received on a transmitted LL control packet
| #define LRF_EventOpError ((LRF_Events){ .value = (1U << 15U)}) |
Something went awfully wrong, the reason is indicated in RAM-based register BLE_ENDCAUSE.
Referenced by RCL_Handler_BLE5_adv(), RCL_Handler_BLE5_aux_adv(), RCL_Handler_BLE5_ChannelAssessment(), RCL_Handler_BLE5_conn(), RCL_Handler_BLE5_dtmTx(), RCL_Handler_BLE5_genericRx(), RCL_Handler_BLE5_genericTx(), RCL_Handler_BLE5_periodicAdv(), RCL_Handler_BLE5_periodicScan(), RCL_Handler_BLE5_scan_init(), RCL_Handler_Ble5_txTest(), RCL_Handler_BLE_CS(), RCL_Handler_BLE_CS_Precal(), RCL_Handler_Generic_Fs(), RCL_Handler_Generic_FsOff(), RCL_Handler_Generic_PbeOperation(), RCL_Handler_Generic_Rx(), RCL_Handler_Generic_Tx(), RCL_Handler_Generic_TxRepeat(), RCL_Handler_Generic_TxTest(), RCL_Handler_Ieee_processRxAction(), RCL_Handler_Ieee_RxTx(), RCL_Handler_Ieee_TxTest(), RCL_Handler_Nesb_Prx(), and RCL_Handler_Nesb_Ptx().
| #define LRF_EventRxfifo ((LRF_Events){ .value = (1U << 16U)}) |
Event from fifo, triggered when crossing threshold. Normal use for rxfifo is to generate IRQ when crossing threshold upwards (filling fifo). But downwards is also possible to configure, could be use case for using both fifos for TX or both for RX
Referenced by RCL_Handler_BLE_CS().
| #define LRF_EventTxfifo ((LRF_Events){ .value = (1U << 17U)}) |
Event from fifo, triggered when crossing threshold. Normal use for txfifo is to generate IRQ when crossing threshold downwards (emptying fifo). But upwards is also possible to configure, could be use case for using both fifos for TX or both for RX
| #define LRF_EventLossOfLock ((LRF_Events){ .value = (1U << 18U)}) |
LOSS_OF_LOCK event
| #define LRF_EventLock ((LRF_Events){ .value = (1U << 19U)}) |
LOCK event
| #define LRF_EventRfesoft0 ((LRF_Events){ .value = (1U << 20U)}) |
RFESOFT0 event
Referenced by RCL_Handler_BLE5_ChannelAssessment(), and RCL_Handler_Ieee_RxTx().
| #define LRF_EventRfesoft1 ((LRF_Events){ .value = (1U << 21U)}) |
RFESOFT1 event
Referenced by RCL_Handler_Ieee_RxTx().
| #define LRF_EventRfedone ((LRF_Events){ .value = (1U << 22U)}) |
RFEDONE event
| #define LRF_EventMdmsoft0 ((LRF_Events){ .value = (1U << 23U)}) |
MDMSOFT event
Referenced by RCL_Handler_BLE_CS().
| #define LRF_EventMdmsoft1 ((LRF_Events){ .value = (1U << 24U)}) |
MDMSOFT1 event
| #define LRF_EventMdmsoft2 ((LRF_Events){ .value = (1U << 25U)}) |
MDMSOFT event
| #define LRF_EventMdmout ((LRF_Events){ .value = (1U << 26U)}) |
MDMOUT event
| #define LRF_EventMdmin ((LRF_Events){ .value = (1U << 27U)}) |
MDMIN event
| #define LRF_EventMdmdone ((LRF_Events){ .value = (1U << 28U)}) |
MDMDONE event
| #define LRF_EventSystim0 ((LRF_Events){ .value = (1U << 29U)}) |
SYSTIM0 event
| #define LRF_EventSystim1 ((LRF_Events){ .value = (1U << 30U)}) |
SYSTIM1 event
| #define LRF_EventSystim2 ((LRF_Events){ .value = (1U << 31U)}) |
SYSTIM2 event
| #define LRF_TxPowerEntry_INVALID_VALUE |
Value indicating that no valid tx power could be found in the table.
Referenced by LRF_getRawTxPower(), and LRF_TxPowerTable_findValue().
| #define LRF_TRIM_NUM_VARIANTS 2 |
| #define LRF_BASE_ADDR 0x40080000U |
Referenced by LRF_applySettings().
| #define PBE_RAM_BASE_ADDR 0x40090000U |
Referenced by LRF_applySettings().
| #define BUF_RAM_BASE_ADDR 0x40092000U |
| #define RXF_UNWRAPPED_BASE_ADDR 0x40093000U |
Referenced by LRF_peekRxFifoWords(), and LRF_readRxFifoWords().
| #define TXF_UNWRAPPED_BASE_ADDR 0x40093800U |
Referenced by LRF_getTxFifoWrAddr(), and LRF_writeTxFifoWords().
| #define MCE_RAM_BASE_ADDR 0x40094000U |
| #define RFE_RAM_BASE_ADDR 0x40096000U |
| #define S2R_RAM_BASE_ADDR 0x40098000U |
Referenced by RCL_Handler_BLE_CS_readS2RSamples().
| #define TOPSM_RAM_SZ 0x00001000U /* 4 KB */ |
Referenced by LRF_loadImage().
| #define MAX_REG_CONFIG_LEN 1024U /* 1024 entries, using 4 KB */ |
Referenced by LRF_applySettings().
| #define LRF_TXPOWER_REFERENCE_TEMPERATURE 25 |
Reference temperature for TX power, degrees C
Referenced by LRF_programTemperatureCompensatedTxPower().
| #define LRF_TXPOWER_TEMPERATURE_SCALING 0x100 |
Scaling factor for TX power temperature coefficients
Referenced by LRF_programTemperatureCompensatedTxPower().
| #define LRF_TXPOWER_BYPASS_FREQUENCY_BACKOFF 0xFFFFFFFF |
Special value to indicate that no frequency specific back-off should be applied
Referenced by LRF_programTxPower(), and RCL_Handler_BLE_CS().
| #define LRF_POWER_PERIPH_VALUE | ( | x | ) | (PowerCC23X0_PERIPH_GROUP_LRFD | (x)) |
| #define PowerLPF3_PERIPH_LRFD_BUFRAM LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_BUFRAM_S) |
Referenced by adcNoiseCallback(), RCL_AdcNoise_get_samples_blocking(), and RCL_AdcNoise_get_samples_callback().
| #define PowerLPF3_PERIPH_LRFD_MDM LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_MDM_S) |
| #define PowerLPF3_PERIPH_LRFD_TRC LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_TRC_S) |
| typedef uint8_t LRF_TxPowerTable_TempCoeff |
| enum LRF_TxPowerResult |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
| void LRF_programTemperatureCompensatedTxPower | ( | void | ) |
Programs current TX power setting in radio with temperature compensation.
References hal_get_temperature(), LRF_CC27XX_HIGH_PA_MODE, LRF_CC27XX_RETRIEVE_PA_MODE_FROM_RAW_VALUE, LRF_DEFAULT_RTRIM_MAX, LRF_TRIM_SIGN_MAG_TO_SIGNED, LRF_TXPOWER_REFERENCE_TEMPERATURE, LRF_TXPOWER_TEMPERATURE_SCALING, lrfPhyState, LRF_TxPowerTable_Value::rawValue, rclFeatureControl, RFE_PA0_IB_MIN_USED, swParamList, LRF_TxPowerTable_Entry::tempCoeff, LRF_SwParam::trimDef, and LRF_TxPowerTable_Entry::value.
Referenced by LRF_getTxFifoWritable(), LRF_programTxPower(), and LRF_updateTemperatureCompensation().
| LRF_TxPowerResult LRF_programTxPower | ( | LRF_TxPowerTable_Index | powerLevel, |
| uint32_t | rfFreq | ||
| ) |
Finds settings corresponding to the highest tx power lower than the specified value in the tx power table and programs it in the radio.
| powerLevel | maximum allowed power level in dBm, or special value (LRF_TxPower_Use_Min, LRF_TxPower_Use_Max, LRF_TxPower_Use_Raw, or LRF_TxPower_None) |
| rfFreq | Radio frequency in Hz for which the maximum Tx power is calculated |
References LRF_TxPowerLimitTable::freqDiv, hal_get_temperature(), hal_get_vdds_voltage(), LRF_TxPowerLimitTable::limitTable, LRF_CC27XX_NOM_TEMP_FACTOR, LRF_CC27XX_SCALE_TEMP_COEFF, LRF_CC27XX_VDDS_THRESHOLD_0, LRF_CC27XX_VDDS_THRESHOLD_1, LRF_CC27XX_VDDS_THRESHOLD_2, LRF_programTemperatureCompensatedTxPower(), LRF_TRIM_SIGN_MAG_TO_SIGNED, LRF_TXPOWER_BYPASS_FREQUENCY_BACKOFF, LRF_TxPower_Max_Temp_Coeff_Comp, LRF_TxPower_Min_Temp_Coeff_Comp, LRF_TxPower_None, LRF_TxPower_Use_Max, LRF_TxPower_Use_Raw, LRF_TxPower_Use_Vdds_Comp, LRF_TxPowerTable_findValue(), LRF_TxPowerTable_INVALID_VALUE, lrfPhyState, LRF_TxPowerLimitTable_Entry::maxTxPower, LRF_TxPowerLimitTable_Entry::minFreq, LRF_TxPowerTable::numEntries, LRF_TxPowerLimitTable::numEntries, LRF_TxPowerTable_Entry::power, LRF_TxPowerTable::powerTable, LRF_TxPowerTable_Value::rawValue, LRF_TxPowerTable_Index::rawValue, rclFeatureControl, LRF_TxPowerLimitTable_Entry::regulatoryMask, swParamList, LRF_SwParam::trimDef, LRF_SwParam::txPowerLimitTable, TxPowerResult_Error, TxPowerResult_Ok, LRF_SwParam::txPowerTable, and LRF_TxPowerTable_Entry::value.
Referenced by LRF_getTxFifoWritable(), RCL_Handler_BLE5_adv(), RCL_Handler_BLE5_aux_adv(), RCL_Handler_BLE5_conn(), RCL_Handler_BLE5_dtmTx(), RCL_Handler_BLE5_genericTx(), RCL_Handler_BLE5_periodicAdv(), RCL_Handler_BLE5_periodicScan(), RCL_Handler_BLE5_scan_init(), RCL_Handler_Ble5_txTest(), RCL_Handler_BLE_CS(), RCL_Handler_Generic_Tx(), RCL_Handler_Generic_TxRepeat(), RCL_Handler_Generic_TxTest(), RCL_Handler_Ieee_RxTx(), RCL_Handler_Ieee_TxTest(), RCL_Handler_Nesb_Prx(), RCL_Handler_Nesb_Ptx(), and RCL_IEEE_updateTxPower().
| int8_t LRF_readMaxRssi | ( | void | ) |
Reads maximum RSSI from register.
Referenced by LRF_getTxFifoWritable(), and RCL_Handler_Ieee_updateStats().
| void LRF_initializeMaxRssi | ( | int8_t | initRssi | ) |
Initialize maximum RSSI register.
Referenced by LRF_getTxFifoWritable(), and RCL_Handler_Ieee_initStats().
|
inlinestatic |
Request specific clock enable bits for use by the RCL.
| mask | Bit mask of clock enable bits to be set; bit positions as in LRFDDBELL_CLKCTL |
References hal_set_rcl_clock_enable().
Referenced by LRF_rclEnableRadioClocks(), RCL_Handler_Adc_Noise_configureS2R(), RCL_Handler_BLE_CS_configureS2R(), and RCL_Handler_BLE_CS_preprocessCommand().
|
inlinestatic |
Remove request of specific clock enable bits for use by the RCL.
| mask | Bit mask of clock enable bits to be cleared; bit positions as in LRFDDBELL_CLKCTL |
References hal_clear_rcl_clock_enable(), LRF_deassertCoexRequest(), LRF_disableCoexGrant(), LRF_disableTemperatureMonitoring(), LRF_enableCoexGrant(), LRF_enableTemperatureMonitoring(), LRF_getLastTrimTemperature(), LRF_setAntennaSelection(), and LRF_updateTemperatureCompensation().
Referenced by LRF_rclDisableRadioClocks(), and RCL_Handler_Adc_Noise_powerDown().
| void LRF_enableCoexGrant | ( | void | ) |
Enable monitoring of coexistence grant signal in RFE.
Turns on the coex grant signal for the configured IO pin (if any). The function must be called before starting a PBE operation. The handler is responsible for disabling in order to avoid coex operation in commands not supporting it.
References LRF_CoexConfiguration::grantPin, and lrfCoexConfiguration.
Referenced by LRF_clearRclClockEnable(), and RCL_Handler_Ieee_RxTx().
| void LRF_disableCoexGrant | ( | void | ) |
Disable monitoring of coexistence grant signal in RFE.
Turns off the coex grant signal to the RFE. Should be called by the handler at the end of a command where LRF_enableCoexGrant was called. The function must be called after the PBE operation ended, but can safely be called even without a previous LRF_enableCoexGrant.
Referenced by __attribute__(), LRF_clearRclClockEnable(), and RCL_Handler_Ieee_RxTx().
| void LRF_deassertCoexRequest | ( | void | ) |
Deassert coexistence REQUEST.
Set coex REQUEST and PRIORITY lines low to indicate no request. Should only be done when PBE is finished.
Referenced by LRF_clearRclClockEnable(), and RCL_Handler_Ieee_RxTx().
| void LRF_enableTemperatureMonitoring | ( | void | ) |
Enable temperature monitoring to allow handlers to update temperature compensation.
References RCL_FeatureControl::enableTemperatureMonitoring, hal_set_temperature_notification(), LRF_temperatureNotification(), lrfPhyState, rclFeatureControl, and rclTemperatureThreshold.
Referenced by LRF_clearRclClockEnable(), LRF_updateTemperatureCompensation(), and RCL_Handler_Ieee_RxTx().
| void LRF_disableTemperatureMonitoring | ( | void | ) |
Disable temperature monitoring.
References RCL_FeatureControl::enableTemperatureMonitoring, hal_stop_temperature_notification(), and rclFeatureControl.
Referenced by LRF_clearRclClockEnable(), and RCL_Handler_Ieee_RxTx().
| void LRF_updateTemperatureCompensation | ( | uint32_t | rfFrequency, |
| bool | tx | ||
| ) |
Update temperature compensation in radio.
Update temperature compensation by allowing TCXO updates, set new RF frequency correction, update temperature compensated trim values, and update temperature compensation for TX power
| rfFrequency | RF frequency at which the command is operating |
| tx | True if radio will be starting in TX; false if it will be starting in RX |
References RCL_FeatureControl::enableTemperatureMonitoring, hal_power_release_swtcxo_update_constraint(), hal_power_set_swtcxo_update_constraint(), LRF_enableTemperatureMonitoring(), LRF_programFrequency(), LRF_programTemperatureCompensatedTxPower(), LRF_setTemperatureTrim(), rclFeatureControl, swParamList, and LRF_SwParam::trimDef.
Referenced by LRF_clearRclClockEnable(), and RCL_Handler_Ieee_RxTx().
| int16_t LRF_getLastTrimTemperature | ( | void | ) |
Get temperature used in last setting of trims.
References lrfPhyState.
Referenced by LRF_clearRclClockEnable().
| void LRF_setAntennaSelection | ( | uint32_t | value | ) |
Set the default antenna to be used during the next radio configuration.
This function configures the antenna selection value for the current PHY. The selection does not take effect immediately but will be applied the next time the radio is configured. This typically occurs when a radio command is started or when the device wakes up from standby while running a radio command.
| value | Antenna selection value. |
References LRF_PBE_GPOCTRL_MASK.
Referenced by LRF_clearRclClockEnable().
| const LRF_TxShape LRF_shapeBaseGfsk05 |
| const LRF_TxShape LRF_shapeBaseGfsk067 |
| const LRF_TxShape LRF_shapeBaseGfsk20 |