46 #define EX_LPS25H_VERSION "1.1.1" 51 #define EX_LPS25H_MAJOR 1 56 #define EX_LPS25H_MINOR 1 61 #define EX_LPS25H_PATCH 1 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 257 #if !defined(LPS25H_USE_ADVANCED) || defined(__DOXYGEN__) 258 #define LPS25H_USE_ADVANCED FALSE 266 #if !(LPS25H_USE_SPI ^ LPS25H_USE_I2C) 267 #error "LPS25H_USE_SPI and LPS25H_USE_I2C cannot be both true or both false" 270 #if LPS25H_USE_SPI && !HAL_USE_SPI 271 #error "LPS25H_USE_SPI requires HAL_USE_SPI" 274 #if LPS25H_SHARED_SPI && !SPI_USE_MUTUAL_EXCLUSION 275 #error "LPS25H_SHARED_SPI requires SPI_USE_MUTUAL_EXCLUSION" 278 #if LPS25H_USE_I2C && !HAL_USE_I2C 279 #error "LPS25H_USE_I2C requires HAL_USE_I2C" 282 #if LPS25H_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION 283 #error "LPS25H_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION" 290 #error "LPS25H over SPI still not supported" 367 #if LPS25H_USE_SPI || defined(__DOXYGEN__) 377 #if LPS25H_USE_I2C || defined(__DOXYGEN__) 411 #if LPS25H_USE_ADVANCED || defined(__DOXYGEN__) 431 #define _lps25h_methods_alone 436 #define _lps25h_methods \ 437 _base_object_methods \ 438 _lps25h_methods_alone 452 #define _lps25h_data \ 454 lps25h_state_t state; \ 456 const LPS25HConfig *config; \ 460 float barosensitivity; \ 466 float thermosensitivity; \ 497 #define lps25hBarometerGetAxesNumber(devp) \ 498 barometerGetAxesNumber(&((devp)->baro_if)) 518 #define lps25hBarometerReadRaw(devp, axes) \ 519 barometerReadRaw(&((devp)->baro_if), axes) 540 #define lps25hBarometerReadCooked(devp, axes) \ 541 barometerReadCooked(&((devp)->baro_if), axes) 557 #define lps25hBarometerSetBias(devp, bp) \ 558 barometerSetBias(&((devp)->baro_if), bp) 572 #define lps25hBarometerResetBias(devp) \ 573 barometerResetBias(&((devp)->baro_if)) 589 #define lps25hBarometerSetSensitivity(devp, sp) \ 590 barometerSetSensitivity(&((devp)->baro_if), sp) 603 #define lps25hBarometerResetSensitivity(devp) \ 604 barometerResetSensitivity(&((devp)->baro_if)) 615 #define lps25hThermometerGetAxesNumber(devp) \ 616 thermometerGetAxesNumber(&((devp)->thermo_if)) 636 #define lps25hThermometerReadRaw(devp, axes) \ 637 thermometerReadRaw(&((devp)->thermo_if), axes) 658 #define lps25hThermometerReadCooked(devp, axes) \ 659 thermometerReadCooked(&((devp)->thermo_if), axes) 675 #define lps25hThermometerSetBias(devp, bp) \ 676 thermometerSetBias(&((devp)->thermo_if), bp) 690 #define lps25hThermometerResetBias(devp) \ 691 thermometerResetBias(&((devp)->thermo_if)) 707 #define lps25hThermometerSetSensitivity(devp, sp) \ 708 thermometerSetSensitivity(&((devp)->thermo_if), sp) 721 #define lps25hThermometerResetSensitivity(devp) \ 722 thermometerResetSensitivity(&((devp)->thermo_if)) LPS25H 2-axis barometer/thermometer class.
#define _lps25h_methods
LPS25H specific methods with inherited ones.
lps25h_avgt_t
LPS25H temperature resolution.
I2CDriver * i2cp
I2C driver associated to this LPS25H.
LPS25H configuration structure.
lps25h_odr_t
LPS25H output data rate and bandwidth.
Type of I2C driver configuration structure.
float * barobias
LPS25H barometer subsystem initial bias.
void lps25hStart(LPS25HDriver *devp, const LPS25HConfig *config)
Configures and activates LPS25H Complex Driver peripheral.
BaseThermometer thermo_if
Base thermometer interface.
float * thermosensitivity
LPS25H thermometer subsystem initial sensitivity.
Generic barometer interface header.
#define _lps25h_data
LPS25HDriver specific data.
lps25h_state_t
Driver state machine possible states.
lps25h_bdu_t
LPS25H block data update.
SPIDriver * spip
SPI driver associated to this LPS25H.
float * barosensitivity
LPS25H barometer subsystem initial sensitivity.
void lps25hObjectInit(LPS25HDriver *devp)
Initializes an instance.
Structure representing an I2C driver.
lps25h_odr_t outputdatarate
LPS25H output data rate selection.
lps25h_avgp_t baroresolution
LPS25H barometer subsystem resolution.
const SPIConfig * spicfg
SPI configuration associated to this LPS25H.
const I2CConfig * i2ccfg
I2C configuration associated to this LPS25H.
Driver configuration structure.
LPS25H virtual methods table.
lps25h_avgp_t
LPS25H pressure resolution.
lps25h_bdu_t blockdataupdate
LPS25H block data update.
Generic thermometer interface header.
void lps25hStop(LPS25HDriver *devp)
Deactivates the LPS25H Complex Driver peripheral.
lps25h_sad_t
LPS25H slave address.
lps25h_sad_t slaveaddress
LPS25H slave address.
BaseBarometer baro_if
Base barometer interface.
lps25h_avgt_t thermoresolution
LPS25H thermometer subsystem resolution.
float * thermobias
LPS25H thermometer subsystem initial bias.
const struct LPS25HVMT * vmt
Virtual Methods Table.
Structure representing an SPI driver.