Radio Control Layer (RCL)
LRFCC23X0.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2023, 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(driverlib/pbe_regs.h)
41 #include DeviceFamily_constructPath(driverlib/pbe_generic_regdef_regs.h)
42 
44 
49 typedef union
50 {
51  struct {
52  uint16_t reserved: 5;
53  uint16_t ib: 6;
54  uint16_t gain: 3;
55  uint16_t mode: 1;
56  uint16_t noIfampRfLdoBypass: 1;
57  };
58  uint16_t rawValue;
60 #define LRF_TxPowerTable_INVALID_VALUE ((LRF_TxPowerTable_Value){.rawValue = 0xFFFF})
62 typedef uint8_t LRF_TxPowerTable_TempCoeff;
63 
64 typedef enum LRF_TxPowerResult_e {
68 
69 
70 #define LRF_EventNone ((LRF_Events){ .value = (0U << 0U)})
71 #define LRF_EventOpDone ((LRF_Events){ .value = (1U << 0U)})
72 #define LRF_EventPingRsp ((LRF_Events){ .value = (1U << 1U)})
73 #define LRF_EventRxCtrl ((LRF_Events){ .value = (1U << 2U)})
74 #define LRF_EventRxCtrlAck ((LRF_Events){ .value = (1U << 3U)})
75 #define LRF_EventRxNok ((LRF_Events){ .value = (1U << 4U)})
76 #define LRF_EventRxIgnored ((LRF_Events){ .value = (1U << 5U)})
77 #define LRF_EventRxEmpty ((LRF_Events){ .value = (1U << 6U)})
78 #define LRF_EventRxBufFull ((LRF_Events){ .value = (1U << 7U)})
79 #define LRF_EventRxOk ((LRF_Events){ .value = (1U << 8U)})
80 #define LRF_EventTxCtrl ((LRF_Events){ .value = (1U << 9U)})
81 #define LRF_EventTxCtrlAckAck ((LRF_Events){ .value = (1U << 10U)})
82 #define LRF_EventTxRetrans ((LRF_Events){ .value = (1U << 11U)})
83 #define LRF_EventTxAck ((LRF_Events){ .value = (1U << 12U)})
84 #define LRF_EventTxDone ((LRF_Events){ .value = (1U << 13U)})
85 #define LRF_EventTxCtrlAck ((LRF_Events){ .value = (1U << 14U)})
86 #define LRF_EventOpError ((LRF_Events){ .value = (1U << 15U)})
87 #define LRF_EventRxfifo ((LRF_Events){ .value = (1U << 16U)})
88 #define LRF_EventTxfifo ((LRF_Events){ .value = (1U << 17U)})
89 #define LRF_EventLossOfLock ((LRF_Events){ .value = (1U << 18U)})
90 #define LRF_EventLock ((LRF_Events){ .value = (1U << 19U)})
91 #define LRF_EventRfesoft0 ((LRF_Events){ .value = (1U << 20U)})
92 #define LRF_EventRfesoft1 ((LRF_Events){ .value = (1U << 21U)})
93 #define LRF_EventRfedone ((LRF_Events){ .value = (1U << 22U)})
94 #define LRF_EventMdmsoft0 ((LRF_Events){ .value = (1U << 23U)})
95 #define LRF_EventMdmsoft1 ((LRF_Events){ .value = (1U << 24U)})
96 #define LRF_EventMdmsoft2 ((LRF_Events){ .value = (1U << 25U)})
97 #define LRF_EventMdmout ((LRF_Events){ .value = (1U << 26U)})
98 #define LRF_EventMdmin ((LRF_Events){ .value = (1U << 27U)})
99 #define LRF_EventMdmdone ((LRF_Events){ .value = (1U << 28U)})
100 #define LRF_EventSystim0 ((LRF_Events){ .value = (1U << 29U)})
101 #define LRF_EventSystim1 ((LRF_Events){ .value = (1U << 30U)})
102 #define LRF_EventSystim2 ((LRF_Events){ .value = (1U << 31U)})
105 union LRF_Events_u {
106  struct {
107  uint32_t opDone : 1;
108  uint32_t pingRsp : 1;
109  uint32_t rxCtrl : 1;
110  uint32_t rxCtrlAck : 1;
111  uint32_t rxNok : 1;
113  uint32_t rxIgnored : 1;
114  uint32_t rxEmpty : 1;
115  uint32_t rxBufFull : 1;
116  uint32_t rxOk : 1;
117  uint32_t txCtrl : 1;
118  uint32_t txCtrlAckAck : 1;
119  uint32_t txRetrans : 1;
120  uint32_t txAck : 1;
121  uint32_t txDone : 1;
122  uint32_t txCtrlAck : 1;
123  uint32_t opError : 1;
124  uint32_t rxfifo : 1;
125  uint32_t txfifo : 1;
126  uint32_t lossOfLock : 1;
127  uint32_t lock : 1;
128  uint32_t rfesoft0 : 1;
129  uint32_t rfesoft1 : 1;
130  uint32_t rfedone : 1;
131  uint32_t mdmsoft0 : 1;
132  uint32_t mdmsoft1 : 1;
133  uint32_t mdmsoft2 : 1;
134  uint32_t mdmout : 1;
135  uint32_t mdmin : 1;
136  uint32_t mdmdone : 1;
137  uint32_t systim0 : 1;
138  uint32_t systim1 : 1;
139  uint32_t systim2 : 1;
140  };
141  uint32_t value;
142 };
143 
144 typedef struct LRF_RegConfig_s {
145  uint32_t configLen;
146  uint32_t regConfig[];
147 } LRF_RegConfig;
148 
152 typedef union
153 {
154  struct {
155  uint8_t fraction : 1;
156  int8_t dBm : 7;
157  };
158  int8_t rawValue;
160 
165 typedef struct {
170 
172 #define LRF_TxPowerEntry_INVALID_VALUE \
173 ((LRF_TxPowerTable_Entry) {\
174  .power = LRF_TxPower_None,\
175  .tempCoeff = 0,\
176  .value = LRF_TxPowerTable_INVALID_VALUE,\
177 })
178 
184 typedef struct {
185  uint32_t numEntries;
188 
189 typedef struct LRF_TxShape_s {
190  struct {
191  uint32_t scale :17;
192  uint32_t numCoeff :15;
193  };
194  uint8_t coeff[];
195 } LRF_TxShape;
196 
197 #define LRF_TRIM_NUM_VARIANTS 2
198 #define LRF_TRIM_NORMAL_BW 0
199 #define LRF_TRIM_HIGH_BW 1 /* Revision >= 4 only */
200 
201 #define LRF_TRIM_MIN_VERSION_FULL_FEATURES 4 /* Only AppTrims revision 4 and above has all features */
202 
203 /* RCL-335: Some devices (State D) have an error in the programmed RSSI offset */
204 #define LRF_TRIM_VERSION_RSSIOFFSET_ISSUE 4 /* AppTrims revision with issue in rssiOffset field */
205 #define LRF_TRIM_LIMIT_RSSIOFFSET_ISSUE (-4) /* If rssiOffset is less or equal to this, apply correction */
206 #define LRF_TRIM_CORRECTION_RSSIOFFSET_ISSUE 5 /* Correction to apply to devices with wrong RSSI offset */
207 
208 /* Definitions for trim */
209 typedef struct {
210  uint32_t word[2];
212 
213 typedef union {
214  struct {
215  // Trim value for LRFDRFE:PA0.TRIM
216  struct { // length: 2B
217  uint16_t trim : 5;
218  uint16_t zero : 11;
219  } pa0;
220  // Trim value for LRFDRFE:ATSTREFH.IREFTRIM
221  struct { // length: 2B
222  uint16_t zero0 : 10;
223  uint16_t irefTrim : 5;
224  uint16_t zero1 : 1;
225  } atstRefH;
226  } fields;
227  struct {
228  uint16_t pa0;
229  uint16_t atstRefH;
230  };
231  uint32_t data;
232 } LRF_Trim0;
233 
234 typedef union {
235  struct {
236  // Trim value for LRFDRFE:LNA.TRIM
237  struct { // length: 2B
238  uint16_t zero0 : 4;
239  uint16_t trim : 4;
240  uint16_t zero1 : 8;
241  } lna;
242  // Trim value for LRFDRFE:IFAMPRFLDO.TRIM
243  struct { // length: 2B
244  uint16_t zero : 9;
245  uint16_t trim : 7;
246  } ifampRfLdo;
247  // Trim value for LRFDRFE:DIVLDO.VOUTTRIM
248  struct { // length: 2B
249  uint16_t zero0 : 8;
250  uint16_t voutTrim : 7;
251  uint16_t zero1 : 1;
252  } divLdo;
253  // Trim value for LRFDRFE:TDCLDO.VOUTTRIM
254  struct { // length: 2B
255  uint16_t zero0 : 8;
256  uint16_t voutTrim : 7;
257  uint16_t zero1 : 1;
258  } tdcLdo;
259  } fields;
260  struct {
261  uint16_t lna;
262  uint16_t ifampRfLdo;
263  uint16_t divLdo;
264  uint16_t tdcLdo;
265  };
267 } LRF_Trim1;
268 
269 typedef union {
270  struct {
271  // Trim values for LRFDRFE:DCOLDO0
272  struct { // length: 2B
273  uint16_t zero0 : 4;
274  uint16_t firstTrim : 4;
275  uint16_t secondTrim : 6;
276  uint16_t zero1 : 2;
277  } dcoLdo0;
278  // Trim value for LRFDRFE:IFADCALDO.TRIMOUT
279  struct { // length: 2B
280  uint16_t zero0 : 8;
281  uint16_t trimout : 6;
282  uint16_t zero1 : 2;
283  } ifadcAldo;
284  // Trim value for LRFDRFE:IFADCDLDO.TRIMOUT
285  struct { // length: 2B
286  uint16_t zero0 : 8;
287  uint16_t trimout : 6;
288  uint16_t zero1 : 2;
289  } ifadcDldo;
290  // Trim value for LRFDRFE:DCO.TAILRESTRIM
291  struct { // length: 2B
292  uint16_t zero0 : 3;
293  uint16_t tailresTrim : 4;
294  uint16_t zero1 : 9;
295  } dco;
296  } fields;
297  struct {
298  uint16_t dcoLdo0;
299  uint16_t ifadcAldo;
300  uint16_t ifadcDldo;
301  uint16_t dco;
302  };
304 } LRF_Trim2;
305 
306 typedef union {
307  struct {
308  // Trim value for LRFDRFE:IFADCQUANT.QUANTTHR
309  struct { // length: 2B
310  uint16_t quantThr : 3;
311  uint16_t zero : 13;
312  } ifadcQuant;
313  // Trim values for LRFDRFE:IFADC0
314  struct { // length: 2B
315  uint16_t zero0 : 2;
316  uint16_t aafcap : 2;
317  uint16_t int2Adj : 4;
318  uint16_t zero1 : 2;
319  uint16_t ditheren : 2; /* Revision >= 4 only */
320  uint16_t dithertrim : 3;
321  uint16_t zero2 : 1;
322  } ifadc0;
323  // Trim value for LRFDRFE:IFADC1.TRIM
324  struct { // length: 2B
325  uint16_t zero0 : 9;
326  uint16_t trim : 6;
327  uint16_t nrz : 1;
328  } ifadc1;
329  // Trim values for LRFDRFE:IFADCLF
330  struct { // length: 2B
331  uint16_t int3 : 4;
332  uint16_t ff1 : 4;
333  uint16_t ff2 : 4;
334  uint16_t ff3 : 4;
335  } ifadclf;
336  } fields;
337  struct {
338  uint16_t ifadcQuant;
339  uint16_t ifadc0;
340  uint16_t ifadc1;
341  uint16_t ifadclf;
342  };
345 
346 typedef struct
347 {
348  uint16_t rtrimMinOffset : 2;
349  uint16_t rtrimMaxOffset : 2;
350  uint16_t divLdoMinOffset: 2;
351  uint16_t divLdoMaxOffset: 2;
352  uint16_t tdcLdoMinOffset: 2;
353  uint16_t tdcLdoMaxOffset: 2;
354  uint16_t tThrl : 2;
355  uint16_t tThrh : 2;
357 
358 typedef struct {
359  int32_t rssiTcomp : 4;
360  int32_t magnTcomp : 4;
361  int32_t magnOffset : 4;
362  int32_t rfu : 4;
363  int32_t agcThrTcomp : 4;
364  int32_t agcThrOffset : 4;
365  int32_t lowGainOffset : 4;
366  int32_t highGainOffset : 4;
368 
369 typedef union {
370  struct {
371  struct { // length: 4B
372  LRF_Trim_tempLdoRtrim tempLdoRtrim;
373  uint8_t hfxtPdError;
374  uint8_t res;
375  } lrfdrfeExtTrim1; /* Revision >= 4 only */
376  // Trim values for synth divider 0
377  LRF_Trim_tempRssiAgc lrfdrfeExtTrim0;
378  } fields;
379  struct {
380  uint32_t lrfdrfeExtTrim1;
381  uint32_t lrfdrfeExtTrim0;
382  };
383  uint32_t data;
384 } LRF_Trim3;
385 
386 typedef union {
387  struct {
388  struct { // length: 2B
389  // RSSI measured for front end 0 in production test.
390  // Value is read by RF Core FW during RF Core initialization
391  uint16_t offset : 8;
392  uint16_t trimCompleteN : 1;
393  uint16_t zero : 7;
394  } fend0Rssi;
395  // Trim values for synth divider 0
396  struct { // length: 2B
397  // Trim value for IQ mismatch compensation.
398  // Value is read by RF Core FW during RF Core initialization
399  uint16_t iqmc : 16;
400  } syntDiv0;
401  uint16_t res1;
402  struct {
403  uint8_t zero : 4;
404  uint8_t aafcap : 4;
405  } ifamprfldo[LRF_TRIM_NUM_VARIANTS]; /* Revision >= 4 only */
406  } fields;
407  struct {
408  int8_t rssiOffset;
409  uint8_t trimCompleteN;
410  uint16_t demIQMC0;
411  uint16_t res1;
412  uint8_t ifamprfldo[LRF_TRIM_NUM_VARIANTS];
413  };
414  uint32_t data;
415 } LRF_Trim4;
416 
417 /* This definition is used instead of the definition from hw_fcfg.h to accommodate implementation
418  and cut parameters not relevant to LRF */
419 typedef struct {
420  uint8_t revision; /* Revision of appTrims */
422  uint8_t reserved[2];
429 } LRF_TrimDef;
430 
434 typedef struct LRF_SwConfig_s {
435  int32_t rxIntFrequency;
440  uint8_t bwIndex;
441  uint8_t bwIndexDither;
442 } LRF_SwConfig;
443 
447 typedef struct LRF_SwParam_s {
451 } LRF_SwParam;
452 
456 typedef struct LRF_Config_s {
457  const LRF_TOPsmImage *pbeImage;
458  const LRF_TOPsmImage *mceImage;
459  const LRF_TOPsmImage *rfeImage;
460  const LRF_RegConfigList *regConfigList;
461 } LRF_Config;
462 
463 #define LRF_BASE_ADDR 0x40080000U
464 #define PBE_RAM_BASE_ADDR 0x40090000U
465 #define BUF_RAM_BASE_ADDR 0x40092000U
466 #define MCE_RAM_BASE_ADDR 0x40094000U
467 #define RFE_RAM_BASE_ADDR 0x40096000U
468 #define S2R_RAM_BASE_ADDR 0x40098000U
469 #define TOPSM_RAM_SZ 0x00001000U /* 4 KB */
470 #define MAX_REG_CONFIG_LEN 1024U /* 1024 entries, using 4 KB */
471 
472 #define LRF_TXPOWER_REFERENCE_TEMPERATURE 25
473 #define LRF_TXPOWER_TEMPERATURE_SCALING 0x100
475 extern const LRF_TxShape LRF_shapeBaseGfsk05;
476 extern const LRF_TxShape LRF_shapeBaseGfsk067;
477 extern const LRF_TxShape LRF_shapeBaseGfsk20;
478 
479 static inline void LRF_sendHardStop(void)
480 {
481  /* Send stop to PBE */
482  /* This API is the same across PBE banks */
483  S_PBE_API = PBE_GENERIC_REGDEF_API_OP_STOP;
484 }
485 
486 static inline void LRF_sendGracefulStop(void)
487 {
488  /* Send stop to PBE */
489  /* This API is the same across PBE banks */
490  S_PBE_API = PBE_GENERIC_REGDEF_API_OP_EOPSTOP;
491 }
492 
493 static inline void LRF_hardStop(void)
494 {
495  /* LRF does not need to do anything special after hard stop is sent */
496 }
497 
498 static inline uint32_t LRF_getTxFifoWritable(void)
499 {
500  return S_PBE_TXFWRITABLE;
501 }
502 
507 
519 
520 #endif
LRF_Config::rfeImage
const LRF_TOPsmImage * rfeImage
Definition: LRFCC23X0.h:459
PBE_RAM_BASE_ADDR
#define PBE_RAM_BASE_ADDR
Definition: LRFCC23X0.h:464
RFE_SPARE1_AGC_VALUE
#define RFE_SPARE1_AGC_VALUE
Definition: LRFCC23X0.c:311
P_FACTOR
#define P_FACTOR
Definition: LRFCC23X0.c:948
LRF_clearClockEnable
void LRF_clearClockEnable(uint16_t mask, uint8_t entryNumber)
Definition: LRFCC23X0.c:1213
LRF_Trim1::data
LRF_DoubleWord data
Definition: LRFCC23X0.h:266
LRF_TrimDef::nToolsClientOffset
uint8_t nToolsClientOffset
Definition: LRFCC23X0.h:421
LRF_Trim1::fields
struct LRF_Trim1::@75 fields
LRF_enableSynthRefsys
uint32_t LRF_enableSynthRefsys(void)
Definition: LRFCC23X0.c:1173
LRF_applyTrim
static void LRF_applyTrim(const LRF_TrimDef *trimDef, const LRF_SwConfig *swConfig)
Definition: LRFCC23X0.c:191
LRF_SwParam
Software defined PHY parameter list.
Definition: LRFCC23X0.h:447
RCL_Scheduler.h
RFE_SPARE0_LOW_GAIN
#define RFE_SPARE0_LOW_GAIN
Definition: LRFCC23X0.c:305
LRF_applyNewClockEnable
static void LRF_applyNewClockEnable(void)
Definition: LRFCC23X0.c:1222
LRF_EXTTRIM1_TEMPERATURE_SCALE_EXP
#define LRF_EXTTRIM1_TEMPERATURE_SCALE_EXP
Definition: LRFCC23X0.c:276
LRF_TrimDef
Definition: LRFCC23X0.h:419
LRF_TxPowerTable_INVALID_VALUE
#define LRF_TxPowerTable_INVALID_VALUE
Definition: LRFCC23X0.h:60
LRF_Trim_tempRssiAgc::rssiTcomp
int32_t rssiTcomp
Definition: LRFCC23X0.h:359
LRF_RegConfig::configLen
uint32_t configLen
Definition: LRFCC23X0.h:145
RFE_RAM_BASE_ADDR
#define RFE_RAM_BASE_ADDR
Definition: LRFCC23X0.h:467
LRF_Trim_tempRssiAgc::agcThrOffset
int32_t agcThrOffset
Definition: LRFCC23X0.h:364
LRF_Trim0
Definition: LRFCC23X0.h:213
LRF_Trim1
Definition: LRFCC23X0.h:234
LRF_Trim2
Definition: LRFCC23X0.h:269
LRF_Trim3
Definition: LRFCC23X0.h:369
LRF_Trim4
Definition: LRFCC23X0.h:386
LRF_TRIM_MIN_VERSION_FULL_FEATURES
#define LRF_TRIM_MIN_VERSION_FULL_FEATURES
Definition: LRFCC23X0.h:201
LRF_TxPowerTable_findValue
LRF_TxPowerTable_Entry LRF_TxPowerTable_findValue(const LRF_TxPowerTable *table, LRF_TxPowerTable_Index powerLevel)
Search for settings corresponding to the highest tx power lower than specified value in the tx power ...
Definition: LRF.c:668
LRF_getTxFifoWritable
static uint32_t LRF_getTxFifoWritable(void)
Definition: LRFCC23X0.h:498
LRF_SwConfig::bwIndex
uint8_t bwIndex
Definition: LRFCC23X0.h:440
LRF_discardRxFifoWords
void LRF_discardRxFifoWords(uint32_t wordLength)
Definition: LRFCC23X0.c:703
LRF_programTemperatureCompensatedTxPower
void LRF_programTemperatureCompensatedTxPower(void)
Programs current TX power setting in radio with temperature compensation.
Definition: LRFCC23X0.c:1290
LRF_findCalM
static uint32_t LRF_findCalM(uint32_t frequency, uint32_t prediv)
Definition: LRFCC23X0.c:824
LRF_TDCLDO_LOW_TEMP_ADJ_FACTOR
#define LRF_TDCLDO_LOW_TEMP_ADJ_FACTOR
Definition: LRFCC23X0.c:282
lrfPhyState
static struct @61 lrfPhyState
LRF_Trim_tempLdoRtrim::rtrimMinOffset
uint16_t rtrimMinOffset
Definition: LRFCC23X0.h:348
LRF_ONE_THIRD_MANTISSA
#define LRF_ONE_THIRD_MANTISSA
Definition: LRFCC23X0.c:520
LRF_scaleFreqWithHFXTOffset
static uint32_t LRF_scaleFreqWithHFXTOffset(uint32_t frequency)
Definition: LRFCC23X0.c:1336
LRF_TxPowerTable_Index
Index of the tx power table.
Definition: LRFCC23X0.h:153
LRF_setTemperatureTrim
static void LRF_setTemperatureTrim(const LRF_TrimDef *trimDef)
Definition: LRFCC23X0.c:261
LRF_DIVLDO_HIGH_TEMP_ADJ_FACTOR
#define LRF_DIVLDO_HIGH_TEMP_ADJ_FACTOR
Definition: LRFCC23X0.c:280
LRF_rclDisableRadioClocks
void LRF_rclDisableRadioClocks(void)
Definition: LRFCC23X0.c:1248
LRF_Trim_tempLdoRtrim::rtrimMaxOffset
uint16_t rtrimMaxOffset
Definition: LRFCC23X0.h:349
LRF_shapeBaseGfsk067
const LRF_TxShape LRF_shapeBaseGfsk067
LRF_TxPowerTable::numEntries
uint32_t numEntries
Definition: LRFCC23X0.h:185
LRF_TRIM_CORRECTION_RSSIOFFSET_ISSUE
#define LRF_TRIM_CORRECTION_RSSIOFFSET_ISSUE
Definition: LRFCC23X0.h:206
LRF_SwParam::swConfig
const LRF_SwConfig * swConfig
Definition: LRFCC23X0.h:448
LRF_programCMixN
static void LRF_programCMixN(int32_t rxIntFrequency, uint32_t invSynthFreq)
Definition: LRFCC23X0.c:1044
LRF_Trim_tempRssiAgc::rfu
int32_t rfu
Definition: LRFCC23X0.h:362
LRF_TEMPERATURE_MAX
#define LRF_TEMPERATURE_MAX
Definition: LRFCC23X0.c:298
LRF_readRxFifoWords
void LRF_readRxFifoWords(uint32_t *data32, uint32_t wordLength)
Definition: LRFCC23X0.c:716
RFE_PA0_IB_MIN_USED
#define RFE_PA0_IB_MIN_USED
Definition: LRFCC23X0.c:1288
LRF_DIVLDO_LOW_TEMP_ADJ_FACTOR
#define LRF_DIVLDO_LOW_TEMP_ADJ_FACTOR
Definition: LRFCC23X0.c:278
LRF_setClockEnable
void LRF_setClockEnable(uint16_t mask, uint8_t entryNumber)
Definition: LRFCC23X0.c:1204
LRF_setTrimCommon
static void LRF_setTrimCommon(const LRF_TrimDef *trimDef, const LRF_SwConfig *swConfig)
Definition: LRFCC23X0.c:232
LRF_Trim0::data
uint32_t data
Definition: LRFCC23X0.h:231
LRF_REFSYS_ENABLE_TIME
#define LRF_REFSYS_ENABLE_TIME
Definition: LRFCC23X0.c:86
LRF_getTxFifoWrAddr
uint8_t * LRF_getTxFifoWrAddr(int32_t offset)
Definition: LRFCC23X0.c:681
LRF_peekRxFifo
uint32_t LRF_peekRxFifo(int32_t offset)
Definition: LRFCC23X0.c:657
LRF_TrimDef::trim0
LRF_Trim0 trim0
Definition: LRFCC23X0.h:423
LRF_Trim_tempRssiAgc::lowGainOffset
int32_t lowGainOffset
Definition: LRFCC23X0.h:365
LRF_Trim_Variant::data
LRF_DoubleWord data
Definition: LRFCC23X0.h:343
LRF.h
swParamListSz
const size_t swParamListSz
Definition: LRFCC23X0.c:73
LRF_SETTINGS_BUFFER_UNLIMITED
#define LRF_SETTINGS_BUFFER_UNLIMITED
Definition: LRF.h:77
LRF_TxPowerTable_Value::rawValue
uint16_t rawValue
Definition: LRFCC23X0.h:58
LRF_TxShape
Definition: LRFCC23X0.h:189
LRF_TxPowerTable_Entry::power
LRF_TxPowerTable_Index power
Definition: LRFCC23X0.h:166
LRF_getRawTxPower
LRF_TxPowerTable_Entry LRF_getRawTxPower(void)
Definition: LRFCC23X0.c:1273
LRF_SetupResult
LRF_SetupResult
Setup operation result.
Definition: LRF.h:95
fXtalInv
LRF_DoubleWord fXtalInv
Definition: LRFCC23X0.c:766
LRF_skipTxFifoWords
void LRF_skipTxFifoWords(uint32_t wordLength)
Definition: LRFCC23X0.c:692
LRF_sendGracefulStop
static void LRF_sendGracefulStop(void)
Definition: LRFCC23X0.h:486
LRF_TEMPERATURE_MIN
#define LRF_TEMPERATURE_MIN
Definition: LRFCC23X0.c:296
RCL_Scheduler_getCurrentTime
static uint32_t RCL_Scheduler_getCurrentTime(void)
Get current time.
Definition: RCL_Scheduler.h:233
LRF_RegConfig
Definition: LRFCC23X0.h:144
RCL_Command.h
LRF_ApplySettingsState
Definition: LRF.h:163
SetupResult_Ok
@ SetupResult_Ok
Definition: LRF.h:96
LRF_ONE_THIRD_NEG_EXP
#define LRF_ONE_THIRD_NEG_EXP
Definition: LRFCC23X0.c:521
LRF_TrimDef::trim4
LRF_Trim4 trim4
Definition: LRFCC23X0.h:428
LRF_waitForTopsmReady
void LRF_waitForTopsmReady(void)
Definition: LRFCC23X0.c:618
LRF_setupRadio
LRF_SetupResult LRF_setupRadio(const LRF_Config *lrfConfig, uint16_t phyFeatures, LRF_RadioState lrfState)
Definition: LRFCC23X0.c:88
LRF_programFrequency
void LRF_programFrequency(uint32_t frequency, bool tx)
Definition: LRFCC23X0.c:1084
LRF_SwConfig::txShape
const LRF_TxShape * txShape
Definition: LRFCC23X0.h:439
LRF_programPQ
static uint32_t LRF_programPQ(uint32_t pllM, uint32_t preDivRatio)
Definition: LRFCC23X0.c:957
FRAC_EXTRA_BITS
#define FRAC_EXTRA_BITS
Definition: LRFCC23X0.c:956
LRF_SwConfig::rxIntFrequency
int32_t rxIntFrequency
Definition: LRFCC23X0.h:435
LRF_TxPowerTable_TempCoeff
uint8_t LRF_TxPowerTable_TempCoeff
Definition: LRFCC23X0.h:62
LRF_SwConfig::rxFrequencyOffset
int32_t rxFrequencyOffset
Definition: LRFCC23X0.h:436
LRF_setRxFifoEffSz
void LRF_setRxFifoEffSz(uint32_t maxSz)
Definition: LRFCC23X0.c:731
LRF_Trim3::fields
struct LRF_Trim3::@96 fields
LRF_Trim2::fields
struct LRF_Trim2::@82 fields
LRF_Trim_tempLdoRtrim::tdcLdoMinOffset
uint16_t tdcLdoMinOffset
Definition: LRFCC23X0.h:352
LRF_Trim_tempRssiAgc::magnTcomp
int32_t magnTcomp
Definition: LRFCC23X0.h:360
LRF_SwParam::trimDef
const LRF_TrimDef * trimDef
Definition: LRFCC23X0.h:450
LRF_shapeBaseGfsk20
const LRF_TxShape LRF_shapeBaseGfsk20
LRF_Trim_tempLdoRtrim::tThrl
uint16_t tThrl
Definition: LRFCC23X0.h:354
LRF_Trim_tempLdoRtrim::tThrh
uint16_t tThrh
Definition: LRFCC23X0.h:355
NUM_TX_FILTER_TAPS
#define NUM_TX_FILTER_TAPS
Definition: LRFCC23X0.c:881
LRF_readRssi
int8_t LRF_readRssi(void)
Definition: LRFCC23X0.c:1261
LRF_rclEnableRadioClocks
void LRF_rclEnableRadioClocks(void)
Definition: LRFCC23X0.c:1235
LRF_imagesNeedUpdate
bool LRF_imagesNeedUpdate(const LRF_Config *lrfConfig)
Definition: LRFCC23X0.c:184
LRF_findExtTrim1TrimAdjustment
static uint32_t LRF_findExtTrim1TrimAdjustment(uint32_t temperatureDiff, uint32_t tempThreshFactor, uint32_t maxAdjustment)
Definition: LRFCC23X0.c:529
LRF_Trim2::data
LRF_DoubleWord data
Definition: LRFCC23X0.h:303
RFE_SPARE0_HIGH_GAIN_BM
#define RFE_SPARE0_HIGH_GAIN_BM
Definition: LRFCC23X0.c:306
LRF_TXPOWER_REFERENCE_TEMPERATURE
#define LRF_TXPOWER_REFERENCE_TEMPERATURE
Definition: LRFCC23X0.h:472
RFE_SPARE0_LOW_GAIN_BM
#define RFE_SPARE0_LOW_GAIN_BM
Definition: LRFCC23X0.c:304
LRF_programTxPower
LRF_TxPowerResult LRF_programTxPower(LRF_TxPowerTable_Index powerLevel)
Finds settings corresponding to the highest tx power lower than the specified value in the tx power t...
Definition: LRFCC23X0.c:1317
LRF_RTRIM_HIGH_TEMP_ADJ_FACTOR
#define LRF_RTRIM_HIGH_TEMP_ADJ_FACTOR
Definition: LRFCC23X0.c:288
FXTALINVL
#define FXTALINVL
Definition: LRFCC23X0.c:762
P_SHIFT
#define P_SHIFT
Definition: LRFCC23X0.c:950
LRF_sendHardStop
static void LRF_sendHardStop(void)
Definition: LRFCC23X0.h:479
hal_get_hfxt_ratio_default
uint32_t hal_get_hfxt_ratio_default(void)
Definition: hal_octopus.c:316
RCL_Types.h
LRF_findLog2Bde1
static uint32_t LRF_findLog2Bde1(uint32_t demmisc3)
Definition: LRFCC23X0.c:930
LRF_TxPowerEntry_INVALID_VALUE
#define LRF_TxPowerEntry_INVALID_VALUE
Definition: LRFCC23X0.h:172
LRF_ConfigWord
Definition: LRF.h:112
LRF_TxPower_None
#define LRF_TxPower_None
Definition: LRF.h:71
LRF_TRIM_LIMIT_RSSIOFFSET_ISSUE
#define LRF_TRIM_LIMIT_RSSIOFFSET_ISSUE
Definition: LRFCC23X0.h:205
LRF_TxPower_Use_Raw
#define LRF_TxPower_Use_Raw
Definition: LRF.h:65
BUF_RAM_BASE_ADDR
#define BUF_RAM_BASE_ADDR
Definition: LRFCC23X0.h:465
LRF_Events_u::value
uint32_t value
Definition: LRFCC23X0.h:141
LRF_disable
void LRF_disable(void)
Definition: LRFCC23X0.c:594
LRF_RSSI_INVALID
#define LRF_RSSI_INVALID
Definition: LRF.h:83
LRF_TRIM_VERSION_RSSIOFFSET_ISSUE
#define LRF_TRIM_VERSION_RSSIOFFSET_ISSUE
Definition: LRFCC23X0.h:204
LRF_temperatureCompensateTrim
static void LRF_temperatureCompensateTrim(const LRF_TrimDef *trimDef)
Definition: LRFCC23X0.c:313
LRF_TRIM_NUM_VARIANTS
#define LRF_TRIM_NUM_VARIANTS
Definition: LRFCC23X0.h:197
LRF_TxPowerTable_Entry::tempCoeff
LRF_TxPowerTable_TempCoeff tempCoeff
Definition: LRFCC23X0.h:167
RadioState_ImagesLoaded
@ RadioState_ImagesLoaded
Definition: LRF.h:88
LRF_enable
void LRF_enable(void)
Definition: LRFCC23X0.c:572
LRF_writeTxFifoWords
void LRF_writeTxFifoWords(const uint32_t *data32, uint32_t wordLength)
Definition: LRFCC23X0.c:723
LRF_RadioState
LRF_RadioState
Definition: LRF.h:86
RFE_SPARE0_HIGH_GAIN
#define RFE_SPARE0_HIGH_GAIN
Definition: LRFCC23X0.c:307
LRF_Trim_tempRssiAgc
Definition: LRFCC23X0.h:358
LRF_findPllM
static uint32_t LRF_findPllM(uint32_t frequency, uint32_t prediv)
Definition: LRFCC23X0.c:771
MCE_RAM_BASE_ADDR
#define MCE_RAM_BASE_ADDR
Definition: LRFCC23X0.h:466
LRF_TxPowerResult
LRF_TxPowerResult
Definition: LRFCC23X0.h:64
LRF_Trim_tempLdoRtrim::divLdoMinOffset
uint16_t divLdoMinOffset
Definition: LRFCC23X0.h:350
LRF_TxPowerTable
Tx power table, containing all characterized dBm to register settings mappings.
Definition: LRFCC23X0.h:184
LRF_Trim4::data
uint32_t data
Definition: LRFCC23X0.h:414
hal_get_hfxt_ratio
uint32_t hal_get_hfxt_ratio(void)
Definition: hal_octopus.c:310
LRF_prepareRxFifo
uint32_t LRF_prepareRxFifo(void)
Definition: LRFCC23X0.c:627
LRF_Config::pbeImage
const LRF_TOPsmImage * pbeImage
Definition: LRFCC23X0.h:457
LRF_hardStop
static void LRF_hardStop(void)
Definition: LRFCC23X0.h:493
LRF_TXPOWER_TEMPERATURE_SCALING
#define LRF_TXPOWER_TEMPERATURE_SCALING
Definition: LRFCC23X0.h:473
LRF_findFoff
static uint32_t LRF_findFoff(int32_t frequencyOffset, uint32_t invSynthFreq)
Definition: LRFCC23X0.c:845
LRF_SwConfig
Software defined PHY parameters.
Definition: LRFCC23X0.h:434
LRF_RTRIM_MAX
#define LRF_RTRIM_MAX
Definition: LRFCC23X0.c:290
LRF_ApplySettingsBase
LRF_ApplySettingsBase
Definition: LRF.h:158
LRF_Trim_tempLdoRtrim::tdcLdoMaxOffset
uint16_t tdcLdoMaxOffset
Definition: LRFCC23X0.h:353
RFE_SPARE1_AGC_VALUE_BM
#define RFE_SPARE1_AGC_VALUE_BM
Definition: LRFCC23X0.c:310
LRF_Trim_tempRssiAgc::highGainOffset
int32_t highGainOffset
Definition: LRFCC23X0.h:366
LRF_SwConfig::modFrequencyDeviation
uint32_t modFrequencyDeviation
Definition: LRFCC23X0.h:438
LRF_ApplySettings_IncludeBase
@ LRF_ApplySettings_IncludeBase
Definition: LRF.h:160
LRF_TrimDef::trimVariant
LRF_Trim_Variant trimVariant[LRF_TRIM_NUM_VARIANTS]
Definition: LRFCC23X0.h:426
swParamList
uint32_t swParamList[sizeof(LRF_SwParam)/sizeof(uint32_t)]
Definition: LRFCC23X0.c:72
LRF_initSettingsState
void LRF_initSettingsState(LRF_ApplySettingsState *state, LRF_ApplySettingsBase includeBase, uint16_t phyFeatures)
Definition: LRF.c:109
LRF_Trim_tempLdoRtrim
Definition: LRFCC23X0.h:347
LRF_findExtTrim0TrimAdjustment
static int32_t LRF_findExtTrim0TrimAdjustment(int32_t temperature, int32_t tempCompFactor, int32_t offset)
Definition: LRFCC23X0.c:567
hal_get_temperature
int16_t hal_get_temperature(void)
LRF_TDCLDO_HIGH_TEMP_ADJ_FACTOR
#define LRF_TDCLDO_HIGH_TEMP_ADJ_FACTOR
Definition: LRFCC23X0.c:284
Q_MAGN_SHIFT
#define Q_MAGN_SHIFT
Definition: LRFCC23X0.c:952
LRF_TxPowerTable_Value
Type for tx power configuration.
Definition: LRFCC23X0.h:50
LRF_CLK_ENA_RCL
#define LRF_CLK_ENA_RCL
Definition: LRF.h:186
LRF_TrimDef::trim2
LRF_Trim2 trim2
Definition: LRFCC23X0.h:425
LRF_Config::mceImage
const LRF_TOPsmImage * mceImage
Definition: LRFCC23X0.h:458
LRF_Trim3::data
uint32_t data
Definition: LRFCC23X0.h:383
LRF_Trim_tempRssiAgc::magnOffset
int32_t magnOffset
Definition: LRFCC23X0.h:361
LRF_TxShape::coeff
uint8_t coeff[]
Definition: LRFCC23X0.h:194
countLeadingZeros
static uint32_t countLeadingZeros(uint16_t value)
Definition: LRFCC23X0.c:794
LRF_Config::regConfigList
const LRF_RegConfigList * regConfigList
Definition: LRFCC23X0.h:460
TxPowerResult_Error
@ TxPowerResult_Error
Definition: LRFCC23X0.h:66
LRF_SwConfig::bwIndexDither
uint8_t bwIndexDither
Definition: LRFCC23X0.h:441
LRF_prepareTxFifo
uint32_t LRF_prepareTxFifo(void)
Definition: LRFCC23X0.c:643
LRF_Trim_Variant
Definition: LRFCC23X0.h:306
LRF_programShape
static void LRF_programShape(const LRF_TxShape *txShape, uint32_t deviation, uint32_t invSynthFreq)
Definition: LRFCC23X0.c:884
LRF_DoubleWord::word
uint32_t word[2]
Definition: LRFCC23X0.h:210
LRF_ApplySettings_NoBase
@ LRF_ApplySettings_NoBase
Definition: LRF.h:159
RadioState_Configured
@ RadioState_Configured
Definition: LRF.h:89
LRF_programTxPower
LRF_TxPowerResult LRF_programTxPower(LRF_TxPowerTable_Index powerLevel)
Finds settings corresponding to the highest tx power lower than the specified value in the tx power t...
Definition: LRFCC23X0.c:1317
LRF_SwParam::txPowerTable
const LRF_TxPowerTable * txPowerTable
Definition: LRFCC23X0.h:449
LRF_disableSynthRefsys
void LRF_disableSynthRefsys(void)
Definition: LRFCC23X0.c:1198
LRF_TxPowerTable_Index::rawValue
int8_t rawValue
Definition: LRFCC23X0.h:158
LRF_TrimDef::trim3
LRF_Trim3 trim3
Definition: LRFCC23X0.h:427
LRF_setRawTxPower
void LRF_setRawTxPower(uint32_t value, uint32_t temperatureCoefficient)
Definition: LRFCC23X0.c:1266
SetupResult_ErrorSwConfig
@ SetupResult_ErrorSwConfig
Definition: LRF.h:104
LRF_updateTrim
static void LRF_updateTrim(const LRF_TrimDef *trimDef, const LRF_SwConfig *swConfig)
Definition: LRFCC23X0.c:216
LRF_NUM_CLK_ENA
#define LRF_NUM_CLK_ENA
Definition: LRF.h:184
LRF_TxPowerTable_Entry::value
LRF_TxPowerTable_Value value
Definition: LRFCC23X0.h:168
LRF_programTemperatureCompensatedTxPower
void LRF_programTemperatureCompensatedTxPower(void)
Programs current TX power setting in radio with temperature compensation.
Definition: LRFCC23X0.c:1290
LRF_RTRIM_LOW_TEMP_ADJ_FACTOR
#define LRF_RTRIM_LOW_TEMP_ADJ_FACTOR
Definition: LRFCC23X0.c:286
hal_set_clkctl
void hal_set_clkctl(uint32_t clkctl)
Definition: hal_octopus.c:272
LRF_TrimDef::trim1
LRF_Trim1 trim1
Definition: LRFCC23X0.h:424
LRF_TEMPERATURE_NOM
#define LRF_TEMPERATURE_NOM
Definition: LRFCC23X0.c:300
FXTALINVH
#define FXTALINVH
Definition: LRFCC23X0.c:763
LRF_SwConfig::txFrequencyOffset
int32_t txFrequencyOffset
Definition: LRFCC23X0.h:437
LRF_peekTxFifo
uint32_t LRF_peekTxFifo(int32_t offset)
Definition: LRFCC23X0.c:670
LRF_EXTTRIM0_TEMPERATURE_SCALE_EXP
#define LRF_EXTTRIM0_TEMPERATURE_SCALE_EXP
Definition: LRFCC23X0.c:293
LRF_Trim_tempLdoRtrim::divLdoMaxOffset
uint16_t divLdoMaxOffset
Definition: LRFCC23X0.h:351
LRF_Config
Radio configuration structure.
Definition: LRFCC23X0.h:456
LRF_TrimDef::revision
uint8_t revision
Definition: LRFCC23X0.h:420
LRF_TxPowerTable_Entry
Single entry of the tx power table. Maps power in dBm to specific register settings.
Definition: LRFCC23X0.h:165
LRF_Trim_tempRssiAgc::agcThrTcomp
int32_t agcThrTcomp
Definition: LRFCC23X0.h:363
LRF_applySettings
LRF_SetupResult LRF_applySettings(LRF_ConfigWord *config, LRF_ApplySettingsState *state, int32_t bufferAvailWords)
Definition: LRF.c:118
LRF_DoubleWord
Definition: LRFCC23X0.h:209
TxPowerResult_Ok
@ TxPowerResult_Ok
Definition: LRFCC23X0.h:65
LRF_loadImage
LRF_SetupResult LRF_loadImage(const LRF_TOPsmImage *image, uint32_t destinationAddress)
Definition: LRF.c:46