Appiko
S2LP_Radio.h
Go to the documentation of this file.
1 
61 /* Define to prevent recursive inclusion -------------------------------------*/
62 #ifndef __S2LP_RADIO_H
63 #define __S2LP_RADIO_H
64 
65 
66 /* Includes ------------------------------------------------------------------*/
67 #include "S2LP_Regs.h"
68 #include "S2LP_Types.h"
69 
70 
71 #ifdef __cplusplus
72 extern "C" {
73 #endif
74 
75 
97 typedef enum {
98  MOD_NO_MOD = 0x70,
99  MOD_2FSK = 0x00,
100  MOD_4FSK = 0x10,
101  MOD_2GFSK_BT05 = 0xA0,
102  MOD_2GFSK_BT1 = 0x20,
103  MOD_4GFSK_BT05 = 0xB0,
104  MOD_4GFSK_BT1 = 0x30,
105  MOD_ASK_OOK = 0x50,
106  MOD_POLAR = 0x60,
108 
109 
113 typedef struct {
114  uint32_t lFrequencyBase;
120  uint32_t lDatarate;
123  uint32_t lFreqDev;
126  uint32_t lBandwidth;
129 } SRadioInit;
130 
131 
135 typedef enum {
136  AFC_MODE_LOOP_CLOSED_ON_SLICER = 0, /* loop closed on slicer */
137  AFC_MODE_LOOP_CLOSED_ON_2ND_CONV_STAGE /* loop closed on 2nd conversion stage */
138 } SAfcMode;
139 
140 
144 typedef struct {
148  uint8_t cAfcFastPeriod;
149  uint8_t cAfcFastGain;
150  uint8_t cAfcSlowGain;
151 } SAfcInit;
152 
153 
157 typedef enum {
158  ISI_EQUALIZATION_DISABLED = 0, /* static mode */
159  ISI_EQUALIZATION_SINGLE_PASS, /* dynamic mode 6 dB above threshold*/
160  ISI_EQUALIZATION_DUAL_PASS /* dynamic mode 18 dB above threshold */
161 } SIsiEqu;
162 
163 
167 typedef enum {
168  CLKREC_DLL_MODE = 0, /* DLL mode */
169  CLKREC_PLL_MODE, /* PLL mode */
170 } SClkRecMode;
171 
172 
176 typedef struct {
184 
185 
196 uint8_t S2LPRadioInit(SRadioInit* pxSRadioInitStruct);
197 void S2LPRadioGetInfo(SRadioInit* pxSRadioInitStruct);
198 void S2LPRadioSetSynthWord(uint32_t lSynthWord);
199 uint32_t S2LPRadioGetSynthWord(void);
200 void S2LPRadioSetChannel(uint8_t cChannel);
201 uint8_t S2LPRadioGetChannel(void);
202 void S2LPRadioSetRefDiv(SFunctionalState xNewState);
204 void S2LPRadioSetDigDiv(SFunctionalState xNewState);
206 void S2LPRadioSetChannelSpace(uint32_t lChannelSpace);
207 uint32_t S2LPRadioGetChannelSpace(void);
208 uint8_t S2LPRadioSetFrequencyBase(uint32_t lFBase);
209 uint32_t S2LPRadioGetFrequencyBase(void);
210 void S2LPRadioSetDatarate(uint32_t lDatarate);
211 uint32_t S2LPRadioGetDatarate(void);
212 void S2LPRadioSetFrequencyDev(uint32_t lFDev);
213 uint32_t S2LPRadioGetFrequencyDev(void);
214 void S2LPRadioSetChannelBW(uint32_t lBandwidth);
215 uint32_t S2LPRadioGetChannelBW(void);
216 void S2LPRadioSetModulation(ModulationSelect xModulation);
218 void S2LPRadioSetXtalFrequency(uint32_t lXtalFrequency);
219 uint32_t S2LPRadioGetXtalFrequency(void);
222 void S2LPRadioCalibrationVco(SFunctionalState xAmplitudeCalibration, SFunctionalState xFrequencyCalibration);
223 void S2LPRadioSetTxCalibVcoAmpWord(uint8_t value);
224 void S2LPRadioSetRxCalibVcoAmpWord(uint8_t value);
225 void S2LPRadioSetTxCalibVcoFreqWord(uint8_t value);
226 void S2LPRadioSetRxCalibVcoFreqWord(uint8_t value);
227 
229 void S2LPRadioSetPALeveldBm(uint8_t cIndex, int32_t wPowerdBm);
230 int32_t S2LPRadioGetPALeveldBm(uint8_t cIndex);
231 uint8_t S2LPRadioGetPALevelMaxIndex(void);
232 void S2LPRadioSetPALevelMaxIndex(uint8_t cIndex);
235 
236 void S2LPRadioAfcInit(SAfcInit* xSAfcInit);
237 void S2LPRadioGetAfcInfo(SAfcInit* xSAfcInit);
238 void S2LPRadioSymClkRecoverInit(SSymClkRecInit* xSSymClkRecInit);
239 void S2LPRadioGetSymClkRecoverInfo(SSymClkRecInit* xSSymClkRecInit);
240 
241 
257 #ifdef __cplusplus
258 }
259 #endif
260 
261 #endif
262 
263 /******************* (C) COPYRIGHT 2016 STMicroelectronics *****END OF FILE****/
void S2LPRadioGetAfcInfo(SAfcInit *xSAfcInit)
Return the AFC struct that corresponds to the AFC block parameters set on the chip.
Definition: S2LP_Radio.c:1462
void S2LPRadioSetChannelBW(uint32_t lBandwidth)
Set the channel filter bandwidth.
Definition: S2LP_Radio.c:1083
void S2LPRadioSetRefDiv(SFunctionalState xNewState)
Set the reference divider value.
Definition: S2LP_Radio.c:795
uint32_t lFreqDev
Definition: S2LP_Radio.h:123
uint32_t lFrequencyBase
Definition: S2LP_Radio.h:114
uint32_t lBandwidth
Definition: S2LP_Radio.h:126
uint32_t S2LPRadioGetFrequencyDev(void)
Return the frequency deviation.
Definition: S2LP_Radio.c:1055
uint8_t S2LPRadioInit(SRadioInit *pxSRadioInitStruct)
Initializes the S2LP analog and digital radio part according to the specified parameters in the pxSRa...
Definition: S2LP_Radio.c:559
ModulationSelect xModulationSelect
Definition: S2LP_Radio.h:119
void S2LPRadioSetChannelSpace(uint32_t lChannelSpace)
Set the channel space factor in channel space register. The channel spacing step is computed as F_Xo/...
Definition: S2LP_Radio.c:877
void S2LPRadioSetDatarate(uint32_t lDatarate)
Set the datarate.
Definition: S2LP_Radio.c:978
SFunctionalState
S2LP Functional state. Used to enable or disable a specific option.
Definition: S2LP_Types.h:67
uint32_t S2LPRadioGetXtalFrequency(void)
Return the XTAL frequency.
Definition: S2LP_Radio.c:1173
uint8_t S2LPRadioGetChannel(void)
Returns the actual channel number.
Definition: S2LP_Radio.c:782
void S2LPRadioCalibrationVco(SFunctionalState xAmplitudeCalibration, SFunctionalState xFrequencyCalibration)
Enable the calibration of the VCO frequency and amplitude.
Definition: S2LP_Radio.c:1344
void S2LPRadioAfcInit(SAfcInit *xSAfcInit)
Initialize the AFC block according to the passed parameters.
Definition: S2LP_Radio.c:1414
SFunctionalState xAfcEnable
Definition: S2LP_Radio.h:145
ModulationSelect S2LPRadioGetModulation(void)
Return the modulation type used.
Definition: S2LP_Radio.c:1146
SFunctionalState S2LPRadioGetRefDiv(void)
To know if the reference deivider is enabled or disabled.
Definition: S2LP_Radio.c:817
uint8_t cClkRecIGainFast
Definition: S2LP_Radio.h:181
SClkRecMode xSClkRecMode
Definition: S2LP_Radio.h:177
uint32_t S2LPRadioGetChannelBW(void)
Return the channel filter bandwidth.
Definition: S2LP_Radio.c:1109
SIsiEqu
S2LP ISI Equalization type enumeration.
Definition: S2LP_Radio.h:157
uint8_t cAfcFastPeriod
Definition: S2LP_Radio.h:148
SIsiEqu S2LPRadioGetIsiEqualizationMode(void)
Returnthe ISI equalization.
Definition: S2LP_Radio.c:1501
int32_t S2LPRadioGetPALeveldBm(uint8_t cIndex)
Returns a specific PA_LEVEL register, returning a value in dBm.
Definition: S2LP_Radio.c:1238
uint32_t lDatarate
Definition: S2LP_Radio.h:120
uint8_t cClkRecPGainSlow
Definition: S2LP_Radio.h:178
uint8_t S2LPRadioGetPALevelMaxIndex(void)
Returns the actual PA_LEVEL_MAX_INDEX.
Definition: S2LP_Radio.c:1273
S2LP Radio Init structure definition.
Definition: S2LP_Radio.h:113
SAfcMode xAfcMode
Definition: S2LP_Radio.h:147
void S2LPRadioSetTxCalibVcoAmpWord(uint8_t value)
Set calibration word of the aplitude in TX.
Definition: S2LP_Radio.c:1371
S2LP AFC Init structure definition.
Definition: S2LP_Radio.h:144
void S2LPRadioSetTxCalibVcoFreqWord(uint8_t value)
Set calibration word of the frequency in TX.
Definition: S2LP_Radio.c:1393
ModulationSelect
S2LP Modulation enumeration.
Definition: S2LP_Radio.h:97
SClkRecMode
S2LP Clock Recovery mode enumeration.
Definition: S2LP_Radio.h:167
This file contains all the registers address and masks.
SFunctionalState cClkRec16SymPostFlt
Definition: S2LP_Radio.h:182
void S2LPRadioSetPALeveldBm(uint8_t cIndex, int32_t wPowerdBm)
Sets a specific PA_LEVEL register, with a value given in dBm.
Definition: S2LP_Radio.c:1209
void S2LPRadioSetRxCalibVcoFreqWord(uint8_t value)
Set calibration word of the frequency in RX.
Definition: S2LP_Radio.c:1403
uint8_t S2LPRadioSetFrequencyBase(uint32_t lFBase)
Set the Synth word and the Band Select register according to desired base carrier frequency....
Definition: S2LP_Radio.c:906
void S2LPRadioSetRxCalibVcoAmpWord(uint8_t value)
Set calibration word of the aplitude in RX.
Definition: S2LP_Radio.c:1382
uint32_t S2LPRadioGetChannelSpace(void)
Return the channel space register.
Definition: S2LP_Radio.c:891
void S2LPRadioSetChannel(uint8_t cChannel)
Sets the channel number.
Definition: S2LP_Radio.c:771
void S2LPRadioSetIsiEqualizationMode(SIsiEqu xSIsiMode)
Set the ISI equalizer.
Definition: S2LP_Radio.c:1484
void S2LPRadioSetPALevelMaxIndex(uint8_t cIndex)
Sets a specific PA_LEVEL_MAX_INDEX.
Definition: S2LP_Radio.c:1256
void S2LPRadioSetFrequencyDev(uint32_t lFDev)
Set the frequency deviation.
Definition: S2LP_Radio.c:1032
void S2LPRadioSetXtalFrequency(uint32_t lXtalFrequency)
Set the XTAL frequency.
Definition: S2LP_Radio.c:1162
SAfcMode
S2LP AFC mode enumeration.
Definition: S2LP_Radio.h:135
void S2LPRadioGetSymClkRecoverInfo(SSymClkRecInit *xSSymClkRecInit)
Return the clock recovery configuration.
Definition: S2LP_Radio.c:1549
uint8_t cAfcSlowGain
Definition: S2LP_Radio.h:150
uint8_t cClkRecPGainFast
Definition: S2LP_Radio.h:179
uint32_t S2LPRadioGetFrequencyBase(void)
Return the base carrier frequency.
Definition: S2LP_Radio.c:946
uint32_t S2LPRadioGetDatarate(void)
Return the datarate.
Definition: S2LP_Radio.c:1013
void S2LPRadioSetModulation(ModulationSelect xModulation)
Set the modulation type.
Definition: S2LP_Radio.c:1129
void S2LPRadioSetMaxPALevel(SFunctionalState xNewState)
Set the MAX_DBM bit. This will allow to transmit at the maximum power.
Definition: S2LP_Radio.c:1184
void S2LPRadioSetDigDiv(SFunctionalState xNewState)
Set the digital divider .
Definition: S2LP_Radio.c:836
uint8_t cClkRecIGainSlow
Definition: S2LP_Radio.h:180
void S2LPRadioSetAutoRampingMode(SFunctionalState xNewState)
Set the autoramping mode. If enabled:
Definition: S2LP_Radio.c:1292
S2LP Clock Recovery Init structure definition.
Definition: S2LP_Radio.h:176
void S2LPRadioSetManualRampingMode(SFunctionalState xNewState)
Set the manual ramping mode.
Definition: S2LP_Radio.c:1320
Header file for S2-LP types.
uint32_t S2LPRadioGetSynthWord(void)
Returns the synth word.
Definition: S2LP_Radio.c:758
SFunctionalState S2LPRadioGetDigDiv(void)
Get the digital divider .
Definition: S2LP_Radio.c:857
void S2LPRadioSymClkRecoverInit(SSymClkRecInit *xSSymClkRecInit)
Clock recovery configuration.
Definition: S2LP_Radio.c:1516
SFunctionalState xAfcFreezeOnSync
Definition: S2LP_Radio.h:146
uint8_t cAfcFastGain
Definition: S2LP_Radio.h:149
void S2LPRadioGetInfo(SRadioInit *pxSRadioInitStruct)
Returns the S2LP analog and digital radio structure according to the registers value.
Definition: S2LP_Radio.c:675
void S2LPRadioSetSynthWord(uint32_t lSynthWord)
Sets the SYNTH registers.
Definition: S2LP_Radio.c:735