Go to the documentation of this file.
46 #define EX_LPS22HB_VERSION "1.0.2"
51 #define EX_LPS22HB_MAJOR 1
56 #define EX_LPS22HB_MINOR 0
61 #define EX_LPS22HB_PATCH 2
72 #define LPS22HB_BARO_NUMBER_OF_AXES 1U
74 #define LPS22HB_BARO_SENS 0.00024414f
75 #define LPS22HB_BARO_BIAS 0.0f
85 #define LPS22HB_THERMO_NUMBER_OF_AXES 1U
87 #define LPS22HB_THERMO_SENS 0.01f
88 #define LPS22HB_THERMO_BIAS 0.0f
95 #define LPS22HB_DI_MASK 0xFF
96 #define LPS22HB_DI(n) (1 << n)
97 #define LPS22HB_AD_MASK 0x3F
98 #define LPS22HB_AD(n) (1 << n)
99 #define LPS22HB_MS (1 << 6)
100 #define LPS22HB_RW (1 << 7)
102 #define LPS22HB_SUB_MS (1 << 7)
109 #define LPS22HB_AD_INT_CFG 0x0B
110 #define LPS22HB_AD_THS_P_L 0x0C
111 #define LPS22HB_AD_THS_P_H 0x0D
112 #define LPS22HB_AD_WHO_AM_I 0x0F
113 #define LPS22HB_AD_CTRL_REG1 0x10
114 #define LPS22HB_AD_CTRL_REG2 0x11
115 #define LPS22HB_AD_CTRL_REG3 0x12
116 #define LPS22HB_AD_FIFO_CTRL 0x14
117 #define LPS22HB_AD_REF_P_XL 0x15
118 #define LPS22HB_AD_REF_P_L 0x16
119 #define LPS22HB_AD_REF_P_H 0x17
120 #define LPS22HB_AD_RPDS_L 0x18
121 #define LPS22HB_AD_RPDS_H 0x19
122 #define LPS22HB_AD_RES_CONF 0x1A
123 #define LPS22HB_AD_INT_SRC 0x25
124 #define LPS22HB_AD_FIFO_SRC 0x26
125 #define LPS22HB_AD_STATUS_REG 0x27
126 #define LPS22HB_AD_PRESS_OUT_XL 0x28
127 #define LPS22HB_AD_PRESS_OUT_L 0x29
128 #define LPS22HB_AD_PRESS_OUT_H 0x2A
129 #define LPS22HB_AD_TEMP_OUT_L 0x2B
130 #define LPS22HB_AD_TEMP_OUT_H 0x2C
131 #define LPS22HB_AD_LPFP_RES 0x33
138 #define LPS22HB_INT_CFG_MASK 0xFF
139 #define LPS22HB_INT_CFG_PHE (1 << 0)
140 #define LPS22HB_INT_CFG_PLE (1 << 1)
141 #define LPS22HB_INT_CFG_LIR (1 << 2)
142 #define LPS22HB_INT_CFG_DIFF_EN (1 << 3)
143 #define LPS22HB_INT_CFG_RESET_AZ (1 << 4)
144 #define LPS22HB_INT_CFG_AUTOZERO (1 << 5)
145 #define LPS22HB_INT_CFG_RESET_ARP (1 << 6)
146 #define LPS22HB_INT_CFG_AUTORIFP (1 << 7)
153 #define LPS22HB_CTRL_REG1_MASK 0x7F
154 #define LPS22HB_CTRL_REG1_SIM (1 << 0)
155 #define LPS22HB_CTRL_REG1_BDU (1 << 1)
156 #define LPS22HB_CTRL_REG1_LPFP_CFG (1 << 2)
157 #define LPS22HB_CTRL_REG1_LPFP_EN (1 << 3)
158 #define LPS22HB_CTRL_REG1_ODR0 (1 << 4)
159 #define LPS22HB_CTRL_REG1_ODR1 (1 << 5)
160 #define LPS22HB_CTRL_REG1_ODR2 (1 << 6)
167 #define LPS22HB_CTRL_REG2_MASK 0xFD
168 #define LPS22HB_CTRL_REG2_ONE_SHOT (1 << 0)
169 #define LPS22HB_CTRL_REG2_SWRESET (1 << 2)
170 #define LPS22HB_CTRL_REG2_I2C_DIS (1 << 3)
171 #define LPS22HB_CTRL_REG2_IF_ADD_INC (1 << 4)
172 #define LPS22HB_CTRL_REG2_STOP_ON_FTH (1 << 5)
173 #define LPS22HB_CTRL_REG2_FIFO_EN (1 << 6)
174 #define LPS22HB_CTRL_REG2_BOOT (1 << 7)
181 #define LPS22HB_CTRL_REG3_MASK 0xFF
182 #define LPS22HB_CTRL_REG3_INT_S1 (1 << 0)
183 #define LPS22HB_CTRL_REG3_INT_S2 (1 << 1)
184 #define LPS22HB_CTRL_REG3_DRDY (1 << 2)
185 #define LPS22HB_CTRL_REG3_F_OVR (1 << 3)
186 #define LPS22HB_CTRL_REG3_F_FTH (1 << 4)
187 #define LPS22HB_CTRL_REG3_F_FSS5 (1 << 5)
188 #define LPS22HB_CTRL_REG3_PP_OD (1 << 6)
189 #define LPS22HB_CTRL_REG3_INT_H_L (1 << 7)
196 #define LPS22HB_INT_SRC_MASK 0x87
197 #define LPS22HB_INT_SRC_PH (1 << 0)
198 #define LPS22HB_INT_SRC_PL (1 << 1)
199 #define LPS22HB_INT_SRC_IA (1 << 2)
200 #define LPS22HB_INT_SRC_BOOT_STATUS (1 << 8)
216 #if !defined(LPS22HB_USE_SPI) || defined(__DOXYGEN__)
217 #define LPS22HB_USE_SPI FALSE
226 #if !defined(LPS22HB_SHARED_SPI) || defined(__DOXYGEN__)
227 #define LPS22HB_SHARED_SPI FALSE
235 #if !defined(LPS22HB_USE_I2C) || defined(__DOXYGEN__)
236 #define LPS22HB_USE_I2C TRUE
245 #if !defined(LPS22HB_SHARED_I2C) || defined(__DOXYGEN__)
246 #define LPS22HB_SHARED_I2C FALSE
254 #if !defined(LPS22HB_USE_ADVANCED) || defined(__DOXYGEN__)
255 #define LPS22HB_USE_ADVANCED FALSE
263 #if !(LPS22HB_USE_SPI ^ LPS22HB_USE_I2C)
264 #error "LPS22HB_USE_SPI and LPS22HB_USE_I2C cannot be both true or both false"
267 #if LPS22HB_USE_SPI && !HAL_USE_SPI
268 #error "LPS22HB_USE_SPI requires HAL_USE_SPI"
271 #if LPS22HB_SHARED_SPI && !SPI_USE_MUTUAL_EXCLUSION
272 #error "LPS22HB_SHARED_SPI requires SPI_USE_MUTUAL_EXCLUSION"
275 #if LPS22HB_USE_I2C && !HAL_USE_I2C
276 #error "LPS22HB_USE_I2C requires HAL_USE_I2C"
279 #if LPS22HB_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION
280 #error "LPS22HB_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION"
287 #error "LPS22HB over SPI still not supported"
354 #if LPS22HB_USE_SPI || defined(__DOXYGEN__)
364 #if LPS22HB_USE_I2C || defined(__DOXYGEN__)
398 #if LPS22HB_USE_ADVANCED || defined(__DOXYGEN__)
414 #define _lps22hb_methods_alone
419 #define _lps22hb_methods \
420 _base_object_methods \
421 _lps22hb_methods_alone
435 #define _lps22hb_data \
437 lps22hb_state_t state; \
439 const LPS22HBConfig *config; \
443 float barosensitivity; \
449 float thermosensitivity; \
480 #define lps22hbBarometerGetAxesNumber(devp) \
481 barometerGetAxesNumber(&((devp)->baro_if))
501 #define lps22hbBarometerReadRaw(devp, axes) \
502 barometerReadRaw(&((devp)->baro_if), axes)
523 #define lps22hbBarometerReadCooked(devp, axes) \
524 barometerReadCooked(&((devp)->baro_if), axes)
540 #define lps22hbBarometerSetBias(devp, bp) \
541 barometerSetBias(&((devp)->baro_if), bp)
555 #define lps22hbBarometerResetBias(devp) \
556 barometerResetBias(&((devp)->baro_if))
572 #define lps22hbBarometerSetSensitivity(devp, sp) \
573 barometerSetSensitivity(&((devp)->baro_if), sp)
586 #define lps22hbBarometerResetSensitivity(devp) \
587 barometerResetSensitivity(&((devp)->baro_if))
598 #define lps22hbThermometerGetAxesNumber(devp) \
599 thermometerGetAxesNumber(&((devp)->thermo_if))
619 #define lps22hbThermometerReadRaw(devp, axes) \
620 thermometerReadRaw(&((devp)->thermo_if), axes)
641 #define lps22hbThermometerReadCooked(devp, axes) \
642 thermometerReadCooked(&((devp)->thermo_if), axes)
658 #define lps22hbThermometerSetBias(devp, bp) \
659 thermometerSetBias(&((devp)->thermo_if), bp)
673 #define lps22hbThermometerResetBias(devp) \
674 thermometerResetBias(&((devp)->thermo_if))
690 #define lps22hbThermometerSetSensitivity(devp, sp) \
691 thermometerSetSensitivity(&((devp)->thermo_if), sp)
704 #define lps22hbThermometerResetSensitivity(devp) \
705 thermometerResetSensitivity(&((devp)->thermo_if))
LPS22HB virtual methods table.
Structure representing an I2C driver.
lps22hb_state_t
Driver state machine possible states.
lps22hb_sad_t
LPS22HB slave address.
Generic barometer interface header.
lps22hb_odr_t
LPS22HB output data rate and bandwidth.
const SPIConfig * spicfg
SPI configuration associated to this LPS22HB.
lps22hb_bdu_t blockdataupdate
LPS22HB block data update.
Driver configuration structure.
lps22hb_bdu_t
LPS22HB block data update.
lps22hb_odr_t outputdatarate
LPS22HB output data rate selection.
Structure representing an SPI driver.
SPIDriver * spip
SPI driver associated to this LPS22HB.
LPS22HB 2-axis barometer/thermometer class.
void lps22hbObjectInit(LPS22HBDriver *devp)
Initializes an instance.
const I2CConfig * i2ccfg
I2C configuration associated to this LPS22HB.
lps22hb_sad_t slaveaddress
LPS22HB slave address.
lps22hb_lp_t
LPS22HB pressure resolution.
I2CDriver * i2cp
I2C driver associated to this LPS22HB.
const struct LPS22HBVMT * vmt
Virtual Methods Table.
BaseBarometer baro_if
Base barometer interface.
void lps22hbStart(LPS22HBDriver *devp, const LPS22HBConfig *config)
Configures and activates LPS22HB Complex Driver peripheral.
float * thermobias
LPS22HB thermometer subsystem initial bias.
lps22hb_lp_t lowpass_filter
LPS22HB barometer subsystem resolution.
void lps22hbStop(LPS22HBDriver *devp)
Deactivates the LPS22HB Complex Driver peripheral.
#define _lps22hb_data
LPS22HBDriver specific data.
BaseThermometer thermo_if
Base thermometer interface.
Generic thermometer interface header.
float * barobias
LPS22HB barometer subsystem initial bias.
#define _lps22hb_methods
LPS22HB specific methods with inherited ones.
LPS22HB configuration structure.
float * thermosensitivity
LPS22HB thermometer subsystem initial sensitivity.
float * barosensitivity
LPS22HB barometer subsystem initial sensitivity.
Type of I2C driver configuration structure.