Go to the documentation of this file.
46 #define EX_LPS25H_VERSION "1.1.2"
51 #define EX_LPS25H_MAJOR 1
56 #define EX_LPS25H_MINOR 1
61 #define EX_LPS25H_PATCH 2
72 #define LPS25H_BARO_NUMBER_OF_AXES 1U
74 #define LPS25H_BARO_SENS 0.00024414f
75 #define LPS25H_BARO_BIAS 0.0f
85 #define LPS25H_THERMO_NUMBER_OF_AXES 1U
87 #define LPS25H_THERMO_SENS 0.00208333f
88 #define LPS25H_THERMO_BIAS -42.5f
95 #define LPS25H_DI_MASK 0xFF
96 #define LPS25H_DI(n) (1 << n)
97 #define LPS25H_AD_MASK 0x3F
98 #define LPS25H_AD(n) (1 << n)
99 #define LPS25H_MS (1 << 6)
100 #define LPS25H_RW (1 << 7)
102 #define LPS25H_SUB_MS (1 << 7)
109 #define LPS25H_AD_REF_P_XL 0x08
110 #define LPS25H_AD_REF_P_L 0x09
111 #define LPS25H_AD_REF_P_H 0x0A
112 #define LPS25H_AD_WHO_AM_I 0x0F
113 #define LPS25H_AD_RES_CONF 0x10
114 #define LPS25H_AD_CTRL_REG1 0x20
115 #define LPS25H_AD_CTRL_REG2 0x21
116 #define LPS25H_AD_CTRL_REG3 0x22
117 #define LPS25H_AD_CTRL_REG4 0x23
118 #define LPS25H_AD_INT_CFG 0x24
119 #define LPS25H_AD_INT_SRC 0x25
120 #define LPS25H_AD_STATUS_REG 0x27
121 #define LPS25H_AD_PRESS_OUT_XL 0x28
122 #define LPS25H_AD_PRESS_OUT_L 0x29
123 #define LPS25H_AD_PRESS_OUT_H 0x2A
124 #define LPS25H_AD_TEMP_OUT_L 0x2B
125 #define LPS25H_AD_TEMP_OUT_H 0x2C
126 #define LPS25H_AD_FIFO_CTRL 0x2E
127 #define LPS25H_AD_FIFO_SRC 0x2F
128 #define LPS25H_AD_THS_P_L 0x30
129 #define LPS25H_AD_THS_P_H 0x31
130 #define LPS25H_AD_RPDS_L 0x39
131 #define LPS25H_AD_RPDS_H 0x3A
138 #define LPS25H_CTRL_REG1_MASK 0xFF
139 #define LPS25H_CTRL_REG1_SIM (1 << 0)
140 #define LPS25H_CTRL_REG1_RESET_AZ (1 << 1)
141 #define LPS25H_CTRL_REG1_BDU (1 << 2)
142 #define LPS25H_CTRL_REG1_DIFF_EN (1 << 3)
143 #define LPS25H_CTRL_REG1_ODR0 (1 << 4)
144 #define LPS25H_CTRL_REG1_ODR1 (1 << 5)
145 #define LPS25H_CTRL_REG1_ODR2 (1 << 6)
146 #define LPS25H_CTRL_REG1_PD (1 << 7)
153 #define LPS25H_CTRL_REG2_MASK 0xF3
154 #define LPS25H_CTRL_REG2_ONE_SHOT (1 << 0)
155 #define LPS25H_CTRL_REG2_AUTO_ZERO (1 << 1)
156 #define LPS25H_CTRL_REG2_SWRESET (1 << 2)
157 #define LPS25H_CTRL_REG2_FIFO_MEAN_DEC (1 << 4)
158 #define LPS25H_CTRL_REG2_WTM_EN (1 << 5)
159 #define LPS25H_CTRL_REG2_FIFO_EN (1 << 6)
160 #define LPS25H_CTRL_REG2_BOOT (1 << 7)
167 #define LPS25H_CTRL_REG3_MASK 0xC3
168 #define LPS25H_CTRL_REG3_INT_S1 (1 << 0)
169 #define LPS25H_CTRL_REG3_INT_S2 (1 << 1)
170 #define LPS25H_CTRL_REG3_PP_OD (1 << 6)
171 #define LPS25H_CTRL_REG3_INT_H_L (1 << 7)
178 #define LPS25H_CTRL_REG4_MASK 0x0F
179 #define LPS25H_CTRL_REG4_P1_DRDY (1 << 0)
180 #define LPS25H_CTRL_REG4_P1_OVERRUN (1 << 1)
181 #define LPS25H_CTRL_REG4_P1_WTM (1 << 2)
182 #define LPS25H_CTRL_REG4_P1_EMPTY (1 << 3)
189 #define LPS25H_INT1_CFG_MASK 0x07
190 #define LPS25H_INT1_CFG_PH_E (1 << 0)
191 #define LPS25H_INT1_CFG_PL_E (1 << 1)
192 #define LPS25H_INT1_CFG_LIR (1 << 2)
199 #define LPS25H_INT1_SRC_MASK 0x07
200 #define LPS25H_INT1_SRC_PH (1 << 0)
201 #define LPS25H_INT1_SRC_PL (1 << 1)
202 #define LPS25H_INT1_SRC_IA (1 << 2)
218 #if !defined(LPS25H_USE_SPI) || defined(__DOXYGEN__)
219 #define LPS25H_USE_SPI FALSE
228 #if !defined(LPS25H_SHARED_SPI) || defined(__DOXYGEN__)
229 #define LPS25H_SHARED_SPI FALSE
237 #if !defined(LPS25H_USE_I2C) || defined(__DOXYGEN__)
238 #define LPS25H_USE_I2C TRUE
247 #if !defined(LPS25H_SHARED_I2C) || defined(__DOXYGEN__)
248 #define LPS25H_SHARED_I2C FALSE
256 #if !defined(LPS25H_USE_ADVANCED) || defined(__DOXYGEN__)
257 #define LPS25H_USE_ADVANCED FALSE
265 #if !(LPS25H_USE_SPI ^ LPS25H_USE_I2C)
266 #error "LPS25H_USE_SPI and LPS25H_USE_I2C cannot be both true or both false"
269 #if LPS25H_USE_SPI && !HAL_USE_SPI
270 #error "LPS25H_USE_SPI requires HAL_USE_SPI"
273 #if LPS25H_SHARED_SPI && !SPI_USE_MUTUAL_EXCLUSION
274 #error "LPS25H_SHARED_SPI requires SPI_USE_MUTUAL_EXCLUSION"
277 #if LPS25H_USE_I2C && !HAL_USE_I2C
278 #error "LPS25H_USE_I2C requires HAL_USE_I2C"
281 #if LPS25H_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION
282 #error "LPS25H_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION"
289 #error "LPS25H over SPI still not supported"
366 #if LPS25H_USE_SPI || defined(__DOXYGEN__)
376 #if LPS25H_USE_I2C || defined(__DOXYGEN__)
410 #if LPS25H_USE_ADVANCED || defined(__DOXYGEN__)
430 #define _lps25h_methods_alone
435 #define _lps25h_methods \
436 _base_object_methods \
437 _lps25h_methods_alone
451 #define _lps25h_data \
453 lps25h_state_t state; \
455 const LPS25HConfig *config; \
459 float barosensitivity; \
465 float thermosensitivity; \
496 #define lps25hBarometerGetAxesNumber(devp) \
497 barometerGetAxesNumber(&((devp)->baro_if))
517 #define lps25hBarometerReadRaw(devp, axes) \
518 barometerReadRaw(&((devp)->baro_if), axes)
539 #define lps25hBarometerReadCooked(devp, axes) \
540 barometerReadCooked(&((devp)->baro_if), axes)
556 #define lps25hBarometerSetBias(devp, bp) \
557 barometerSetBias(&((devp)->baro_if), bp)
571 #define lps25hBarometerResetBias(devp) \
572 barometerResetBias(&((devp)->baro_if))
588 #define lps25hBarometerSetSensitivity(devp, sp) \
589 barometerSetSensitivity(&((devp)->baro_if), sp)
602 #define lps25hBarometerResetSensitivity(devp) \
603 barometerResetSensitivity(&((devp)->baro_if))
614 #define lps25hThermometerGetAxesNumber(devp) \
615 thermometerGetAxesNumber(&((devp)->thermo_if))
635 #define lps25hThermometerReadRaw(devp, axes) \
636 thermometerReadRaw(&((devp)->thermo_if), axes)
657 #define lps25hThermometerReadCooked(devp, axes) \
658 thermometerReadCooked(&((devp)->thermo_if), axes)
674 #define lps25hThermometerSetBias(devp, bp) \
675 thermometerSetBias(&((devp)->thermo_if), bp)
689 #define lps25hThermometerResetBias(devp) \
690 thermometerResetBias(&((devp)->thermo_if))
706 #define lps25hThermometerSetSensitivity(devp, sp) \
707 thermometerSetSensitivity(&((devp)->thermo_if), sp)
720 #define lps25hThermometerResetSensitivity(devp) \
721 thermometerResetSensitivity(&((devp)->thermo_if))
const SPIConfig * spicfg
SPI configuration associated to this LPS25H.
Structure representing an I2C driver.
const struct LPS25HVMT * vmt
Virtual Methods Table.
lps25h_avgt_t thermoresolution
LPS25H thermometer subsystem resolution.
const I2CConfig * i2ccfg
I2C configuration associated to this LPS25H.
Generic barometer interface header.
Driver configuration structure.
void lps25hStop(LPS25HDriver *devp)
Deactivates the LPS25H Complex Driver peripheral.
Structure representing an SPI driver.
LPS25H configuration structure.
lps25h_avgp_t
LPS25H pressure resolution.
BaseBarometer baro_if
Base barometer interface.
lps25h_avgp_t baroresolution
LPS25H barometer subsystem resolution.
float * barosensitivity
LPS25H barometer subsystem initial sensitivity.
LPS25H virtual methods table.
SPIDriver * spip
SPI driver associated to this LPS25H.
#define _lps25h_data
LPS25HDriver specific data.
lps25h_odr_t
LPS25H output data rate and bandwidth.
I2CDriver * i2cp
I2C driver associated to this LPS25H.
lps25h_bdu_t blockdataupdate
LPS25H block data update.
BaseThermometer thermo_if
Base thermometer interface.
lps25h_bdu_t
LPS25H block data update.
lps25h_sad_t slaveaddress
LPS25H slave address.
lps25h_odr_t outputdatarate
LPS25H output data rate selection.
Generic thermometer interface header.
float * thermobias
LPS25H thermometer subsystem initial bias.
float * thermosensitivity
LPS25H thermometer subsystem initial sensitivity.
lps25h_sad_t
LPS25H slave address.
void lps25hStart(LPS25HDriver *devp, const LPS25HConfig *config)
Configures and activates LPS25H Complex Driver peripheral.
lps25h_state_t
Driver state machine possible states.
lps25h_avgt_t
LPS25H temperature resolution.
float * barobias
LPS25H barometer subsystem initial bias.
#define _lps25h_methods
LPS25H specific methods with inherited ones.
Type of I2C driver configuration structure.
LPS25H 2-axis barometer/thermometer class.
void lps25hObjectInit(LPS25HDriver *devp)
Initializes an instance.