46 #define EX_LPS22HB_VERSION "1.0.0" 51 #define EX_LPS22HB_MAJOR 1 56 #define EX_LPS22HB_MINOR 0 61 #define EX_LPS22HB_PATCH 0 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 255 #if !defined(LPS22HB_USE_ADVANCED) || defined(__DOXYGEN__) 256 #define LPS22HB_USE_ADVANCED FALSE 264 #if !(LPS22HB_USE_SPI ^ LPS22HB_USE_I2C) 265 #error "LPS22HB_USE_SPI and LPS22HB_USE_I2C cannot be both true or both false" 268 #if LPS22HB_USE_SPI && !HAL_USE_SPI 269 #error "LPS22HB_USE_SPI requires HAL_USE_SPI" 272 #if LPS22HB_SHARED_SPI && !SPI_USE_MUTUAL_EXCLUSION 273 #error "LPS22HB_SHARED_SPI requires SPI_USE_MUTUAL_EXCLUSION" 276 #if LPS22HB_USE_I2C && !HAL_USE_I2C 277 #error "LPS22HB_USE_I2C requires HAL_USE_I2C" 280 #if LPS22HB_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION 281 #error "LPS22HB_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION" 288 #error "LPS22HB over SPI still not supported" 355 #if LPS22HB_USE_SPI || defined(__DOXYGEN__) 365 #if LPS22HB_USE_I2C || defined(__DOXYGEN__) 399 #if LPS22HB_USE_ADVANCED || defined(__DOXYGEN__) 415 #define _lps22hb_methods_alone 420 #define _lps22hb_methods \ 421 _base_object_methods \ 422 _lps22hb_methods_alone 436 #define _lps22hb_data \ 438 lps22hb_state_t state; \ 440 const LPS22HBConfig *config; \ 444 float barosensitivity; \ 450 float thermosensitivity; \ 481 #define lps22hbBarometerGetAxesNumber(devp) \ 482 barometerGetAxesNumber(&((devp)->baro_if)) 502 #define lps22hbBarometerReadRaw(devp, axes) \ 503 barometerReadRaw(&((devp)->baro_if), axes) 524 #define lps22hbBarometerReadCooked(devp, axes) \ 525 barometerReadCooked(&((devp)->baro_if), axes) 541 #define lps22hbBarometerSetBias(devp, bp) \ 542 barometerSetBias(&((devp)->baro_if), bp) 556 #define lps22hbBarometerResetBias(devp) \ 557 barometerResetBias(&((devp)->baro_if)) 573 #define lps22hbBarometerSetSensitivity(devp, sp) \ 574 barometerSetSensitivity(&((devp)->baro_if), sp) 587 #define lps22hbBarometerResetSensitivity(devp) \ 588 barometerResetSensitivity(&((devp)->baro_if)) 599 #define lps22hbThermometerGetAxesNumber(devp) \ 600 thermometerGetAxesNumber(&((devp)->thermo_if)) 620 #define lps22hbThermometerReadRaw(devp, axes) \ 621 thermometerReadRaw(&((devp)->thermo_if), axes) 642 #define lps22hbThermometerReadCooked(devp, axes) \ 643 thermometerReadCooked(&((devp)->thermo_if), axes) 659 #define lps22hbThermometerSetBias(devp, bp) \ 660 thermometerSetBias(&((devp)->thermo_if), bp) 674 #define lps22hbThermometerResetBias(devp) \ 675 thermometerResetBias(&((devp)->thermo_if)) 691 #define lps22hbThermometerSetSensitivity(devp, sp) \ 692 thermometerSetSensitivity(&((devp)->thermo_if), sp) 705 #define lps22hbThermometerResetSensitivity(devp) \ 706 thermometerResetSensitivity(&((devp)->thermo_if)) lps22hb_odr_t outputdatarate
LPS22HB output data rate selection.
lps22hb_lp_t
LPS22HB pressure resolution.
lps22hb_sad_t slaveaddress
LPS22HB slave address.
Type of I2C driver configuration structure.
const struct LPS22HBVMT * vmt
Virtual Methods Table.
SPIDriver * spip
SPI driver associated to this LPS22HB.
Generic barometer interface header.
lps22hb_odr_t
LPS22HB output data rate and bandwidth.
I2CDriver * i2cp
I2C driver associated to this LPS22HB.
float * barosensitivity
LPS22HB barometer subsystem initial sensitivity.
float * barobias
LPS22HB barometer subsystem initial bias.
lps22hb_bdu_t
LPS22HB block data update.
const SPIConfig * spicfg
SPI configuration associated to this LPS22HB.
lps22hb_state_t
Driver state machine possible states.
void lps22hbStart(LPS22HBDriver *devp, const LPS22HBConfig *config)
Configures and activates LPS22HB Complex Driver peripheral.
LPS22HB configuration structure.
Structure representing an I2C driver.
const I2CConfig * i2ccfg
I2C configuration associated to this LPS22HB.
lps22hb_lp_t lowpass_filter
LPS22HB barometer subsystem resolution.
LPS22HB virtual methods table.
Driver configuration structure.
BaseBarometer baro_if
Base barometer interface.
float * thermobias
LPS22HB thermometer subsystem initial bias.
lps22hb_sad_t
LPS22HB slave address.
void lps22hbStop(LPS22HBDriver *devp)
Deactivates the LPS22HB Complex Driver peripheral.
void lps22hbObjectInit(LPS22HBDriver *devp)
Initializes an instance.
lps22hb_bdu_t blockdataupdate
LPS22HB block data update.
#define _lps22hb_methods
LPS22HB specific methods with inherited ones.
Generic thermometer interface header.
float * thermosensitivity
LPS22HB thermometer subsystem initial sensitivity.
LPS22HB 2-axis barometer/thermometer class.
#define _lps22hb_data
LPS22HBDriver specific data.
BaseThermometer thermo_if
Base thermometer interface.
Structure representing an SPI driver.