33 #ifndef ti_drivers_LRFCC2340_h__include 34 #define ti_drivers_LRFCC2340_h__include 39 #include <ti/devices/DeviceFamily.h> 40 #include DeviceFamily_constructPath(inc/hw_memmap.h) 41 #include DeviceFamily_constructPath(inc/hw_lrfdpbe.h) 42 #include DeviceFamily_constructPath(inc/hw_lrfddbell.h) 43 #include DeviceFamily_constructPath(inc/pbe_generic_regdef_regs.h) 51 #ifdef DeviceFamily_CC27XX 59 uint16_t rtrimTxCompCtl: 1;
60 uint16_t pa20dBmEsdCtl: 1;
61 uint16_t noIfampRfLdoBypass: 1;
73 uint16_t noIfampRfLdoBypass: 1;
78 #define LRF_TxPowerTable_INVALID_VALUE ((LRF_TxPowerTable_Value){.rawValue = 0xFFFF}) 80 typedef uint8_t LRF_TxPowerTable_TempCoeff; 82 typedef enum LRF_TxPowerResult_e {
88 #define LRF_EventNone ((LRF_Events){ .value = (0U << 0U)}) 89 #define LRF_EventOpDone ((LRF_Events){ .value = (1U << 0U)}) 90 #define LRF_EventPingRsp ((LRF_Events){ .value = (1U << 1U)}) 91 #define LRF_EventRxCtrl ((LRF_Events){ .value = (1U << 2U)}) 92 #define LRF_EventRxCtrlAck ((LRF_Events){ .value = (1U << 3U)}) 93 #define LRF_EventRxNok ((LRF_Events){ .value = (1U << 4U)}) 94 #define LRF_EventRxIgnored ((LRF_Events){ .value = (1U << 5U)}) 95 #define LRF_EventRxEmpty ((LRF_Events){ .value = (1U << 6U)}) 96 #define LRF_EventRxBufFull ((LRF_Events){ .value = (1U << 7U)}) 97 #define LRF_EventRxOk ((LRF_Events){ .value = (1U << 8U)}) 98 #define LRF_EventTxCtrl ((LRF_Events){ .value = (1U << 9U)}) 99 #define LRF_EventTxCtrlAckAck ((LRF_Events){ .value = (1U << 10U)}) 100 #define LRF_EventTxRetrans ((LRF_Events){ .value = (1U << 11U)}) 101 #define LRF_EventTxAck ((LRF_Events){ .value = (1U << 12U)}) 102 #define LRF_EventTxDone ((LRF_Events){ .value = (1U << 13U)}) 103 #define LRF_EventTxCtrlAck ((LRF_Events){ .value = (1U << 14U)}) 104 #define LRF_EventOpError ((LRF_Events){ .value = (1U << 15U)}) 105 #define LRF_EventRxfifo ((LRF_Events){ .value = (1U << 16U)}) 106 #define LRF_EventTxfifo ((LRF_Events){ .value = (1U << 17U)}) 107 #define LRF_EventLossOfLock ((LRF_Events){ .value = (1U << 18U)}) 108 #define LRF_EventLock ((LRF_Events){ .value = (1U << 19U)}) 109 #define LRF_EventRfesoft0 ((LRF_Events){ .value = (1U << 20U)}) 110 #define LRF_EventRfesoft1 ((LRF_Events){ .value = (1U << 21U)}) 111 #define LRF_EventRfedone ((LRF_Events){ .value = (1U << 22U)}) 112 #define LRF_EventMdmsoft0 ((LRF_Events){ .value = (1U << 23U)}) 113 #define LRF_EventMdmsoft1 ((LRF_Events){ .value = (1U << 24U)}) 114 #define LRF_EventMdmsoft2 ((LRF_Events){ .value = (1U << 25U)}) 115 #define LRF_EventMdmout ((LRF_Events){ .value = (1U << 26U)}) 116 #define LRF_EventMdmin ((LRF_Events){ .value = (1U << 27U)}) 117 #define LRF_EventMdmdone ((LRF_Events){ .value = (1U << 28U)}) 118 #define LRF_EventSystim0 ((LRF_Events){ .value = (1U << 29U)}) 119 #define LRF_EventSystim1 ((LRF_Events){ .value = (1U << 30U)}) 120 #define LRF_EventSystim2 ((LRF_Events){ .value = (1U << 31U)}) 126 uint32_t pingRsp : 1;
128 uint32_t rxCtrlAck : 1;
130 uint32_t rxIgnored : 1;
131 uint32_t rxEmpty : 1;
132 uint32_t rxBufFull : 1;
135 uint32_t txCtrlAckAck : 1;
136 uint32_t txRetrans : 1;
139 uint32_t txCtrlAck : 1;
140 uint32_t opError : 1;
143 uint32_t lossOfLock : 1;
145 uint32_t rfesoft0 : 1;
146 uint32_t rfesoft1 : 1;
147 uint32_t rfedone : 1;
148 uint32_t mdmsoft0 : 1;
149 uint32_t mdmsoft1 : 1;
150 uint32_t mdmsoft2 : 1;
153 uint32_t mdmdone : 1;
154 uint32_t systim0 : 1;
155 uint32_t systim1 : 1;
156 uint32_t systim2 : 1;
161 typedef struct LRF_RegConfig_s {
163 uint32_t regConfig[];
172 uint8_t fraction : 1;
189 #define LRF_TxPowerEntry_INVALID_VALUE \ 190 ((LRF_TxPowerTable_Entry) {\ 191 .power = LRF_TxPower_None,\ 193 .value = LRF_TxPowerTable_INVALID_VALUE,\ 226 typedef struct LRF_TxShape_s {
229 uint32_t numCoeff :15;
244 #define LRF_TRIM_NUM_VARIANTS 2 250 #ifdef DeviceFamily_CC27XX 271 } LRF_Trim_rtrimTxComp;
276 uint16_t highCmp : 4;
282 } LRF_Trim_tempCoeffComp;
283 #endif //DeviceFamily_CC27XX 293 #ifdef DeviceFamily_CC27XX 306 uint16_t irefTrim : 5;
311 #ifdef DeviceFamily_CC27XX 337 uint16_t voutTrim : 7;
343 uint16_t voutTrim : 7;
361 uint16_t firstTrim : 4;
362 uint16_t secondTrim : 6;
368 uint16_t trimout : 6;
374 uint16_t trimout : 6;
380 uint16_t tailresTrim : 4;
397 uint16_t quantThr : 3;
404 uint16_t int2Adj : 4;
406 uint16_t ditheren : 2;
407 uint16_t dithertrim : 3;
435 uint16_t rtrimMinOffset : 2;
436 uint16_t rtrimMaxOffset : 2;
437 uint16_t divLdoMinOffset: 2;
438 uint16_t divLdoMaxOffset: 2;
439 uint16_t tdcLdoMinOffset: 2;
440 uint16_t tdcLdoMaxOffset: 2;
446 int32_t rssiTcomp : 4;
447 int32_t magnTcomp : 4;
448 int32_t magnOffset : 4;
450 int32_t agcThrTcomp : 4;
451 int32_t agcThrOffset : 4;
452 int32_t lowGainOffset : 4;
453 int32_t highGainOffset : 4;
457 uint8_t dcoldoFirstMinOffset : 2;
458 uint8_t dcoldoFirstMaxOffset : 2;
459 uint8_t dcoldoSecondMinOffset : 2;
460 uint8_t dcoldoSecondMaxOffset : 2;
473 uint32_t lrfdrfeExtTrim1;
474 uint32_t lrfdrfeExtTrim0;
485 uint16_t trimCompleteN : 1;
494 #ifdef DeviceFamily_CC27XX 512 uint8_t trimCompleteN;
514 #ifdef DeviceFamily_CC27XX 524 #ifdef DeviceFamily_CC27XX 527 LRF_Trim_vddsComp vddsComp;
529 LRF_Trim_rtrimTxComp rtrimTxComp;
530 LRF_Trim_tempCoeffComp tempCoeffComp;
534 #endif //DeviceFamily_CC27XX 548 #ifdef DeviceFamily_CC27XX 549 uint32_t reserved1[15];
551 #endif //DeviceFamily_CC27XX 557 typedef struct LRF_SwConfig_s {
570 typedef struct LRF_SwParam_s {
580 typedef struct LRF_Config_s {
587 #define LRF_BASE_ADDR 0x40080000U 588 #define PBE_RAM_BASE_ADDR 0x40090000U 589 #define BUF_RAM_BASE_ADDR 0x40092000U 590 #define RXF_UNWRAPPED_BASE_ADDR 0x40093000U 591 #define TXF_UNWRAPPED_BASE_ADDR 0x40093800U 592 #define MCE_RAM_BASE_ADDR 0x40094000U 593 #define RFE_RAM_BASE_ADDR 0x40096000U 594 #define S2R_RAM_BASE_ADDR 0x40098000U 595 #define TOPSM_RAM_SZ 0x00001000U 596 #define MAX_REG_CONFIG_LEN 1024U 598 #define LRF_TXPOWER_REFERENCE_TEMPERATURE 25 599 #define LRF_TXPOWER_TEMPERATURE_SCALING 0x100 600 #define LRF_TXPOWER_BYPASS_FREQUENCY_BACKOFF 0xFFFFFFFF 602 extern const LRF_TxShape LRF_shapeBaseGfsk05; 610 HWREG_WRITE_LRF(LRFDPBE_BASE + LRFDPBE_O_API) = PBE_GENERIC_REGDEF_API_OP_STOP;
617 HWREG_WRITE_LRF(LRFDPBE_BASE + LRFDPBE_O_API) = PBE_GENERIC_REGDEF_API_OP_EOPSTOP;
627 return HWREG_READ_LRF(LRFDPBE_BASE + LRFDPBE_O_TXFWRITABLE);
765 #ifdef DeviceFamily_CC27XX 781 void LRF_updatePaEsdProtection();
786 #include <ti/drivers/Power.h> 788 #ifdef DeviceFamily_CC27XX 789 #define LRF_POWER_PERIPH_VALUE(x) (PowerCC27XX_PERIPH_GROUP_LRFD | (x)) 791 #define LRF_POWER_PERIPH_VALUE(x) (PowerCC23X0_PERIPH_GROUP_LRFD | (x)) 794 #ifdef PowerLPF3_PERIPH_LRFD_BUFRAM 795 #error "Remove local definition in LRFCC23X0.h and rely on Power driver's definition" 797 #define PowerLPF3_PERIPH_LRFD_BUFRAM LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_BUFRAM_S) 800 #ifdef PowerLPF3_PERIPH_LRFD_MDM 801 #error "Remove local definition in LRFCC23X0.h and rely on Power driver's definition" 803 #define PowerLPF3_PERIPH_LRFD_MDM LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_MDM_S) 806 #ifdef PowerLPF3_PERIPH_LRFD_TRC 807 #error "Remove local definition in LRFCC23X0.h and rely on Power driver's definition" 809 #define PowerLPF3_PERIPH_LRFD_TRC LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_TRC_S) LRF_Trim3 trim3
Definition: LRFCC23X0.h:546
uint16_t rawValue
Definition: LRFCC23X0.h:75
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 t...
Definition: LRFCC23X0.c:1806
LRF_DoubleWord data
Definition: LRFCC23X0.h:353
LRF_TxPowerTable_TempCoeff tempCoeff
Definition: LRFCC23X0.h:184
static void LRF_sendGracefulStop(void)
Definition: LRFCC23X0.h:613
const LRF_TxShape LRF_shapeBaseGfsk20
static void LRF_hardStop(void)
Definition: LRFCC23X0.h:620
Software defined PHY parameters.
Definition: LRFCC23X0.h:557
uint16_t minFreq
Definition: LRFCC23X0.h:210
uint8_t grantPin
Definition: LRFCC23X0.h:237
uint8_t revision
Definition: LRFCC23X0.h:539
void LRF_updateTemperatureCompensation(uint32_t rfFrequency, bool tx)
Update temperature compensation in radio.
Definition: LRFCC23X0.c:2013
Definition: LRFCC23X0.h:226
Definition: LRFCC23X0.h:456
LRF_Trim4 trim4
Definition: LRFCC23X0.h:547
int8_t rawValue
Definition: LRFCC23X0.h:175
static void LRF_setRclClockEnable(uint16_t mask)
Request specific clock enable bits for use by the RCL.
Definition: LRFCC23X0.h:664
const LRF_SwConfig * swConfig
Definition: LRFCC23X0.h:571
Single entry of the tx power table. Maps power in dBm to specific register settings.
Definition: LRFCC23X0.h:182
uint8_t LRF_TxPowerTable_TempCoeff
Definition: LRFCC23X0.h:80
int8_t LRF_readMaxRssi(void)
Reads maximum RSSI from register.
Definition: LRFCC23X0.c:1649
Single entry of the Tx power limit table.
Definition: LRFCC23X0.h:209
const LRF_TOPsmImage * mceImage
Definition: LRFCC23X0.h:582
LRF_Trim1 trim1
Definition: LRFCC23X0.h:543
void hal_clear_rcl_clock_enable(uint16_t mask)
Definition: hal_cc23x0.c:392
Tx power table, containing all characterized dBm to register settings mappings.
Definition: LRFCC23X0.h:201
Definition: LRFCC23X0.h:84
uint16_t ieeeTSync
Definition: LRFCC23X0.h:239
Definition: LRFCC23X0.h:285
Definition: LRFCC23X0.h:321
Definition: LRFCC23X0.h:356
Definition: LRFCC23X0.h:462
Definition: LRFCC23X0.h:479
uint16_t maxFreq
Definition: LRFCC23X0.h:211
LRF_TxPowerTable_Index power
Definition: LRFCC23X0.h:183
void LRF_disableTemperatureMonitoring(void)
Disable temperature monitoring.
Definition: LRFCC23X0.c:2002
Index of the tx power table.
Definition: LRFCC23X0.h:169
int32_t txFrequencyOffset
Definition: LRFCC23X0.h:560
LRF_TxPowerTable_Index maxTxPower
Definition: LRFCC23X0.h:213
Radio configuration structure.
Definition: LRFCC23X0.h:580
const LRF_TOPsmImage * rfeImage
Definition: LRFCC23X0.h:583
static void LRF_clearRclClockEnable(uint16_t mask)
Remove request of specific clock enable bits for use by the RCL.
Definition: LRFCC23X0.h:675
#define LRF_TRIM_NUM_VARIANTS
Definition: LRFCC23X0.h:244
LRF_TxPowerTable_Value value
Definition: LRFCC23X0.h:185
uint8_t T2
Definition: LRFCC23X0.h:236
uint32_t numEntries
Definition: LRFCC23X0.h:221
LRF_Trim0 trim0
Definition: LRFCC23X0.h:542
Definition: LRFCC23X0.h:234
uint8_t data[]
Definition: ble_cs.h:555
void hal_set_rcl_clock_enable(uint16_t mask)
Definition: hal_cc23x0.c:385
uint32_t data
Definition: LRFCC23X0.h:318
bool invertedPriority
Definition: LRFCC23X0.h:238
const LRF_RegConfigList * regConfigList
Definition: LRFCC23X0.h:584
uint8_t regulatoryMask
Definition: LRFCC23X0.h:212
void LRF_enableTemperatureMonitoring(void)
Enable temperature monitoring to allow handlers to update temperature compensation.
Definition: LRFCC23X0.c:1988
uint32_t value
Definition: LRFCC23X0.h:158
void LRF_initializeMaxRssi(int8_t initRssi)
Initialize maximum RSSI register.
Definition: LRFCC23X0.c:1654
LRF_Trim2 trim2
Definition: LRFCC23X0.h:544
void LRF_disableCoexGrant(void)
Disable monitoring of coexistence grant signal in RFE.
Definition: LRFCC23X0.c:1686
uint32_t data
Definition: LRFCC23X0.h:521
uint8_t bwIndex
Definition: LRFCC23X0.h:563
uint16_t T1
Definition: LRFCC23X0.h:235
Definition: LRFCC23X0.h:538
Definition: LRFCC23X0.h:83
void LRF_deassertCoexRequest(void)
Deassert coexistence REQUEST.
Definition: LRFCC23X0.c:1692
Definition: LRFCC23X0.h:433
int16_t LRF_getLastTrimTemperature(void)
Get temperature used in last setting of trims.
Definition: LRFCC23X0.c:2036
LRF_DoubleWord data
Definition: LRFCC23X0.h:390
int32_t rxFrequencyOffset
Definition: LRFCC23X0.h:559
const LRF_TxShape * txShape
Definition: LRFCC23X0.h:562
uint8_t nToolsClientOffset
Definition: LRFCC23X0.h:540
static uint32_t LRF_getTxFifoWritable(void)
Definition: LRFCC23X0.h:625
const LRF_TrimDef * trimDef
Definition: LRFCC23X0.h:574
uint32_t modFrequencyDeviation
Definition: LRFCC23X0.h:561
const LRF_TxPowerTable * txPowerTable
Definition: LRFCC23X0.h:573
void LRF_setAntennaSelection(uint32_t value)
Set the default antenna to be used during the next radio configuration.
Definition: LRFCC23X0.c:2044
uint32_t freqDiv
Definition: LRFCC23X0.h:222
const LRF_TxPowerLimitTable * txPowerLimitTable
Definition: LRFCC23X0.h:572
uint8_t mode
Definition: ble_cs.h:544
void LRF_programTemperatureCompensatedTxPower(void)
Programs current TX power setting in radio with temperature compensation.
Definition: LRFCC23X0.c:1704
uint32_t configLen
Definition: LRFCC23X0.h:162
Definition: LRFCC23X0.h:393
uint8_t ieeeCorrMask
Definition: LRFCC23X0.h:240
LRF_TxPowerResult
Definition: LRFCC23X0.h:82
uint32_t data
Definition: LRFCC23X0.h:476
int32_t rxIntFrequency
Definition: LRFCC23X0.h:558
Definition: LRFCC23X0.h:161
uint32_t numEntries
Definition: LRFCC23X0.h:202
Definition: LRFCC23X0.h:246
const LRF_TxShape LRF_shapeBaseGfsk067
uint8_t bwIndexDither
Definition: LRFCC23X0.h:564
const LRF_TOPsmImage * pbeImage
Definition: LRFCC23X0.h:581
LRF_DoubleWord data
Definition: LRFCC23X0.h:430
Type for tx power configuration.
Definition: LRFCC23X0.h:66
Tx power limit table, containing frequency dependent power limits for specific regulatory domain...
Definition: LRFCC23X0.h:220
Software defined PHY parameter list.
Definition: LRFCC23X0.h:570
void LRF_enableCoexGrant(void)
Enable monitoring of coexistence grant signal in RFE.
Definition: LRFCC23X0.c:1680
static void LRF_sendHardStop(void)
Definition: LRFCC23X0.h:606