Radio Control Layer (RCL)
LRFCC23X0.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2025, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #ifndef ti_drivers_LRFCC2340_h__include
34 #define ti_drivers_LRFCC2340_h__include
35 
36 #include <stdint.h>
37 #include <stddef.h>
38 #include <stdbool.h>
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)
44 
46 
51 #ifdef DeviceFamily_CC27XX
52 typedef union
53 {
54  struct {
55  uint16_t ibBoost: 2;
56  uint16_t ib: 6;
57  uint16_t gain: 3;
58  uint16_t mode: 2;
59  uint16_t rtrimTxCompCtl: 1;
60  uint16_t pa20dBmEsdCtl: 1;
61  uint16_t noIfampRfLdoBypass: 1;
62  };
63  uint16_t rawValue;
65 #else
66 typedef union
67 {
68  struct {
69  uint16_t reserved: 5;
70  uint16_t ib: 6;
71  uint16_t gain: 3;
72  uint16_t mode: 1;
73  uint16_t noIfampRfLdoBypass: 1;
74  };
75  uint16_t rawValue;
77 #endif
78 #define LRF_TxPowerTable_INVALID_VALUE ((LRF_TxPowerTable_Value){.rawValue = 0xFFFF})
80 typedef uint8_t LRF_TxPowerTable_TempCoeff;
81 
82 typedef enum LRF_TxPowerResult_e {
86 
87 
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)})
123 union LRF_Events_u {
124  struct {
125  uint32_t opDone : 1;
126  uint32_t pingRsp : 1;
127  uint32_t rxCtrl : 1;
128  uint32_t rxCtrlAck : 1;
129  uint32_t rxNok : 1;
130  uint32_t rxIgnored : 1;
131  uint32_t rxEmpty : 1;
132  uint32_t rxBufFull : 1;
133  uint32_t rxOk : 1;
134  uint32_t txCtrl : 1;
135  uint32_t txCtrlAckAck : 1;
136  uint32_t txRetrans : 1;
137  uint32_t txAck : 1;
138  uint32_t txDone : 1;
139  uint32_t txCtrlAck : 1;
140  uint32_t opError : 1;
141  uint32_t rxfifo : 1;
142  uint32_t txfifo : 1;
143  uint32_t lossOfLock : 1;
144  uint32_t lock : 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;
151  uint32_t mdmout : 1;
152  uint32_t mdmin : 1;
153  uint32_t mdmdone : 1;
154  uint32_t systim0 : 1;
155  uint32_t systim1 : 1;
156  uint32_t systim2 : 1;
157  };
158  uint32_t value;
159 };
160 
161 typedef struct LRF_RegConfig_s {
162  uint32_t configLen;
163  uint32_t regConfig[];
164 } LRF_RegConfig;
165 
169 typedef union
170 {
171  struct {
172  uint8_t fraction : 1;
173  int8_t dBm : 7;
174  };
175  int8_t rawValue;
177 
182 typedef struct {
187 
189 #define LRF_TxPowerEntry_INVALID_VALUE \
190 ((LRF_TxPowerTable_Entry) {\
191  .power = LRF_TxPower_None,\
192  .tempCoeff = 0,\
193  .value = LRF_TxPowerTable_INVALID_VALUE,\
194 })
195 
201 typedef struct {
202  uint32_t numEntries;
205 
209 typedef struct {
210  uint16_t minFreq;
211  uint16_t maxFreq;
212  uint8_t regulatoryMask;
215 
220 typedef struct {
221  uint32_t numEntries;
222  uint32_t freqDiv;
225 
226 typedef struct LRF_TxShape_s {
227  struct {
228  uint32_t scale :17;
229  uint32_t numCoeff :15;
230  };
231  uint8_t coeff[];
232 } LRF_TxShape;
233 
234 typedef struct {
235  uint16_t T1; /* T1 constant (RF activity latency) in 0.25 us steps. 0: REQUEST and PRIORITY not used */
236  uint8_t T2; /* T2 constant (Priority indication time) in 0.25 us steps. 0: No priority indication */
237  uint8_t grantPin; /* Grant pin in use if coex is enabled, or "disabled" if globally disabled */
238  bool invertedPriority; /* True if coex priority signal is inverted (0 means high priority) */
239  uint16_t ieeeTSync; /* IEEE 802.15.4: Timeout (0.25 us steps) of REQUEST on frame indication before sync must be seen */
240  uint8_t ieeeCorrMask; /* IEEE 802.15.4: Bit mask indicating correlation tops needed to declare frame indication */
242 
243 /* Definitions for trim */
244 #define LRF_TRIM_NUM_VARIANTS 2
245 
246 typedef struct {
247  uint32_t word[2];
249 
250 #ifdef DeviceFamily_CC27XX
251 typedef struct {
252  union {
253  struct {
254  uint16_t r0 : 4;
255  uint16_t r1 : 4;
256  uint16_t r2 : 4;
257  uint16_t r3 : 4;
258  } fields;
259  uint16_t value;
260  };
261 } LRF_Trim_vddsComp;
262 typedef struct {
263  int8_t thr;
264  union {
265  struct {
266  uint8_t val : 4;
267  uint8_t spare : 4;
268  } fields;
269  uint8_t value;
270  };
271 } LRF_Trim_rtrimTxComp;
272 typedef struct {
273  union {
274  struct {
275  uint16_t lowCmp : 4;
276  uint16_t highCmp : 4;
277  uint16_t nomTmp : 4;
278  uint16_t nomIdx : 4;
279  } fields;
280  uint16_t value;
281  };
282 } LRF_Trim_tempCoeffComp;
283 #endif //DeviceFamily_CC27XX
284 
285 typedef union {
286  struct {
287  // Trim value for LRFDRFE:PA0.TRIM
288  union {
289  struct { // length: 2B
290  uint16_t trim : 5;
291  uint16_t zero : 11;
292  } pa0;
293 #ifdef DeviceFamily_CC27XX
294  // Trim values for PA (mode0, mode1)
295  struct { // length: 2B
296  uint16_t trim0 : 5;
297  uint16_t zero0 : 3;
298  uint16_t trim1 : 5;
299  uint16_t zero1 : 3;
300  } pa2trim01;
301 #endif
302  };
303  // Trim value for LRFDRFE:ATSTREFH.IREFTRIM
304  struct { // length: 2B
305  uint16_t zero0 : 10;
306  uint16_t irefTrim : 5;
307  uint16_t zero1 : 1;
308  } atstRefH;
309  } fields;
310  struct {
311 #ifdef DeviceFamily_CC27XX
312  uint16_t pa2trim01;
313 #else
314  uint16_t pa0;
315 #endif
316  uint16_t atstRefH;
317  };
318  uint32_t data;
319 } LRF_Trim0;
320 
321 typedef union {
322  struct {
323  // Trim value for LRFDRFE:LNA.TRIM
324  struct { // length: 2B
325  uint16_t zero0 : 4;
326  uint16_t trim : 4;
327  uint16_t zero1 : 8;
328  } lna;
329  // Trim value for LRFDRFE:IFAMPRFLDO.TRIM
330  struct { // length: 2B
331  uint16_t zero : 9;
332  uint16_t trim : 7;
333  } ifampRfLdo;
334  // Trim value for LRFDRFE:DIVLDO.VOUTTRIM
335  struct { // length: 2B
336  uint16_t zero0 : 8;
337  uint16_t voutTrim : 7;
338  uint16_t zero1 : 1;
339  } divLdo;
340  // Trim value for LRFDRFE:TDCLDO.VOUTTRIM
341  struct { // length: 2B
342  uint16_t zero0 : 8;
343  uint16_t voutTrim : 7;
344  uint16_t zero1 : 1;
345  } tdcLdo;
346  } fields;
347  struct {
348  uint16_t lna;
349  uint16_t ifampRfLdo;
350  uint16_t divLdo;
351  uint16_t tdcLdo;
352  };
354 } LRF_Trim1;
355 
356 typedef union {
357  struct {
358  // Trim values for LRFDRFE:DCOLDO0
359  struct { // length: 2B
360  uint16_t zero0 : 4;
361  uint16_t firstTrim : 4;
362  uint16_t secondTrim : 6;
363  uint16_t zero1 : 2;
364  } dcoLdo0;
365  // Trim value for LRFDRFE:IFADCALDO.TRIMOUT
366  struct { // length: 2B
367  uint16_t zero0 : 8;
368  uint16_t trimout : 6;
369  uint16_t zero1 : 2;
370  } ifadcAldo;
371  // Trim value for LRFDRFE:IFADCDLDO.TRIMOUT
372  struct { // length: 2B
373  uint16_t zero0 : 8;
374  uint16_t trimout : 6;
375  uint16_t zero1 : 2;
376  } ifadcDldo;
377  // Trim value for LRFDRFE:DCO.TAILRESTRIM
378  struct { // length: 2B
379  uint16_t zero0 : 3;
380  uint16_t tailresTrim : 4;
381  uint16_t zero1 : 9;
382  } dco;
383  } fields;
384  struct {
385  uint16_t dcoLdo0;
386  uint16_t ifadcAldo;
387  uint16_t ifadcDldo;
388  uint16_t dco;
389  };
391 } LRF_Trim2;
392 
393 typedef union {
394  struct {
395  // Trim value for LRFDRFE:IFADCQUANT.QUANTTHR
396  struct { // length: 2B
397  uint16_t quantThr : 3;
398  uint16_t zero : 13;
399  } ifadcQuant;
400  // Trim values for LRFDRFE:IFADC0
401  struct { // length: 2B
402  uint16_t zero0 : 2;
403  uint16_t aafcap : 2;
404  uint16_t int2Adj : 4;
405  uint16_t zero1 : 2;
406  uint16_t ditheren : 2; /* Revision >= 4 only */
407  uint16_t dithertrim : 3;
408  uint16_t zero2 : 1;
409  } ifadc0;
410  // Trim value for LRFDRFE:IFADC1.TRIM
411  struct { // length: 2B
412  uint16_t zero0 : 9;
413  uint16_t trim : 6;
414  uint16_t nrz : 1;
415  } ifadc1;
416  // Trim values for LRFDRFE:IFADCLF
417  struct { // length: 2B
418  uint16_t int3 : 4;
419  uint16_t ff1 : 4;
420  uint16_t ff2 : 4;
421  uint16_t ff3 : 4;
422  } ifadclf;
423  } fields;
424  struct {
425  uint16_t ifadcQuant;
426  uint16_t ifadc0;
427  uint16_t ifadc1;
428  uint16_t ifadclf;
429  };
432 
433 typedef struct
434 {
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;
441  uint16_t tThrl : 2;
442  uint16_t tThrh : 2;
444 
445 typedef struct {
446  int32_t rssiTcomp : 4;
447  int32_t magnTcomp : 4;
448  int32_t magnOffset : 4;
449  int32_t rfu : 4;
450  int32_t agcThrTcomp : 4;
451  int32_t agcThrOffset : 4;
452  int32_t lowGainOffset : 4;
453  int32_t highGainOffset : 4;
455 
456 typedef struct {
457  uint8_t dcoldoFirstMinOffset : 2;
458  uint8_t dcoldoFirstMaxOffset : 2;
459  uint8_t dcoldoSecondMinOffset : 2;
460  uint8_t dcoldoSecondMaxOffset : 2;
462 typedef union {
463  struct {
464  struct { // length: 4B
465  LRF_Trim_tempLdoRtrim tempLdoRtrim;
466  uint8_t hfxtPdError;
467  LRF_Trim_dcoldoOffset dcoldoOffset; /* Revision >= 8 only */
468  } lrfdrfeExtTrim1; /* Revision >= 4 only */
469  // Trim values for synth divider 0
470  LRF_Trim_tempRssiAgc lrfdrfeExtTrim0;
471  } fields;
472  struct {
473  uint32_t lrfdrfeExtTrim1;
474  uint32_t lrfdrfeExtTrim0;
475  };
476  uint32_t data;
477 } LRF_Trim3;
478 
479 typedef union {
480  struct {
481  struct { // length: 2B
482  // RSSI measured for front end 0 in production test.
483  // Value is read by RF Core FW during RF Core initialization
484  uint16_t offset : 8;
485  uint16_t trimCompleteN : 1;
486  uint16_t zero : 7;
487  } fend0Rssi;
488  // Trim values for synth divider 0
489  struct { // length: 2B
490  // Trim value for IQ mismatch compensation.
491  // Value is read by RF Core FW during RF Core initialization
492  uint16_t iqmc : 16;
493  } syntDiv0;
494 #ifdef DeviceFamily_CC27XX
495  // Trim values for PA (mode2, mode3)
496  struct { // length: 2B
497  uint16_t trim2 : 5;
498  uint16_t zero0 : 3;
499  uint16_t trim3 : 5;
500  uint16_t zero1 : 3;
501  } pa2trim23;
502 #else
503  uint16_t res1;
504 #endif
505  struct {
506  uint8_t zero : 4;
507  uint8_t aafcap : 4;
508  } ifamprfldo[LRF_TRIM_NUM_VARIANTS]; /* Revision >= 4 only */
509  } fields;
510  struct {
511  int8_t rssiOffset;
512  uint8_t trimCompleteN;
513  uint16_t demIQMC0;
514 #ifdef DeviceFamily_CC27XX
515  uint16_t pa2trim23;
516 #else
517  uint16_t res1;
518 #endif
519  uint8_t ifamprfldo[LRF_TRIM_NUM_VARIANTS];
520  };
521  uint32_t data;
522 } LRF_Trim4;
523 
524 #ifdef DeviceFamily_CC27XX
525 typedef union {
526  struct {
527  LRF_Trim_vddsComp vddsComp;
528  uint16_t reserved;
529  LRF_Trim_rtrimTxComp rtrimTxComp;
530  LRF_Trim_tempCoeffComp tempCoeffComp;
531  };
532  uint32_t data;
533 } LRF_Trim11;
534 #endif //DeviceFamily_CC27XX
535 
536 /* This definition is used instead of the definition from hw_fcfg.h to accommodate implementation
537  and cut parameters not relevant to LRF */
538 typedef struct {
539  uint8_t revision; /* Revision of appTrims */
541  uint8_t reserved[2];
548 #ifdef DeviceFamily_CC27XX
549  uint32_t reserved1[15];
550  LRF_Trim11 trim11;
551 #endif //DeviceFamily_CC27XX
552 } LRF_TrimDef;
553 
557 typedef struct LRF_SwConfig_s {
558  int32_t rxIntFrequency;
563  uint8_t bwIndex;
564  uint8_t bwIndexDither;
565 } LRF_SwConfig;
566 
570 typedef struct LRF_SwParam_s {
575 } LRF_SwParam;
576 
580 typedef struct LRF_Config_s {
581  const LRF_TOPsmImage *pbeImage;
582  const LRF_TOPsmImage *mceImage;
583  const LRF_TOPsmImage *rfeImage;
584  const LRF_RegConfigList *regConfigList;
585 } LRF_Config;
586 
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 /* 4 KB */
596 #define MAX_REG_CONFIG_LEN 1024U /* 1024 entries, using 4 KB */
597 
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;
603 extern const LRF_TxShape LRF_shapeBaseGfsk067;
604 extern const LRF_TxShape LRF_shapeBaseGfsk20;
605 
606 static inline void LRF_sendHardStop(void)
607 {
608  /* Send stop to PBE */
609  /* This API is the same across PBE banks */
610  HWREG_WRITE_LRF(LRFDPBE_BASE + LRFDPBE_O_API) = PBE_GENERIC_REGDEF_API_OP_STOP;
611 }
612 
613 static inline void LRF_sendGracefulStop(void)
614 {
615  /* Send stop to PBE */
616  /* This API is the same across PBE banks */
617  HWREG_WRITE_LRF(LRFDPBE_BASE + LRFDPBE_O_API) = PBE_GENERIC_REGDEF_API_OP_EOPSTOP;
618 }
619 
620 static inline void LRF_hardStop(void)
621 {
622  /* LRF does not need to do anything special after hard stop is sent */
623 }
624 
625 static inline uint32_t LRF_getTxFifoWritable(void)
626 {
627  return HWREG_READ_LRF(LRFDPBE_BASE + LRFDPBE_O_TXFWRITABLE);
628 }
629 
634 
646 LRF_TxPowerResult LRF_programTxPower(LRF_TxPowerTable_Index powerLevel, uint32_t rfFreq);
647 
651 int8_t LRF_readMaxRssi(void);
652 
656 void LRF_initializeMaxRssi(int8_t initRssi);
657 
664 static inline void LRF_setRclClockEnable(uint16_t mask)
665 {
667 }
668 
675 static inline void LRF_clearRclClockEnable(uint16_t mask)
676 {
678 }
679 
690 void LRF_enableCoexGrant(void);
691 
702 void LRF_disableCoexGrant(void);
703 
713 void LRF_deassertCoexRequest(void);
714 
722 
730 
743 void LRF_updateTemperatureCompensation(uint32_t rfFrequency, bool tx);
744 
748 int16_t LRF_getLastTrimTemperature(void);
749 
763 void LRF_setAntennaSelection(uint32_t value);
764 
765 #ifdef DeviceFamily_CC27XX
766 
781 void LRF_updatePaEsdProtection();
782 #endif
783 
784 /* Temporarily added definitions until https://jira.itg.ti.com/browse/TIDRIVERS-6489 is implemented */
785 #ifndef NO_DRIVERS
786 #include <ti/drivers/Power.h>
787 
788 #ifdef DeviceFamily_CC27XX
789 #define LRF_POWER_PERIPH_VALUE(x) (PowerCC27XX_PERIPH_GROUP_LRFD | (x))
790 #else
791 #define LRF_POWER_PERIPH_VALUE(x) (PowerCC23X0_PERIPH_GROUP_LRFD | (x))
792 #endif
793 
794 #ifdef PowerLPF3_PERIPH_LRFD_BUFRAM
795 #error "Remove local definition in LRFCC23X0.h and rely on Power driver's definition"
796 #else
797 #define PowerLPF3_PERIPH_LRFD_BUFRAM LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_BUFRAM_S)
798 #endif
799 
800 #ifdef PowerLPF3_PERIPH_LRFD_MDM
801 #error "Remove local definition in LRFCC23X0.h and rely on Power driver's definition"
802 #else
803 #define PowerLPF3_PERIPH_LRFD_MDM LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_MDM_S)
804 #endif
805 
806 #ifdef PowerLPF3_PERIPH_LRFD_TRC
807 #error "Remove local definition in LRFCC23X0.h and rely on Power driver's definition"
808 #else
809 #define PowerLPF3_PERIPH_LRFD_TRC LRF_POWER_PERIPH_VALUE(LRFDDBELL_CLKCTL_TRC_S)
810 #endif
811 /* End of temporarily added definitions */
812 
813 #endif
814 
815 #endif
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:445
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