Appiko
S2LP_Gpio.h
Go to the documentation of this file.
1 
48 /* Define to prevent recursive inclusion -------------------------------------*/
49 #ifndef __S2LP_GPIO_H
50 #define __S2LP_GPIO_H
51 
52 
53 /* Includes ------------------------------------------------------------------*/
54 #include "S2LP_Regs.h"
55 #include "S2LP_Types.h"
56 
57 
58 #ifdef __cplusplus
59 extern "C" {
60 #endif
61 
62 
83 typedef enum {
88 } S2LPGpioPin;
89 
90 
94 typedef enum {
98 } S2LPGpioMode;
99 
100 
101 
105 typedef enum {
132  S2LP_GPIO_DIG_OUT_TX_DATA_OOK_SIGNAL = 0xD0,
133  S2LP_GPIO_DIG_OUT_WAIT_FOR_READY2_SIG = 0xD8,
134  S2LP_GPIO_DIG_OUT_WAIT_FOR_TIMER_FOR_PM_SET = 0xE0,
135  S2LP_GPIO_DIG_OUT_WAIT_VCO_CALIBRATION = 0xE8,
136  S2LP_GPIO_DIG_OUT_ENABLE_SYNTH_FULL_CIRCUIT = 0xF0,
137 
138  S2LP_GPIO_DIG_IN_TX_COMMAND = 0x00,
139  S2LP_GPIO_DIG_IN_RX_COMMAND = 0x08,
140  S2LP_GPIO_DIG_IN_TX_DATA_INPUT_FOR_DIRECTRF = 0x10,
141  S2LP_GPIO_DIG_IN_DATA_WAKEUP = 0x18,
142  S2LP_GPIO_DIG_IN_EXT_CLOCK_AT_34_7KHZ = 0x20
143 } S2LPGpioIO;
144 
145 
149 typedef enum {
150  LOW = 0,
151  HIGH = !LOW
152 } OutputLevel;
153 
154 
158 typedef struct {
162 } SGpioInit;
163 
164 
168 typedef enum {
169  XO_RATIO_1 = 0x00,
170  XO_RATIO_1_2 = 0x02,
171  XO_RATIO_1_4 = 0x04,
172  XO_RATIO_1_8 = 0x06,
173  XO_RATIO_1_16 = 0x08,
174  XO_RATIO_1_32 = 0x0A,
175  XO_RATIO_1_64 = 0x0C,
176  XO_RATIO_1_128 = 0x0E,
179 
180 
185 typedef enum {
186  RCO_RATIO_1 = 0x00,
189 
190 
194 typedef enum {
200 
201 
205 typedef struct {
210 
211 
222 typedef struct {
257 } S2LPIrqs;
258 
259 
264 typedef enum {
265  RX_DATA_READY = 0x00000001,
266  RX_DATA_DISC = 0x00000002,
267  TX_DATA_SENT = 0x00000004,
268  MAX_RE_TX_REACH = 0x00000008,
269  CRC_ERROR = 0x00000010,
270  TX_FIFO_ERROR = 0x00000020,
271  RX_FIFO_ERROR = 0x00000040,
272  TX_FIFO_ALMOST_FULL = 0x00000080,
273  TX_FIFO_ALMOST_EMPTY = 0x00000100,
274  RX_FIFO_ALMOST_FULL = 0x00000200,
275  RX_FIFO_ALMOST_EMPTY = 0x00000400,
276  MAX_BO_CCA_REACH = 0x00000800,
277  VALID_PREAMBLE = 0x00001000,
278  VALID_SYNC = 0x00002000,
279  RSSI_ABOVE_TH = 0x00004000,
280  WKUP_TOUT_LDC = 0x00008000,
281  READY = 0x00010000,
282  STANDBY_DELAYED = 0x00020000,
283  LOW_BATT_LVL = 0x00040000,
284  POR = 0x00080000,
285  BOR = 0x00100000,
286  LOCK = 0x00200000,
287  VCO_CALIBRATION_END = 0x00400000,
288  PA_CALIBRATION_END = 0x00800000,
289  PM_COUNT_EXPIRED = 0x01000000,
290  XO_COUNT_EXPIRED = 0x02000000,
291  TX_START_TIME = 0x04000000,
292  RX_START_TIME = 0x08000000,
293  RX_TIMEOUT = 0x10000000,
294  RX_SNIFF_TIMEOUT = 0x20000000,
295  ALL_IRQ = 0x7FFFFFFF
296 } IrqList;
297 
298 
309 void S2LPGpioInit(SGpioInit* pxGpioInitStruct);
310 void S2LPGpioSetLevel(S2LPGpioPin xGpioX, OutputLevel xLevel);
312 void S2LPGpioClockOutput(SFunctionalState xNewState);
313 void S2LPGpioClockOutputInit(ClockOutputInit* pxClockOutputInitStruct);
314 void S2LPGpioSetXOPrescaler(ClockOutputXOPrescaler xXOPrescaler);
315 ClockOutputXOPrescaler S2LPGpioGetXOPrescaler(void);
316 void S2LPGpioSetRCOPrescaler(ClockOutputRCOPrescaler xRCOPrescaler);
317 ClockOutputRCOPrescaler S2LPGpioGetRCOPrescaler(void);
318 void S2LPGpioSetExtraClockCycles(ExtraClockCycles xExtraCycles);
319 ExtraClockCycles S2LPGpioGetExtraClockCycles(void);
320 
321 void S2LPGpioIrqDeInit(S2LPIrqs* pxIrqInit);
322 void S2LPGpioIrqInit(S2LPIrqs* pxIrqInit);
323 void S2LPGpioIrqConfig(IrqList xIrq, SFunctionalState xNewState);
324 void S2LPGpioIrqGetMask(S2LPIrqs* pxIrqMask);
325 void S2LPGpioIrqGetStatus(S2LPIrqs* pxIrqStatus);
326 void S2LPGpioIrqClearStatus(void);
328 
344 #ifdef __cplusplus
345 }
346 #endif
347 
348 #endif
349 
350 /******************* (C) COPYRIGHT 2016 STMicroelectronics *****END OF FILE****/
Definition: S2LP_Gpio.h:285
#define GPIO3_CONF_ADDR
GPIO3_CONF register.
Definition: S2LP_Regs.h:78
Definition: S2LP_Gpio.h:284
SBool
boolean type enumeration.
Definition: S2LP_Types.h:85
SFlagStatus IRQ_POR
Definition: S2LP_Gpio.h:244
void S2LPGpioIrqDeInit(S2LPIrqs *pxIrqInit)
Deinit the S2LPIrqs structure setting all the bitfield to 0. Moreover, it sets the IRQ mask registers...
Definition: S2LP_Gpio.c:253
SFlagStatus IRQ_TX_DATA_SENT
Definition: S2LP_Gpio.h:225
SFlagStatus IRQ_MAX_RE_TX_REACH
Definition: S2LP_Gpio.h:226
void S2LPGpioInit(SGpioInit *pxGpioInitStruct)
Initialize the S2LP GPIOx according to the specified parameters in the pxGpioInitStruct.
Definition: S2LP_Gpio.c:168
S2LPGpioPin
S2LP GPIO pin enumeration.
Definition: S2LP_Gpio.h:83
S2LPGpioIO xS2LPGpioIO
Definition: S2LP_Gpio.h:161
SFlagStatus IRQ_RX_DATA_DISC
Definition: S2LP_Gpio.h:224
ClockOutputXOPrescaler
S2LP clock output XO prescaler enumeration.
Definition: S2LP_Gpio.h:168
SFlagStatus IRQ_XO_COUNT_EXPIRED
Definition: S2LP_Gpio.h:251
SFlagStatus IRQ_PM_COUNT_EXPIRED
Definition: S2LP_Gpio.h:250
ExtraClockCycles
S2LP ExtraClockCycles enumeration.
Definition: S2LP_Gpio.h:194
SFlagStatus IRQ_TX_FIFO_ALMOST_EMPTY
Definition: S2LP_Gpio.h:232
SFlagStatus IRQ_RX_FIFO_ALMOST_EMPTY
Definition: S2LP_Gpio.h:234
ClockOutputRCOPrescaler xClockOutputRCOPrescaler
Definition: S2LP_Gpio.h:207
SFlagStatus IRQ_TX_FIFO_ERROR
Definition: S2LP_Gpio.h:228
SFunctionalState
S2LP Functional state. Used to enable or disable a specific option.
Definition: S2LP_Types.h:67
ExtraClockCycles xExtraClockCycles
Definition: S2LP_Gpio.h:208
SFlagStatus IRQ_TX_FIFO_ALMOST_FULL
Definition: S2LP_Gpio.h:230
ClockOutputRCOPrescaler
S2LP Clock Output RCO prescaler enumeration.
Definition: S2LP_Gpio.h:185
void S2LPGpioSetLevel(S2LPGpioPin xGpioX, OutputLevel xLevel)
Force S2LP GPIO_x configured as digital output, to VDD or GND.
Definition: S2LP_Gpio.c:195
SFlagStatus IRQ_RX_FIFO_ALMOST_FULL
Definition: S2LP_Gpio.h:233
SFlagStatus IRQ_STANDBY_DELAYED
Definition: S2LP_Gpio.h:242
void S2LPGpioIrqConfig(IrqList xIrq, SFunctionalState xNewState)
Enable or disables a specific IRQ.
Definition: S2LP_Gpio.c:303
void S2LPGpioIrqClearStatus(void)
Clear the IRQ status registers.
Definition: S2LP_Gpio.c:403
ClockOutputXOPrescaler xClockOutputXOPrescaler
Definition: S2LP_Gpio.h:206
SFlagStatus
S2LP Flag status. Used to control the state of a flag.
Definition: S2LP_Types.h:76
SFlagStatus IRQ_TX_START_TIME
Definition: S2LP_Gpio.h:252
SFlagStatus IRQ_VALID_SYNC
Definition: S2LP_Gpio.h:237
SBool S2LPGpioIrqCheckFlag(IrqList xFlag)
Verifie if a specific IRQ has been generated. The call resets all the IRQ status, so it can't be used...
Definition: S2LP_Gpio.c:418
SFlagStatus IRQ_VALID_PREAMBLE
Definition: S2LP_Gpio.h:236
SFlagStatus IRQ_RX_START_TIME
Definition: S2LP_Gpio.h:253
#define GPIO0_CONF_ADDR
GPIO0_CONF register.
Definition: S2LP_Regs.h:30
OutputLevel S2LPGpioGetLevel(S2LPGpioPin xGpioX)
Return output value (VDD or GND) of S2LP GPIO_x, when it is configured as digital output.
Definition: S2LP_Gpio.c:226
SFlagStatus IRQ_RX_DATA_READY
Definition: S2LP_Gpio.h:223
SFlagStatus IRQ_MAX_BO_CCA_REACH
Definition: S2LP_Gpio.h:235
SFlagStatus IRQ_WKUP_TOUT_LDC
Definition: S2LP_Gpio.h:239
SFlagStatus IRQ_RX_TIMEOUT
Definition: S2LP_Gpio.h:254
IRQ bitfield structure for S2LP. This structure is used to read or write the single IRQ bit....
Definition: S2LP_Gpio.h:222
OutputLevel
S2LP OutputLevel enumeration.
Definition: S2LP_Gpio.h:149
S2LPGpioMode
S2LP GPIO mode enumeration.
Definition: S2LP_Gpio.h:94
IrqList
IRQ list enumeration for S2LP. This enumeration type can be used to address a specific IRQ.
Definition: S2LP_Gpio.h:264
This file contains all the registers address and masks.
SFlagStatus IRQ_RX_FIFO_ERROR
Definition: S2LP_Gpio.h:229
void S2LPGpioIrqGetMask(S2LPIrqs *pxIrqMask)
Fill a pointer to a structure of S2LPIrqs type reading the IRQ_MASK registers.
Definition: S2LP_Gpio.c:352
void S2LPGpioIrqInit(S2LPIrqs *pxIrqInit)
Enable the IRQs according to the user defined pxIrqInit structure.
Definition: S2LP_Gpio.c:280
SFlagStatus IRQ_PA_CALIBRATION_END
Definition: S2LP_Gpio.h:248
SFlagStatus IRQ_RX_SNIFF_TIMEOUT
Definition: S2LP_Gpio.h:255
SFlagStatus IRQ_LOCK
Definition: S2LP_Gpio.h:246
SFlagStatus IRQ_RSSI_ABOVE_TH
Definition: S2LP_Gpio.h:238
S2LPGpioIO
S2LP I/O selection enumeration.
Definition: S2LP_Gpio.h:105
#define GPIO2_CONF_ADDR
GPIO2_CONF register.
Definition: S2LP_Regs.h:62
SFlagStatus IRQ_BOR
Definition: S2LP_Gpio.h:245
S2LP Clock Output initialization structure definition.
Definition: S2LP_Gpio.h:205
S2LPGpioMode xS2LPGpioMode
Definition: S2LP_Gpio.h:160
S2LPGpioPin xS2LPGpioPin
Definition: S2LP_Gpio.h:159
SFlagStatus IRQ_READY
Definition: S2LP_Gpio.h:241
#define GPIO1_CONF_ADDR
GPIO1_CONF register.
Definition: S2LP_Regs.h:46
Header file for S2-LP types.
S2LP GPIO Init structure definition.
Definition: S2LP_Gpio.h:158
SFlagStatus IRQ_CRC_ERROR
Definition: S2LP_Gpio.h:227
SFlagStatus IRQ_VCO_CALIBRATION_END
Definition: S2LP_Gpio.h:247
void S2LPGpioIrqGetStatus(S2LPIrqs *pxIrqStatus)
Fill a pointer to a structure of S2LPIrqs type reading the IRQ_STATUS registers.
Definition: S2LP_Gpio.c:383
SFlagStatus IRQ_LOW_BATT_LVL
Definition: S2LP_Gpio.h:243