Capacitive digital sensor for relative humidity and temperature
Dependents: Arduino_Nano33BLESense_examples
HTS221.h@3:1fc3a35d731a, 2019-05-31 (annotated)
- Committer:
- mcm
- Date:
- Fri May 31 14:26:29 2019 +0000
- Revision:
- 3:1fc3a35d731a
- Parent:
- 1:ab60d7a79df0
The driver was completed and tested ( NUCLEO-L152RE ), it works as expected.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mcm | 1:ab60d7a79df0 | 1 | /** |
mcm | 1:ab60d7a79df0 | 2 | * @brief HTS221.h |
mcm | 1:ab60d7a79df0 | 3 | * @details Capacitive digital sensor for relative humidity and temperature. |
mcm | 1:ab60d7a79df0 | 4 | * Header file. |
mcm | 1:ab60d7a79df0 | 5 | * |
mcm | 1:ab60d7a79df0 | 6 | * |
mcm | 1:ab60d7a79df0 | 7 | * @return N/A |
mcm | 1:ab60d7a79df0 | 8 | * |
mcm | 1:ab60d7a79df0 | 9 | * @author Manuel Caballero |
mcm | 1:ab60d7a79df0 | 10 | * @date 31/May/2019 |
mcm | 1:ab60d7a79df0 | 11 | * @version 31/May/2019 The ORIGIN |
mcm | 1:ab60d7a79df0 | 12 | * @pre N/A. |
mcm | 1:ab60d7a79df0 | 13 | * @warning N/A |
mcm | 1:ab60d7a79df0 | 14 | * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ). All rights reserved. |
mcm | 1:ab60d7a79df0 | 15 | */ |
mcm | 1:ab60d7a79df0 | 16 | #ifndef HTS221_H |
mcm | 1:ab60d7a79df0 | 17 | #define HTS221_H |
mcm | 1:ab60d7a79df0 | 18 | |
mcm | 1:ab60d7a79df0 | 19 | #include "mbed.h" |
mcm | 1:ab60d7a79df0 | 20 | |
mcm | 1:ab60d7a79df0 | 21 | |
mcm | 1:ab60d7a79df0 | 22 | /** |
mcm | 1:ab60d7a79df0 | 23 | Example: |
mcm | 1:ab60d7a79df0 | 24 | @code |
mcm | 3:1fc3a35d731a | 25 | #include "mbed.h" |
mcm | 3:1fc3a35d731a | 26 | #include "HTS221.h" |
mcm | 1:ab60d7a79df0 | 27 | |
mcm | 3:1fc3a35d731a | 28 | HTS221 myHTS221 ( I2C_SDA, I2C_SCL, HTS221::HTS221_ADDRESS, 400000 ); // I2C_SDA | I2C_SCL |
mcm | 3:1fc3a35d731a | 29 | Serial pc ( USBTX, USBRX ); // tx, rx |
mcm | 3:1fc3a35d731a | 30 | |
mcm | 3:1fc3a35d731a | 31 | DigitalOut myled ( LED1 ); |
mcm | 3:1fc3a35d731a | 32 | Ticker newAction; |
mcm | 3:1fc3a35d731a | 33 | |
mcm | 3:1fc3a35d731a | 34 | |
mcm | 3:1fc3a35d731a | 35 | //@brief Constants. |
mcm | 3:1fc3a35d731a | 36 | |
mcm | 3:1fc3a35d731a | 37 | |
mcm | 3:1fc3a35d731a | 38 | //@brief Variables. |
mcm | 3:1fc3a35d731a | 39 | volatile uint32_t myState; // State that indicates when to perform a new sample |
mcm | 3:1fc3a35d731a | 40 | |
mcm | 3:1fc3a35d731a | 41 | |
mcm | 3:1fc3a35d731a | 42 | // @brief FUNCTION PROTOTYPES |
mcm | 3:1fc3a35d731a | 43 | void changeDATA ( void ); |
mcm | 3:1fc3a35d731a | 44 | |
mcm | 3:1fc3a35d731a | 45 | |
mcm | 3:1fc3a35d731a | 46 | //@brief FUNCTION FOR APPLICATION MAIN ENTRY. |
mcm | 3:1fc3a35d731a | 47 | int main() |
mcm | 3:1fc3a35d731a | 48 | { |
mcm | 3:1fc3a35d731a | 49 | HTS221::HTS221_status_t aux; |
mcm | 3:1fc3a35d731a | 50 | HTS221::HTS221_data_t myHTS221_Data; |
mcm | 3:1fc3a35d731a | 51 | |
mcm | 3:1fc3a35d731a | 52 | pc.baud ( 115200 ); |
mcm | 3:1fc3a35d731a | 53 | |
mcm | 3:1fc3a35d731a | 54 | |
mcm | 3:1fc3a35d731a | 55 | myled = 1; |
mcm | 3:1fc3a35d731a | 56 | wait(3); |
mcm | 3:1fc3a35d731a | 57 | myled = 0; |
mcm | 3:1fc3a35d731a | 58 | |
mcm | 3:1fc3a35d731a | 59 | // Get device ID |
mcm | 3:1fc3a35d731a | 60 | aux = myHTS221.HTS221_GetDeviceID ( &myHTS221_Data ); |
mcm | 3:1fc3a35d731a | 61 | |
mcm | 3:1fc3a35d731a | 62 | // Boot the device |
mcm | 3:1fc3a35d731a | 63 | aux = myHTS221.HTS221_SetBoot (); |
mcm | 3:1fc3a35d731a | 64 | |
mcm | 3:1fc3a35d731a | 65 | // Set device in ACTIVE mode |
mcm | 3:1fc3a35d731a | 66 | aux = myHTS221.HTS221_SetPowerDown ( HTS221::CTRL_REG1_PD_ACTIVE_MODE ); |
mcm | 3:1fc3a35d731a | 67 | |
mcm | 3:1fc3a35d731a | 68 | // Get calibration coefficients |
mcm | 3:1fc3a35d731a | 69 | aux = myHTS221.HTS221_GetCalibrationCoefficients ( &myHTS221_Data ); |
mcm | 3:1fc3a35d731a | 70 | |
mcm | 3:1fc3a35d731a | 71 | // Output registers not updated until MSB and LSB reading |
mcm | 3:1fc3a35d731a | 72 | myHTS221_Data.bdu = HTS221::CTRL_REG1_BDU_DEFAULT_MODE; |
mcm | 3:1fc3a35d731a | 73 | aux = myHTS221.HTS221_SetBlockDataUpdate ( myHTS221_Data ); |
mcm | 3:1fc3a35d731a | 74 | |
mcm | 3:1fc3a35d731a | 75 | // Set resolution: 16 AVGT, 32 AVGH |
mcm | 3:1fc3a35d731a | 76 | myHTS221_Data.temperatureResolution = HTS221::AV_CONF_AVGT_16; |
mcm | 3:1fc3a35d731a | 77 | myHTS221_Data.humidityResolution = HTS221::AV_CONF_AVGH_32; |
mcm | 3:1fc3a35d731a | 78 | aux = myHTS221.HTS221_SetResolution ( myHTS221_Data ); |
mcm | 3:1fc3a35d731a | 79 | |
mcm | 3:1fc3a35d731a | 80 | // ODR |
mcm | 3:1fc3a35d731a | 81 | myHTS221_Data.odr = HTS221::CTRL_REG1_ODR_ONE_SHOT; |
mcm | 3:1fc3a35d731a | 82 | aux = myHTS221.HTS221_SetOutputDataRate ( myHTS221_Data ); |
mcm | 3:1fc3a35d731a | 83 | |
mcm | 3:1fc3a35d731a | 84 | |
mcm | 3:1fc3a35d731a | 85 | myState = 0UL; // Reset the variable |
mcm | 3:1fc3a35d731a | 86 | newAction.attach( &changeDATA, 1U ); // the address of the function to be attached ( changeDATA ) and the interval ( 1s ) |
mcm | 3:1fc3a35d731a | 87 | |
mcm | 3:1fc3a35d731a | 88 | |
mcm | 3:1fc3a35d731a | 89 | // Let the callbacks take care of everything |
mcm | 3:1fc3a35d731a | 90 | while(1) { |
mcm | 3:1fc3a35d731a | 91 | sleep(); |
mcm | 3:1fc3a35d731a | 92 | |
mcm | 3:1fc3a35d731a | 93 | if ( myState == 1UL ) { |
mcm | 3:1fc3a35d731a | 94 | myled = 1U; |
mcm | 3:1fc3a35d731a | 95 | |
mcm | 3:1fc3a35d731a | 96 | // Trigger to get a new data value |
mcm | 3:1fc3a35d731a | 97 | aux = myHTS221.HTS221_SetOneShot (); |
mcm | 3:1fc3a35d731a | 98 | |
mcm | 3:1fc3a35d731a | 99 | // Wait until there is a new data |
mcm | 3:1fc3a35d731a | 100 | do { |
mcm | 3:1fc3a35d731a | 101 | aux = myHTS221.HTS221_GetOneShot ( &myHTS221_Data ); |
mcm | 3:1fc3a35d731a | 102 | } while( myHTS221_Data.one_shot == HTS221::CTRL_REG2_ONE_SHOT_WAITING ); |
mcm | 3:1fc3a35d731a | 103 | |
mcm | 3:1fc3a35d731a | 104 | |
mcm | 3:1fc3a35d731a | 105 | aux = myHTS221.HTS221_GetCalibrationCoefficients ( &myHTS221_Data ); |
mcm | 3:1fc3a35d731a | 106 | |
mcm | 3:1fc3a35d731a | 107 | // Get temperature |
mcm | 3:1fc3a35d731a | 108 | do { |
mcm | 3:1fc3a35d731a | 109 | aux = myHTS221.HTS221_GetTemperatureDataAvailable ( &myHTS221_Data ); |
mcm | 3:1fc3a35d731a | 110 | } while( myHTS221_Data.t_da == HTS221::STATUS_REGISTER_T_DA_DATA_NOT_AVAILABLE ); |
mcm | 3:1fc3a35d731a | 111 | |
mcm | 3:1fc3a35d731a | 112 | aux = myHTS221.HTS221_GetTemperature ( &myHTS221_Data ); |
mcm | 3:1fc3a35d731a | 113 | |
mcm | 3:1fc3a35d731a | 114 | // Get humidity |
mcm | 3:1fc3a35d731a | 115 | aux = myHTS221.HTS221_GetHumidity ( &myHTS221_Data ); |
mcm | 3:1fc3a35d731a | 116 | |
mcm | 3:1fc3a35d731a | 117 | // Send data through the UART |
mcm | 3:1fc3a35d731a | 118 | pc.printf ( "T: %0.1f C, RH: %0.1f %%\r\n", myHTS221_Data.temperature, myHTS221_Data.humidity ); |
mcm | 3:1fc3a35d731a | 119 | |
mcm | 3:1fc3a35d731a | 120 | |
mcm | 3:1fc3a35d731a | 121 | // Reset the variables |
mcm | 3:1fc3a35d731a | 122 | myState = 0UL; |
mcm | 3:1fc3a35d731a | 123 | myled = 0U; |
mcm | 3:1fc3a35d731a | 124 | } |
mcm | 3:1fc3a35d731a | 125 | } |
mcm | 3:1fc3a35d731a | 126 | } |
mcm | 3:1fc3a35d731a | 127 | |
mcm | 3:1fc3a35d731a | 128 | |
mcm | 3:1fc3a35d731a | 129 | // @brief changeDATA ( void ) |
mcm | 3:1fc3a35d731a | 130 | // |
mcm | 3:1fc3a35d731a | 131 | // @details It changes myState variable |
mcm | 3:1fc3a35d731a | 132 | // |
mcm | 3:1fc3a35d731a | 133 | // @param[in] N/A |
mcm | 3:1fc3a35d731a | 134 | // |
mcm | 3:1fc3a35d731a | 135 | // @param[out] N/A. |
mcm | 3:1fc3a35d731a | 136 | // |
mcm | 3:1fc3a35d731a | 137 | // @return N/A. |
mcm | 3:1fc3a35d731a | 138 | // |
mcm | 3:1fc3a35d731a | 139 | // @author Manuel Caballero |
mcm | 3:1fc3a35d731a | 140 | // @date 31/May/2019 |
mcm | 3:1fc3a35d731a | 141 | // @version 31/May/2019 The ORIGIN |
mcm | 3:1fc3a35d731a | 142 | // @pre N/A |
mcm | 3:1fc3a35d731a | 143 | // @warning N/A. |
mcm | 3:1fc3a35d731a | 144 | void changeDATA ( void ) |
mcm | 3:1fc3a35d731a | 145 | { |
mcm | 3:1fc3a35d731a | 146 | myState = 1UL; |
mcm | 3:1fc3a35d731a | 147 | } |
mcm | 1:ab60d7a79df0 | 148 | @endcode |
mcm | 1:ab60d7a79df0 | 149 | */ |
mcm | 1:ab60d7a79df0 | 150 | |
mcm | 1:ab60d7a79df0 | 151 | |
mcm | 1:ab60d7a79df0 | 152 | /*! |
mcm | 1:ab60d7a79df0 | 153 | Library for the HTS221 Capacitive digital sensor for relative humidity and temperature. |
mcm | 1:ab60d7a79df0 | 154 | */ |
mcm | 1:ab60d7a79df0 | 155 | class HTS221 |
mcm | 1:ab60d7a79df0 | 156 | { |
mcm | 1:ab60d7a79df0 | 157 | public: |
mcm | 1:ab60d7a79df0 | 158 | typedef enum { |
mcm | 1:ab60d7a79df0 | 159 | HTS221_ADDRESS = ( 0b1011111 << 1U ) /*!< I2C slave address byte */ |
mcm | 1:ab60d7a79df0 | 160 | } HTS221_address_t; |
mcm | 1:ab60d7a79df0 | 161 | |
mcm | 1:ab60d7a79df0 | 162 | |
mcm | 1:ab60d7a79df0 | 163 | |
mcm | 1:ab60d7a79df0 | 164 | /** |
mcm | 1:ab60d7a79df0 | 165 | * @brief REGISTERS |
mcm | 1:ab60d7a79df0 | 166 | */ |
mcm | 1:ab60d7a79df0 | 167 | typedef enum { |
mcm | 1:ab60d7a79df0 | 168 | HTS221_WHO_AM_I = 0x0F, /*!< Device identification */ |
mcm | 1:ab60d7a79df0 | 169 | HTS221_AV_CONF = 0x10, /*!< Humidity and temperature resolution mode */ |
mcm | 1:ab60d7a79df0 | 170 | HTS221_CTRL_REG1 = 0x20, /*!< Control register 1 */ |
mcm | 1:ab60d7a79df0 | 171 | HTS221_CTRL_REG2 = 0x21, /*!< Control register 2 */ |
mcm | 1:ab60d7a79df0 | 172 | HTS221_CTRL_REG3 = 0x22, /*!< Control register 3 */ |
mcm | 1:ab60d7a79df0 | 173 | HTS221_STATUS_REG = 0x27, /*!< Status register */ |
mcm | 1:ab60d7a79df0 | 174 | HTS221_HUMIDITY_OUT_L = 0x28, /*!< Relative humidity data (LSB) */ |
mcm | 1:ab60d7a79df0 | 175 | HTS221_HUMIDITY_OUT_H = 0x29, /*!< Relative humidity data (MSB) */ |
mcm | 1:ab60d7a79df0 | 176 | HTS221_TEMP_OUT_L = 0x2A, /*!< Temperature data (LSB) */ |
mcm | 1:ab60d7a79df0 | 177 | HTS221_TEMP_OUT_H = 0x2B, /*!< Temperature data (MSB) */ |
mcm | 1:ab60d7a79df0 | 178 | HTS221_CALIB_0 = 0x30, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 179 | HTS221_CALIB_1 = 0x31, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 180 | HTS221_CALIB_2 = 0x32, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 181 | HTS221_CALIB_3 = 0x33, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 182 | HTS221_CALIB_4 = 0x34, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 183 | HTS221_CALIB_5 = 0x35, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 184 | HTS221_CALIB_6 = 0x36, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 185 | HTS221_CALIB_7 = 0x37, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 186 | HTS221_CALIB_8 = 0x38, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 187 | HTS221_CALIB_9 = 0x39, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 188 | HTS221_CALIB_A = 0x3A, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 189 | HTS221_CALIB_B = 0x3B, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 190 | HTS221_CALIB_C = 0x3C, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 191 | HTS221_CALIB_D = 0x3D, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 192 | HTS221_CALIB_E = 0x3E, /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 193 | HTS221_CALIB_F = 0x3F /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 194 | } HTS221_registers_t; |
mcm | 1:ab60d7a79df0 | 195 | |
mcm | 1:ab60d7a79df0 | 196 | |
mcm | 1:ab60d7a79df0 | 197 | |
mcm | 1:ab60d7a79df0 | 198 | /** |
mcm | 1:ab60d7a79df0 | 199 | * @brief WHO_AM_I REGISTER |
mcm | 1:ab60d7a79df0 | 200 | */ |
mcm | 1:ab60d7a79df0 | 201 | typedef enum { |
mcm | 1:ab60d7a79df0 | 202 | WHO_AM_I_MASK = 0xFF, /*!< WHO_AM_I mask */ |
mcm | 1:ab60d7a79df0 | 203 | WHO_AM_I_VALUE = 0xBC /*!< WHO_AM_I value */ |
mcm | 1:ab60d7a79df0 | 204 | } HTS221_who_am_i_t; |
mcm | 1:ab60d7a79df0 | 205 | |
mcm | 1:ab60d7a79df0 | 206 | |
mcm | 1:ab60d7a79df0 | 207 | |
mcm | 1:ab60d7a79df0 | 208 | /** |
mcm | 1:ab60d7a79df0 | 209 | * @brief AV_CONF REGISTER |
mcm | 1:ab60d7a79df0 | 210 | */ |
mcm | 1:ab60d7a79df0 | 211 | /* AVGT <5:3> |
mcm | 1:ab60d7a79df0 | 212 | * NOTE: Numbers of averaged temperature samples ( 2-256 ). |
mcm | 1:ab60d7a79df0 | 213 | */ |
mcm | 1:ab60d7a79df0 | 214 | typedef enum { |
mcm | 1:ab60d7a79df0 | 215 | AV_CONF_AVGT_MASK = ( 0b111 << 3U ), /*!< AVGT mask */ |
mcm | 1:ab60d7a79df0 | 216 | AV_CONF_AVGT_2 = ( 0b000 << 3U ), /*!< AVGT Nr. internal average 2 */ |
mcm | 1:ab60d7a79df0 | 217 | AV_CONF_AVGT_4 = ( 0b001 << 3U ), /*!< AVGT Nr. internal average 4 */ |
mcm | 1:ab60d7a79df0 | 218 | AV_CONF_AVGT_8 = ( 0b010 << 3U ), /*!< AVGT Nr. internal average 8 */ |
mcm | 1:ab60d7a79df0 | 219 | AV_CONF_AVGT_16 = ( 0b011 << 3U ), /*!< AVGT Nr. internal average 16 [ Default ] */ |
mcm | 1:ab60d7a79df0 | 220 | AV_CONF_AVGT_32 = ( 0b100 << 3U ), /*!< AVGT Nr. internal average 32 */ |
mcm | 1:ab60d7a79df0 | 221 | AV_CONF_AVGT_64 = ( 0b101 << 3U ), /*!< AVGT Nr. internal average 64 */ |
mcm | 1:ab60d7a79df0 | 222 | AV_CONF_AVGT_128 = ( 0b110 << 3U ), /*!< AVGT Nr. internal average 128 */ |
mcm | 1:ab60d7a79df0 | 223 | AV_CONF_AVGT_256 = ( 0b111 << 3U ) /*!< AVGT Nr. internal average 256 */ |
mcm | 1:ab60d7a79df0 | 224 | } HTS221_av_config_avgt_t; |
mcm | 1:ab60d7a79df0 | 225 | |
mcm | 1:ab60d7a79df0 | 226 | |
mcm | 1:ab60d7a79df0 | 227 | /* AVGH <2:0> |
mcm | 1:ab60d7a79df0 | 228 | * NOTE: Numbers of averaged humidity samples ( 4-512 ). |
mcm | 1:ab60d7a79df0 | 229 | */ |
mcm | 1:ab60d7a79df0 | 230 | typedef enum { |
mcm | 1:ab60d7a79df0 | 231 | AV_CONF_AVGH_MASK = ( 0b111 << 0U ), /*!< AVGH mask */ |
mcm | 1:ab60d7a79df0 | 232 | AV_CONF_AVGH_4 = ( 0b000 << 0U ), /*!< AVGH Nr. internal average 4 */ |
mcm | 1:ab60d7a79df0 | 233 | AV_CONF_AVGH_8 = ( 0b001 << 0U ), /*!< AVGH Nr. internal average 8 */ |
mcm | 1:ab60d7a79df0 | 234 | AV_CONF_AVGH_16 = ( 0b010 << 0U ), /*!< AVGH Nr. internal average 16 */ |
mcm | 1:ab60d7a79df0 | 235 | AV_CONF_AVGH_32 = ( 0b011 << 0U ), /*!< AVGH Nr. internal average 32 [ Default ] */ |
mcm | 1:ab60d7a79df0 | 236 | AV_CONF_AVGH_64 = ( 0b100 << 0U ), /*!< AVGH Nr. internal average 64 */ |
mcm | 1:ab60d7a79df0 | 237 | AV_CONF_AVGH_128 = ( 0b101 << 0U ), /*!< AVGH Nr. internal average 128 */ |
mcm | 1:ab60d7a79df0 | 238 | AV_CONF_AVGH_256 = ( 0b110 << 0U ), /*!< AVGH Nr. internal average 256 */ |
mcm | 1:ab60d7a79df0 | 239 | AV_CONF_AVGH_512 = ( 0b111 << 0U ) /*!< AVGH Nr. internal average 512 */ |
mcm | 1:ab60d7a79df0 | 240 | } HTS221_av_config_avgh_t; |
mcm | 1:ab60d7a79df0 | 241 | |
mcm | 1:ab60d7a79df0 | 242 | |
mcm | 1:ab60d7a79df0 | 243 | |
mcm | 1:ab60d7a79df0 | 244 | /** |
mcm | 1:ab60d7a79df0 | 245 | * @brief CTRL_REG1 REGISTER |
mcm | 1:ab60d7a79df0 | 246 | */ |
mcm | 1:ab60d7a79df0 | 247 | /* PD <7> |
mcm | 1:ab60d7a79df0 | 248 | * NOTE: Power-down control. |
mcm | 1:ab60d7a79df0 | 249 | */ |
mcm | 1:ab60d7a79df0 | 250 | typedef enum { |
mcm | 1:ab60d7a79df0 | 251 | CTRL_REG1_PD_MASK = ( 1U << 7U ), /*!< PD mask */ |
mcm | 1:ab60d7a79df0 | 252 | CTRL_REG1_PD_POWER_DOWN_MODE = ( 0U << 7U ), /*!< PD power-down mode [ Default ] */ |
mcm | 1:ab60d7a79df0 | 253 | CTRL_REG1_PD_ACTIVE_MODE = ( 1U << 7U ) /*!< PD active mode */ |
mcm | 1:ab60d7a79df0 | 254 | } HTS221_ctrl_reg1_pd_t; |
mcm | 1:ab60d7a79df0 | 255 | |
mcm | 1:ab60d7a79df0 | 256 | |
mcm | 1:ab60d7a79df0 | 257 | /* BDU <2> |
mcm | 1:ab60d7a79df0 | 258 | * NOTE: Block data update. |
mcm | 1:ab60d7a79df0 | 259 | */ |
mcm | 1:ab60d7a79df0 | 260 | typedef enum { |
mcm | 1:ab60d7a79df0 | 261 | CTRL_REG1_BDU_MASK = ( 1U << 2U ), /*!< BDU mask */ |
mcm | 1:ab60d7a79df0 | 262 | CTRL_REG1_BDU_CONTINUOUS_UPDATE = ( 0U << 2U ), /*!< Continuous update */ |
mcm | 1:ab60d7a79df0 | 263 | CTRL_REG1_BDU_DEFAULT_MODE = ( 1U << 2U ) /*!< Output registers not updated until MSB and LSB reading [ Default ] */ |
mcm | 1:ab60d7a79df0 | 264 | } HTS221_ctrl_reg1_bdu_t; |
mcm | 1:ab60d7a79df0 | 265 | |
mcm | 1:ab60d7a79df0 | 266 | |
mcm | 1:ab60d7a79df0 | 267 | /* ODR <1:0> |
mcm | 1:ab60d7a79df0 | 268 | * NOTE: Output data rate selection. |
mcm | 1:ab60d7a79df0 | 269 | */ |
mcm | 1:ab60d7a79df0 | 270 | typedef enum { |
mcm | 1:ab60d7a79df0 | 271 | CTRL_REG1_ODR_MASK = ( 0b11 << 0U ), /*!< ODR mask */ |
mcm | 1:ab60d7a79df0 | 272 | CTRL_REG1_ODR_ONE_SHOT = ( 0b00 << 0U ), /*!< One-shot */ |
mcm | 1:ab60d7a79df0 | 273 | CTRL_REG1_ODR_1_HZ = ( 0b01 << 0U ), /*!< 1 Hz */ |
mcm | 1:ab60d7a79df0 | 274 | CTRL_REG1_ODR_7_HZ = ( 0b10 << 0U ), /*!< 7 Hz */ |
mcm | 1:ab60d7a79df0 | 275 | CTRL_REG1_ODR_12_5_HZ = ( 0b11 << 0U ) /*!< 12.5 Hz */ |
mcm | 1:ab60d7a79df0 | 276 | } HTS221_ctrl_reg1_odr_t; |
mcm | 1:ab60d7a79df0 | 277 | |
mcm | 1:ab60d7a79df0 | 278 | |
mcm | 1:ab60d7a79df0 | 279 | |
mcm | 1:ab60d7a79df0 | 280 | /** |
mcm | 1:ab60d7a79df0 | 281 | * @brief CTRL_REG2 REGISTER |
mcm | 1:ab60d7a79df0 | 282 | */ |
mcm | 1:ab60d7a79df0 | 283 | /* BOOT <7> |
mcm | 1:ab60d7a79df0 | 284 | * NOTE: Reboot memory content. |
mcm | 1:ab60d7a79df0 | 285 | */ |
mcm | 1:ab60d7a79df0 | 286 | typedef enum { |
mcm | 1:ab60d7a79df0 | 287 | CTRL_REG2_BOOT_MASK = ( 1U << 7U ), /*!< BOOT mask */ |
mcm | 1:ab60d7a79df0 | 288 | CTRL_REG2_BOOT_NORMAL_MODE = ( 0U << 7U ), /*!< normal mode [ Default ] */ |
mcm | 1:ab60d7a79df0 | 289 | CTRL_REG2_BOOT_REBOOT_MEMORY_CONTENT = ( 1U << 7U ) /*!< reboot memory content */ |
mcm | 1:ab60d7a79df0 | 290 | } HTS221_ctrl_reg2_boot_t; |
mcm | 1:ab60d7a79df0 | 291 | |
mcm | 1:ab60d7a79df0 | 292 | |
mcm | 1:ab60d7a79df0 | 293 | /* Heater <1> |
mcm | 1:ab60d7a79df0 | 294 | * NOTE: Controling an internal heating element. |
mcm | 1:ab60d7a79df0 | 295 | */ |
mcm | 1:ab60d7a79df0 | 296 | typedef enum { |
mcm | 1:ab60d7a79df0 | 297 | CTRL_REG2_HEATER_MASK = ( 1U << 1U ), /*!< Heater mask */ |
mcm | 1:ab60d7a79df0 | 298 | CTRL_REG2_HEATER_HEATER_DISABLED = ( 0U << 1U ), /*!< Heater disabled [ Default ] */ |
mcm | 1:ab60d7a79df0 | 299 | CTRL_REG2_HEATER_HEATER_ENABLED = ( 1U << 1U ) /*!< Heater enabled */ |
mcm | 1:ab60d7a79df0 | 300 | } HTS221_ctrl_reg2_heater_t; |
mcm | 1:ab60d7a79df0 | 301 | |
mcm | 1:ab60d7a79df0 | 302 | |
mcm | 1:ab60d7a79df0 | 303 | /* ONE_SHOT <0> |
mcm | 1:ab60d7a79df0 | 304 | * NOTE: One-shot enable. |
mcm | 1:ab60d7a79df0 | 305 | */ |
mcm | 1:ab60d7a79df0 | 306 | typedef enum { |
mcm | 1:ab60d7a79df0 | 307 | CTRL_REG2_ONE_SHOT_MASK = ( 1U << 0U ), /*!< ONE_SHOT mask */ |
mcm | 1:ab60d7a79df0 | 308 | CTRL_REG2_ONE_SHOT_WAITING = ( 0U << 0U ), /*!< waiting for start of conversion [ Default ] */ |
mcm | 1:ab60d7a79df0 | 309 | CTRL_REG2_ONE_SHOT_START = ( 1U << 0U ) /*!< start for a new dataset */ |
mcm | 1:ab60d7a79df0 | 310 | } HTS221_ctrl_reg2_one_shot_t; |
mcm | 1:ab60d7a79df0 | 311 | |
mcm | 1:ab60d7a79df0 | 312 | |
mcm | 1:ab60d7a79df0 | 313 | |
mcm | 1:ab60d7a79df0 | 314 | /** |
mcm | 1:ab60d7a79df0 | 315 | * @brief CTRL_REG3 REGISTER |
mcm | 1:ab60d7a79df0 | 316 | */ |
mcm | 1:ab60d7a79df0 | 317 | /* DRDY_H_L <7> |
mcm | 1:ab60d7a79df0 | 318 | * NOTE: Data Ready output signal active high, low. |
mcm | 1:ab60d7a79df0 | 319 | */ |
mcm | 1:ab60d7a79df0 | 320 | typedef enum { |
mcm | 1:ab60d7a79df0 | 321 | CTRL_REG3_DRDY_H_L_MASK = ( 1U << 7U ), /*!< DRDY_H_L mask */ |
mcm | 1:ab60d7a79df0 | 322 | CTRL_REG3_DRDY_H_L_ACTIVE_HIGH = ( 0U << 7U ), /*!< active high [ Default ] */ |
mcm | 1:ab60d7a79df0 | 323 | CTRL_REG3_DRDY_H_L_ACTIVE_LOW = ( 1U << 7U ) /*!< active low */ |
mcm | 1:ab60d7a79df0 | 324 | } HTS221_ctrl_reg3_drdy_h_l_t; |
mcm | 1:ab60d7a79df0 | 325 | |
mcm | 1:ab60d7a79df0 | 326 | |
mcm | 1:ab60d7a79df0 | 327 | /* PP_OD <6> |
mcm | 1:ab60d7a79df0 | 328 | * NOTE: Push-pull / Open Drain selection on pin 3 (DRDY). |
mcm | 1:ab60d7a79df0 | 329 | */ |
mcm | 1:ab60d7a79df0 | 330 | typedef enum { |
mcm | 1:ab60d7a79df0 | 331 | CTRL_REG3_PP_OD_MASK = ( 1U << 6U ), /*!< PP_OD mask */ |
mcm | 1:ab60d7a79df0 | 332 | CTRL_REG3_PP_OD_PUSH_PULL = ( 0U << 6U ), /*!< push-pull [ Default ] */ |
mcm | 1:ab60d7a79df0 | 333 | CTRL_REG3_PP_OD_OPEN_DRAIN = ( 1U << 6U ) /*!< open drain */ |
mcm | 1:ab60d7a79df0 | 334 | } HTS221_ctrl_reg3_pp_od_t; |
mcm | 1:ab60d7a79df0 | 335 | |
mcm | 1:ab60d7a79df0 | 336 | |
mcm | 1:ab60d7a79df0 | 337 | /* DRDY_EN <2> |
mcm | 1:ab60d7a79df0 | 338 | * NOTE: Data Ready enable. |
mcm | 1:ab60d7a79df0 | 339 | */ |
mcm | 1:ab60d7a79df0 | 340 | typedef enum { |
mcm | 1:ab60d7a79df0 | 341 | CTRL_REG3_DRDY_EN_MASK = ( 1U << 2U ), /*!< DRDY_EN mask */ |
mcm | 1:ab60d7a79df0 | 342 | CTRL_REG3_DRDY_DATA_READY_DISABLED = ( 0U << 2U ), /*!< Data Ready disabled [ Default ] */ |
mcm | 1:ab60d7a79df0 | 343 | CTRL_REG3_DRDY_DATA_READY_ENABLED = ( 1U << 2U ) /*!< Data Ready signal available on pin 3 */ |
mcm | 1:ab60d7a79df0 | 344 | } HTS221_ctrl_reg3_drdy_en_t; |
mcm | 1:ab60d7a79df0 | 345 | |
mcm | 1:ab60d7a79df0 | 346 | |
mcm | 1:ab60d7a79df0 | 347 | |
mcm | 1:ab60d7a79df0 | 348 | /** |
mcm | 1:ab60d7a79df0 | 349 | * @brief STATUS_REG REGISTER |
mcm | 1:ab60d7a79df0 | 350 | * |
mcm | 1:ab60d7a79df0 | 351 | * NOTE: H_DA is set to 1 whenever a new humidity sample is available. H_DA is cleared anytime |
mcm | 1:ab60d7a79df0 | 352 | * HUMIDITY_OUT_H (29h) register is read. T_DA is set to 1 whenever a new temperature sample is available. T_DA is cleared anytime TEMP_OUT_H (2Bh) register is read. |
mcm | 1:ab60d7a79df0 | 353 | */ |
mcm | 1:ab60d7a79df0 | 354 | /* H_DA <1> |
mcm | 1:ab60d7a79df0 | 355 | * NOTE: Humidity data available. |
mcm | 1:ab60d7a79df0 | 356 | */ |
mcm | 1:ab60d7a79df0 | 357 | typedef enum { |
mcm | 1:ab60d7a79df0 | 358 | STATUS_REGISTER_H_DA_MASK = ( 1U << 1U ), /*!< H_DA mask */ |
mcm | 1:ab60d7a79df0 | 359 | STATUS_REGISTER_H_DA_DATA_NOT_AVAILABLE = ( 0U << 1U ), /*!< new data for humidity is not yet available */ |
mcm | 1:ab60d7a79df0 | 360 | STATUS_REGISTER_H_DA_DATA_AVAILABLE = ( 1U << 1U ) /*!< new data for humidity is available */ |
mcm | 1:ab60d7a79df0 | 361 | } HTS221_status_reg_h_da_t; |
mcm | 1:ab60d7a79df0 | 362 | |
mcm | 1:ab60d7a79df0 | 363 | |
mcm | 1:ab60d7a79df0 | 364 | /* T_DA <0> |
mcm | 1:ab60d7a79df0 | 365 | * NOTE: Temperature data available. |
mcm | 1:ab60d7a79df0 | 366 | */ |
mcm | 1:ab60d7a79df0 | 367 | typedef enum { |
mcm | 1:ab60d7a79df0 | 368 | STATUS_REGISTER_T_DA_MASK = ( 1U << 0U ), /*!< T_DA mask */ |
mcm | 1:ab60d7a79df0 | 369 | STATUS_REGISTER_T_DA_DATA_NOT_AVAILABLE = ( 0U << 0U ), /*!< new data for temperature is not yet available */ |
mcm | 1:ab60d7a79df0 | 370 | STATUS_REGISTER_T_DA_DATA_AVAILABLE = ( 1U << 0U ) /*!< new data for temperature is available */ |
mcm | 1:ab60d7a79df0 | 371 | } HTS221_status_reg_t_da_t; |
mcm | 1:ab60d7a79df0 | 372 | |
mcm | 1:ab60d7a79df0 | 373 | |
mcm | 1:ab60d7a79df0 | 374 | |
mcm | 1:ab60d7a79df0 | 375 | /** |
mcm | 1:ab60d7a79df0 | 376 | * @brief HUMIDITY_OUT_L REGISTER |
mcm | 1:ab60d7a79df0 | 377 | * |
mcm | 1:ab60d7a79df0 | 378 | * NOTE: Relative humidity data (LSB) |
mcm | 1:ab60d7a79df0 | 379 | . * |
mcm | 1:ab60d7a79df0 | 380 | */ |
mcm | 1:ab60d7a79df0 | 381 | typedef enum { |
mcm | 1:ab60d7a79df0 | 382 | HUMIDITY_OUT_L_MASK = 0xFF /*!< Humidity data LSB mask */ |
mcm | 1:ab60d7a79df0 | 383 | } HTS221_humidity_out_l_t; |
mcm | 1:ab60d7a79df0 | 384 | |
mcm | 1:ab60d7a79df0 | 385 | |
mcm | 1:ab60d7a79df0 | 386 | |
mcm | 1:ab60d7a79df0 | 387 | /** |
mcm | 1:ab60d7a79df0 | 388 | * @brief HUMIDITY_OUT_H REGISTER |
mcm | 1:ab60d7a79df0 | 389 | * |
mcm | 1:ab60d7a79df0 | 390 | * NOTE: Relative humidity data (LSB) |
mcm | 1:ab60d7a79df0 | 391 | . * |
mcm | 1:ab60d7a79df0 | 392 | */ |
mcm | 1:ab60d7a79df0 | 393 | typedef enum { |
mcm | 1:ab60d7a79df0 | 394 | HUMIDITY_OUT_H_MASK = 0xFF /*!< Humidity data MSB mask */ |
mcm | 1:ab60d7a79df0 | 395 | } HTS221_humidity_out_h_t; |
mcm | 1:ab60d7a79df0 | 396 | |
mcm | 1:ab60d7a79df0 | 397 | |
mcm | 1:ab60d7a79df0 | 398 | |
mcm | 1:ab60d7a79df0 | 399 | /** |
mcm | 1:ab60d7a79df0 | 400 | * @brief TEMP_OUT_L REGISTER |
mcm | 1:ab60d7a79df0 | 401 | * |
mcm | 1:ab60d7a79df0 | 402 | * NOTE: Temperature data (LSB) |
mcm | 1:ab60d7a79df0 | 403 | . * |
mcm | 1:ab60d7a79df0 | 404 | */ |
mcm | 1:ab60d7a79df0 | 405 | typedef enum { |
mcm | 1:ab60d7a79df0 | 406 | TEMP_OUT_L_MASK = 0xFF /*!< Temperature data LSB mask */ |
mcm | 1:ab60d7a79df0 | 407 | } HTS221_temp_out_l_t; |
mcm | 1:ab60d7a79df0 | 408 | |
mcm | 1:ab60d7a79df0 | 409 | |
mcm | 1:ab60d7a79df0 | 410 | |
mcm | 1:ab60d7a79df0 | 411 | /** |
mcm | 1:ab60d7a79df0 | 412 | * @brief TEMP_OUT_H REGISTER |
mcm | 1:ab60d7a79df0 | 413 | * |
mcm | 1:ab60d7a79df0 | 414 | * NOTE: Temperature data (MSB) |
mcm | 1:ab60d7a79df0 | 415 | . * |
mcm | 1:ab60d7a79df0 | 416 | */ |
mcm | 1:ab60d7a79df0 | 417 | typedef enum { |
mcm | 1:ab60d7a79df0 | 418 | TEMP_OUT_H_MASK = 0xFF /*!< Temperature data MSB mask */ |
mcm | 1:ab60d7a79df0 | 419 | } HTS221_temp_out_h_t; |
mcm | 1:ab60d7a79df0 | 420 | |
mcm | 1:ab60d7a79df0 | 421 | |
mcm | 1:ab60d7a79df0 | 422 | |
mcm | 1:ab60d7a79df0 | 423 | |
mcm | 1:ab60d7a79df0 | 424 | |
mcm | 1:ab60d7a79df0 | 425 | #ifndef HTS221_VECTOR_STRUCT_H |
mcm | 1:ab60d7a79df0 | 426 | #define HTS221_VECTOR_STRUCT_H |
mcm | 1:ab60d7a79df0 | 427 | typedef struct { |
mcm | 1:ab60d7a79df0 | 428 | /* Output registers */ |
mcm | 1:ab60d7a79df0 | 429 | int16_t rawHumidity; /*!< Raw humidity */ |
mcm | 1:ab60d7a79df0 | 430 | int16_t rawTemperature; /*!< Raw temperature */ |
mcm | 1:ab60d7a79df0 | 431 | |
mcm | 1:ab60d7a79df0 | 432 | float humidity; /*!< Humidity value */ |
mcm | 1:ab60d7a79df0 | 433 | float temperature; /*!< Temperature value */ |
mcm | 1:ab60d7a79df0 | 434 | |
mcm | 1:ab60d7a79df0 | 435 | /* Calibration registers */ |
mcm | 1:ab60d7a79df0 | 436 | uint8_t h0_rH_x2; /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 437 | uint8_t h1_rH_x2; /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 438 | uint8_t t0_degC_x8; /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 439 | uint8_t t1_degC_x8; /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 440 | uint8_t t1_T0_msb; /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 441 | int16_t h0_T0_OUT; /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 442 | int16_t h1_T0_OUT; /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 443 | int16_t t0_OUT; /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 444 | int16_t t1_OUT; /*!< Calibration register */ |
mcm | 1:ab60d7a79df0 | 445 | |
mcm | 1:ab60d7a79df0 | 446 | int16_t t0_degC; /*!< Calibration result */ |
mcm | 1:ab60d7a79df0 | 447 | int16_t t1_degC; /*!< Calibration result */ |
mcm | 1:ab60d7a79df0 | 448 | int16_t h0_RH; /*!< Calibration result */ |
mcm | 1:ab60d7a79df0 | 449 | int16_t h1_RH; /*!< Calibration result */ |
mcm | 1:ab60d7a79df0 | 450 | |
mcm | 1:ab60d7a79df0 | 451 | /* Device identification */ |
mcm | 1:ab60d7a79df0 | 452 | uint8_t deviceID; /*!< Device ID */ |
mcm | 1:ab60d7a79df0 | 453 | |
mcm | 1:ab60d7a79df0 | 454 | /* Device configuration */ |
mcm | 1:ab60d7a79df0 | 455 | HTS221_av_config_avgt_t temperatureResolution; /*!< Temperature resolution */ |
mcm | 1:ab60d7a79df0 | 456 | HTS221_av_config_avgh_t humidityResolution; /*!< Humidity resolution */ |
mcm | 1:ab60d7a79df0 | 457 | |
mcm | 1:ab60d7a79df0 | 458 | HTS221_ctrl_reg1_bdu_t bdu; /*!< Block data update */ |
mcm | 1:ab60d7a79df0 | 459 | HTS221_ctrl_reg1_odr_t odr; /*!< Output data rate */ |
mcm | 1:ab60d7a79df0 | 460 | HTS221_ctrl_reg2_boot_t boot; /*!< Reboot mode content */ |
mcm | 1:ab60d7a79df0 | 461 | HTS221_ctrl_reg2_heater_t heater; /*!< Heater */ |
mcm | 1:ab60d7a79df0 | 462 | HTS221_ctrl_reg2_one_shot_t one_shot; /*!< One-Shot */ |
mcm | 1:ab60d7a79df0 | 463 | |
mcm | 1:ab60d7a79df0 | 464 | /* Device status */ |
mcm | 1:ab60d7a79df0 | 465 | HTS221_status_reg_h_da_t h_da; /*!< Humidity data available */ |
mcm | 1:ab60d7a79df0 | 466 | HTS221_status_reg_t_da_t t_da; /*!< Temperature data available */ |
mcm | 1:ab60d7a79df0 | 467 | } HTS221_data_t; |
mcm | 1:ab60d7a79df0 | 468 | #endif |
mcm | 1:ab60d7a79df0 | 469 | |
mcm | 1:ab60d7a79df0 | 470 | |
mcm | 1:ab60d7a79df0 | 471 | /** |
mcm | 1:ab60d7a79df0 | 472 | * @brief INTERNAL CONSTANTS |
mcm | 1:ab60d7a79df0 | 473 | */ |
mcm | 1:ab60d7a79df0 | 474 | typedef enum { |
mcm | 1:ab60d7a79df0 | 475 | HTS221_SUCCESS = 0U, |
mcm | 1:ab60d7a79df0 | 476 | HTS221_FAILURE = 1U, |
mcm | 1:ab60d7a79df0 | 477 | I2C_SUCCESS = 0U /*!< I2C communication was fine */ |
mcm | 1:ab60d7a79df0 | 478 | } HTS221_status_t; |
mcm | 1:ab60d7a79df0 | 479 | |
mcm | 1:ab60d7a79df0 | 480 | |
mcm | 1:ab60d7a79df0 | 481 | |
mcm | 1:ab60d7a79df0 | 482 | |
mcm | 1:ab60d7a79df0 | 483 | /** Create an HTS221 object connected to the specified I2C pins. |
mcm | 1:ab60d7a79df0 | 484 | * |
mcm | 1:ab60d7a79df0 | 485 | * @param sda I2C data pin |
mcm | 1:ab60d7a79df0 | 486 | * @param scl I2C clock pin |
mcm | 1:ab60d7a79df0 | 487 | * @param addr I2C slave address |
mcm | 1:ab60d7a79df0 | 488 | * @param freq I2C frequency |
mcm | 1:ab60d7a79df0 | 489 | */ |
mcm | 1:ab60d7a79df0 | 490 | HTS221 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq ); |
mcm | 1:ab60d7a79df0 | 491 | |
mcm | 1:ab60d7a79df0 | 492 | /** Delete HTS221 object. |
mcm | 1:ab60d7a79df0 | 493 | */ |
mcm | 1:ab60d7a79df0 | 494 | ~HTS221(); |
mcm | 1:ab60d7a79df0 | 495 | |
mcm | 1:ab60d7a79df0 | 496 | /** It gets the device identification. |
mcm | 1:ab60d7a79df0 | 497 | */ |
mcm | 1:ab60d7a79df0 | 498 | HTS221_status_t HTS221_GetDeviceID ( HTS221_data_t* myDeviceID ); |
mcm | 1:ab60d7a79df0 | 499 | |
mcm | 1:ab60d7a79df0 | 500 | /** It sets humidity and temperature resolution mode. |
mcm | 1:ab60d7a79df0 | 501 | */ |
mcm | 1:ab60d7a79df0 | 502 | HTS221_status_t HTS221_SetResolution ( HTS221_data_t myTempHumResolution ); |
mcm | 1:ab60d7a79df0 | 503 | |
mcm | 1:ab60d7a79df0 | 504 | /** It gets humidity and temperature resolution mode. |
mcm | 1:ab60d7a79df0 | 505 | */ |
mcm | 1:ab60d7a79df0 | 506 | HTS221_status_t HTS221_GetResolution ( HTS221_data_t* myTempHumResolution ); |
mcm | 1:ab60d7a79df0 | 507 | |
mcm | 1:ab60d7a79df0 | 508 | /** It sets power-down control mode. |
mcm | 1:ab60d7a79df0 | 509 | */ |
mcm | 1:ab60d7a79df0 | 510 | HTS221_status_t HTS221_SetPowerDown ( HTS221_ctrl_reg1_pd_t myPowerMode ); |
mcm | 1:ab60d7a79df0 | 511 | |
mcm | 1:ab60d7a79df0 | 512 | /** It sets the block data update. |
mcm | 1:ab60d7a79df0 | 513 | */ |
mcm | 1:ab60d7a79df0 | 514 | HTS221_status_t HTS221_SetBlockDataUpdate ( HTS221_data_t myBDU ); |
mcm | 1:ab60d7a79df0 | 515 | |
mcm | 1:ab60d7a79df0 | 516 | /** It gets the block data update. |
mcm | 1:ab60d7a79df0 | 517 | */ |
mcm | 1:ab60d7a79df0 | 518 | HTS221_status_t HTS221_GetBlockDataUpdate ( HTS221_data_t* myBDU ); |
mcm | 1:ab60d7a79df0 | 519 | |
mcm | 1:ab60d7a79df0 | 520 | /** It sets the output data rate ( ODR ). |
mcm | 1:ab60d7a79df0 | 521 | */ |
mcm | 1:ab60d7a79df0 | 522 | HTS221_status_t HTS221_SetOutputDataRate ( HTS221_data_t myODR ); |
mcm | 1:ab60d7a79df0 | 523 | |
mcm | 1:ab60d7a79df0 | 524 | /** It gets the output data rate ( ODR ). |
mcm | 1:ab60d7a79df0 | 525 | */ |
mcm | 1:ab60d7a79df0 | 526 | HTS221_status_t HTS221_GetOutputDataRate ( HTS221_data_t* myODR ); |
mcm | 1:ab60d7a79df0 | 527 | |
mcm | 1:ab60d7a79df0 | 528 | /** It sets reboot memory content. |
mcm | 1:ab60d7a79df0 | 529 | */ |
mcm | 1:ab60d7a79df0 | 530 | HTS221_status_t HTS221_SetBoot ( void ); |
mcm | 1:ab60d7a79df0 | 531 | |
mcm | 1:ab60d7a79df0 | 532 | /** It gets reboot memory content. |
mcm | 1:ab60d7a79df0 | 533 | */ |
mcm | 1:ab60d7a79df0 | 534 | HTS221_status_t HTS221_GetBoot ( HTS221_data_t* myBOOT ); |
mcm | 1:ab60d7a79df0 | 535 | |
mcm | 1:ab60d7a79df0 | 536 | /** It sets heater mode: Enabled/Disabled. |
mcm | 1:ab60d7a79df0 | 537 | */ |
mcm | 1:ab60d7a79df0 | 538 | HTS221_status_t HTS221_SetHeater ( HTS221_data_t myHeater ); |
mcm | 1:ab60d7a79df0 | 539 | |
mcm | 1:ab60d7a79df0 | 540 | /** It gets heater mode. |
mcm | 1:ab60d7a79df0 | 541 | */ |
mcm | 1:ab60d7a79df0 | 542 | HTS221_status_t HTS221_GetHeater ( HTS221_data_t* myHeater ); |
mcm | 1:ab60d7a79df0 | 543 | |
mcm | 1:ab60d7a79df0 | 544 | /** It sets one-shot, new data set. |
mcm | 1:ab60d7a79df0 | 545 | */ |
mcm | 1:ab60d7a79df0 | 546 | HTS221_status_t HTS221_SetOneShot ( void ); |
mcm | 1:ab60d7a79df0 | 547 | |
mcm | 1:ab60d7a79df0 | 548 | /** It gets one-shot flag. |
mcm | 1:ab60d7a79df0 | 549 | */ |
mcm | 1:ab60d7a79df0 | 550 | HTS221_status_t HTS221_GetOneShot ( HTS221_data_t* myOneShot ); |
mcm | 1:ab60d7a79df0 | 551 | |
mcm | 1:ab60d7a79df0 | 552 | /** It sets data ready output signal active high/low. |
mcm | 1:ab60d7a79df0 | 553 | */ |
mcm | 1:ab60d7a79df0 | 554 | HTS221_status_t HTS221_SetDataReadyOuput ( HTS221_ctrl_reg3_drdy_h_l_t myDRDY_H_L ); |
mcm | 1:ab60d7a79df0 | 555 | |
mcm | 1:ab60d7a79df0 | 556 | /** It sets Push-pull/Open Drain selection on pin 3 ( DRDY ). |
mcm | 1:ab60d7a79df0 | 557 | */ |
mcm | 1:ab60d7a79df0 | 558 | HTS221_status_t HTS221_SetSelectionOnPin3 ( HTS221_ctrl_reg3_pp_od_t myDRDY ); |
mcm | 1:ab60d7a79df0 | 559 | |
mcm | 1:ab60d7a79df0 | 560 | /** It sets data ready enable. |
mcm | 1:ab60d7a79df0 | 561 | */ |
mcm | 1:ab60d7a79df0 | 562 | HTS221_status_t HTS221_SetDataReadyEnable ( HTS221_ctrl_reg3_drdy_en_t myDRDY_EN ); |
mcm | 1:ab60d7a79df0 | 563 | |
mcm | 1:ab60d7a79df0 | 564 | /** It gets humidity data available flag. |
mcm | 1:ab60d7a79df0 | 565 | */ |
mcm | 1:ab60d7a79df0 | 566 | HTS221_status_t HTS221_GetHumidityDataAvailable ( HTS221_data_t* myHumidityFlag ); |
mcm | 1:ab60d7a79df0 | 567 | |
mcm | 1:ab60d7a79df0 | 568 | /** It gets temperature data available flag. |
mcm | 1:ab60d7a79df0 | 569 | */ |
mcm | 1:ab60d7a79df0 | 570 | HTS221_status_t HTS221_GetTemperatureDataAvailable ( HTS221_data_t* myTemperatureFlag ); |
mcm | 1:ab60d7a79df0 | 571 | |
mcm | 1:ab60d7a79df0 | 572 | /** It gets raw humidity. |
mcm | 1:ab60d7a79df0 | 573 | */ |
mcm | 1:ab60d7a79df0 | 574 | HTS221_status_t HTS221_GetRawHumidity ( HTS221_data_t* myRawHumidity ); |
mcm | 1:ab60d7a79df0 | 575 | |
mcm | 1:ab60d7a79df0 | 576 | /** It gets raw temperature. |
mcm | 1:ab60d7a79df0 | 577 | */ |
mcm | 1:ab60d7a79df0 | 578 | HTS221_status_t HTS221_GetRawTemperature ( HTS221_data_t* myRawTemperature ); |
mcm | 1:ab60d7a79df0 | 579 | |
mcm | 1:ab60d7a79df0 | 580 | /** It gets calibration coefficients. |
mcm | 1:ab60d7a79df0 | 581 | */ |
mcm | 1:ab60d7a79df0 | 582 | HTS221_status_t HTS221_GetCalibrationCoefficients ( HTS221_data_t* myCoeff ); |
mcm | 1:ab60d7a79df0 | 583 | |
mcm | 1:ab60d7a79df0 | 584 | /** It gets the current temperature value in Celsius degrees. |
mcm | 1:ab60d7a79df0 | 585 | */ |
mcm | 1:ab60d7a79df0 | 586 | HTS221_status_t HTS221_GetTemperature ( HTS221_data_t* myTemperature ); |
mcm | 1:ab60d7a79df0 | 587 | |
mcm | 1:ab60d7a79df0 | 588 | /** It gets the current humidity value. |
mcm | 1:ab60d7a79df0 | 589 | */ |
mcm | 1:ab60d7a79df0 | 590 | HTS221_status_t HTS221_GetHumidity ( HTS221_data_t* myHumidity ); |
mcm | 1:ab60d7a79df0 | 591 | |
mcm | 1:ab60d7a79df0 | 592 | |
mcm | 1:ab60d7a79df0 | 593 | |
mcm | 1:ab60d7a79df0 | 594 | private: |
mcm | 1:ab60d7a79df0 | 595 | I2C _i2c; |
mcm | 1:ab60d7a79df0 | 596 | uint32_t _HTS221_Addr; |
mcm | 1:ab60d7a79df0 | 597 | }; |
mcm | 1:ab60d7a79df0 | 598 | |
mcm | 1:ab60d7a79df0 | 599 | #endif |