47 #define EX_HTS221_VERSION "1.1.1" 52 #define EX_HTS221_MAJOR 1 57 #define EX_HTS221_MINOR 1 62 #define EX_HTS221_PATCH 1 72 #define HTS221_HYGRO_NUMBER_OF_AXES 1U 74 #define HTS221_HYGRO_SENS 0.00390625f 75 #define HTS221_HYGRO_BIAS 0.0f 85 #define HTS221_THERMO_NUMBER_OF_AXES 1U 87 #define HTS221_THERMO_SENS 0.0015625f 88 #define HTS221_THERMO_BIAS 0.0f 95 #define HTS221_DI_MASK 0xFF 96 #define HTS221_DI(n) (1 << n) 97 #define HTS221_AD_MASK 0x3F 98 #define HTS221_AD(n) (1 << n) 99 #define HTS221_MS (1 << 6) 100 #define HTS221_RW (1 << 7) 102 #define HTS221_SUB_MS (1 << 7) 104 #define HTS221_SAD 0x5F 111 #define HTS221_AD_WHO_AM_I 0x0F 112 #define HTS221_AD_AV_CONF 0x10 113 #define HTS221_AD_CTRL_REG1 0x20 114 #define HTS221_AD_CTRL_REG2 0x21 115 #define HTS221_AD_CTRL_REG3 0x22 116 #define HTS221_AD_STATUS_REG 0x27 117 #define HTS221_AD_HUMIDITY_OUT_L 0x28 118 #define HTS221_AD_HUMIDITY_OUT_H 0x29 119 #define HTS221_AD_TEMP_OUT_L 0x2A 120 #define HTS221_AD_TEMP_OUT_H 0x2B 121 #define HTS221_AD_CALIB_0 0x30 122 #define HTS221_AD_CALIB_1 0x31 123 #define HTS221_AD_CALIB_2 0x32 124 #define HTS221_AD_CALIB_3 0x33 125 #define HTS221_AD_CALIB_4 0x34 126 #define HTS221_AD_CALIB_5 0x35 127 #define HTS221_AD_CALIB_6 0x36 128 #define HTS221_AD_CALIB_7 0x37 129 #define HTS221_AD_CALIB_8 0x38 130 #define HTS221_AD_CALIB_9 0x39 131 #define HTS221_AD_CALIB_A 0x3A 132 #define HTS221_AD_CALIB_B 0x3B 133 #define HTS221_AD_CALIB_C 0x3C 134 #define HTS221_AD_CALIB_D 0x3D 135 #define HTS221_AD_CALIB_E 0x3E 136 #define HTS221_AD_CALIB_F 0x3F 143 #define HTS221_CTRL_REG1_MASK 0x87 144 #define HTS221_CTRL_REG1_ODR0 (1 << 0) 145 #define HTS221_CTRL_REG1_ODR1 (1 << 1) 146 #define HTS221_CTRL_REG1_BDU (1 << 2) 147 #define HTS221_CTRL_REG1_PD (1 << 7) 154 #define HTS221_CTRL_REG2_MASK 0x83 155 #define HTS221_CTRL_REG2_ONE_SHOT (1 << 0) 156 #define HTS221_CTRL_REG2_HEATER (1 << 1) 157 #define HTS221_CTRL_REG2_BOOT (1 << 7) 164 #define HTS221_CTRL_REG3_MASK 0xC4 165 #define HTS221_CTRL_REG3_DRDY (1 << 2) 166 #define HTS221_CTRL_REG3_PP_OD (1 << 6) 167 #define HTS221_CTRL_REG3_INT_H_L (1 << 7) 183 #if !defined(HTS221_USE_SPI) || defined(__DOXYGEN__) 184 #define HTS221_USE_SPI FALSE 193 #if !defined(HTS221_SHARED_SPI) || defined(__DOXYGEN__) 194 #define HTS221_SHARED_SPI FALSE 202 #if !defined(HTS221_USE_I2C) || defined(__DOXYGEN__) 203 #define HTS221_USE_I2C TRUE 212 #if !defined(HTS221_SHARED_I2C) || defined(__DOXYGEN__) 213 #define HTS221_SHARED_I2C FALSE 221 #if !defined(HTS221_USE_ADVANCED) || defined(__DOXYGEN__) 222 #define HTS221_USE_ADVANCED FALSE 230 #if !(HTS221_USE_SPI ^ HTS221_USE_I2C) 231 #error "HTS221_USE_SPI and HTS221_USE_I2C cannot be both true or both false" 234 #if HTS221_USE_SPI && !HAL_USE_SPI 235 #error "HTS221_USE_SPI requires HAL_USE_SPI" 238 #if HTS221_SHARED_SPI && !SPI_USE_MUTUAL_EXCLUSION 239 #error "HTS221_SHARED_SPI requires SPI_USE_MUTUAL_EXCLUSION" 242 #if HTS221_USE_I2C && !HAL_USE_I2C 243 #error "HTS221_USE_I2C requires HAL_USE_I2C" 246 #if HTS221_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION 247 #error "HTS221_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION" 254 #error "HTS221 over SPI still not supported." 330 #if HTS221_USE_SPI || defined(__DOXYGEN__) 340 #if HTS221_USE_I2C || defined(__DOXYGEN__) 370 #if HTS221_USE_ADVANCED || defined(__DOXYGEN__) 390 #define _hts221_methods_alone 395 #define _hts221_methods \ 396 _base_object_methods \ 397 _hts221_methods_alone 411 #define _hts221_data \ 413 hts221_state_t state; \ 415 const HTS221Config *config; \ 419 float hygrosensitivity; \ 423 float hygrofactorysensitivity; \ 425 float hygrofactorybias; \ 429 float thermosensitivity; \ 433 float thermofactorysensitivity; \ 435 float thermofactorybias; 464 #define hts221HygrometerGetAxesNumber(devp) \ 465 hygrometerGetAxesNumber(&((devp)->hygro_if)) 485 #define hts221HygrometerReadRaw(devp, axes) \ 486 hygrometerReadRaw(&((devp)->hygro_if), axes) 507 #define hts221HygrometerReadCooked(devp, axes) \ 508 hygrometerReadCooked(&((devp)->hygro_if), axes) 524 #define hts221HygrometerSetBias(devp, bp) \ 525 hygrometerSetBias(&((devp)->hygro_if), bp) 539 #define hts221HygrometerResetBias(devp) \ 540 hygrometerResetBias(&((devp)->hygro_if)) 556 #define hts221HygrometerSetSensitivity(devp, sp) \ 557 hygrometerSetSensitivity(&((devp)->hygro_if), sp) 570 #define hts221HygrometerResetSensitivity(devp) \ 571 hygrometerResetSensitivity(&((devp)->hygro_if)) 582 #define hts221ThermometerGetAxesNumber(devp) \ 583 thermometerGetAxesNumber(&((devp)->thermo_if)) 603 #define hts221ThermometerReadRaw(devp, axes) \ 604 thermometerReadRaw(&((devp)->thermo_if), axes) 625 #define hts221ThermometerReadCooked(devp, axes) \ 626 thermometerReadCooked(&((devp)->thermo_if), axes) 642 #define hts221ThermometerSetBias(devp, bp) \ 643 thermometerSetBias(&((devp)->thermo_if), bp) 657 #define hts221ThermometerResetBias(devp) \ 658 thermometerResetBias(&((devp)->thermo_if)) 674 #define hts221ThermometerSetSensitivity(devp, sp) \ 675 thermometerSetSensitivity(&((devp)->thermo_if), sp) 688 #define hts221ThermometerResetSensitivity(devp) \ 689 thermometerResetSensitivity(&((devp)->thermo_if))
hts221_state_t
Driver state machine possible states.
Type of I2C driver configuration structure.
const struct HTS221VMT * vmt
Virtual Methods Table.
float * hygrosensitivity
HTS221 hygrometer subsystem initial sensitivity.
#define _hts221_data
HTS221Driver specific data.
BaseHygrometer hygro_if
Base hygrometer interface.
hts221_avgt_t thermoresolution
HTS221 thermometer subsystem resolution.
void hts221ObjectInit(HTS221Driver *devp)
Initializes an instance.
hts221_odr_t outputdatarate
HTS221 output data rate selection.
float * thermosensitivity
HTS221 thermometer subsystem initial sensitivity.
HTS221 2-axis hygrometer/thermometer class.
hts221_odr_t
HTS221 output data rate and bandwidth.
BaseThermometer thermo_if
Base thermometer interface.
Generic hygrometer interface header.
HTS221 virtual methods table.
SPIDriver * spip
SPI driver associated to this HTS221.
Structure representing an I2C driver.
float * thermobias
HTS221 thermometer subsystem initial bias.
const SPIConfig * spicfg
SPI configuration associated to this HTS221.
Driver configuration structure.
hts221_bdu_t blockdataupdate
HTS221 block data update.
hts221_avgt_t
HTS221 temperature resolution.
void hts221Stop(HTS221Driver *devp)
Deactivates the HTS221 Complex Driver peripheral.
Generic thermometer interface header.
I2CDriver * i2cp
I2C driver associated to this HTS221.
hts221_bdu_t
HTS221 block data update.
float * hygrobias
HTS221 hygrometer subsystem initial bias.
hts221_avgh_t
HTS221 humidity resolution.
void hts221Start(HTS221Driver *devp, const HTS221Config *config)
Configures and activates HTS221 Complex Driver peripheral.
const I2CConfig * i2ccfg
I2C configuration associated to this HTS221.
hts221_avgh_t hygroresolution
HTS221 hygrometer subsystem resolution.
Structure representing an SPI driver.
#define _hts221_methods
HTS221 specific methods with inherited ones.
HTS221 configuration structure.