Manuel Caballero / HDC2080
Committer:
mcm
Date:
Tue Nov 19 18:54:52 2019 +0000
Revision:
3:d36591d51f4d
Parent:
1:8600f19753b8
The driver was completed and tested ( NUCLEOL476RG ) and it works as expected.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcm 1:8600f19753b8 1 /**
mcm 1:8600f19753b8 2 * @brief HDC2080.h
mcm 1:8600f19753b8 3 * @details Low-Power Humidity and Temperature Digital Sensor.
mcm 1:8600f19753b8 4 * Header file.
mcm 1:8600f19753b8 5 *
mcm 1:8600f19753b8 6 *
mcm 1:8600f19753b8 7 * @return N/A
mcm 1:8600f19753b8 8 *
mcm 1:8600f19753b8 9 * @author Manuel Caballero
mcm 1:8600f19753b8 10 * @date 19/November/2019
mcm 1:8600f19753b8 11 * @version 19/November/2019 The ORIGIN
mcm 1:8600f19753b8 12 * @pre N/A.
mcm 1:8600f19753b8 13 * @warning N/A
mcm 1:8600f19753b8 14 * @pre This code belongs to Nimbus Centre ( https://www.nimbus.cit.ie ).
mcm 1:8600f19753b8 15 */
mcm 1:8600f19753b8 16 #ifndef HDC2080_H
mcm 1:8600f19753b8 17 #define HDC2080_H
mcm 1:8600f19753b8 18
mcm 1:8600f19753b8 19 #include "mbed.h"
mcm 1:8600f19753b8 20
mcm 1:8600f19753b8 21
mcm 1:8600f19753b8 22 /**
mcm 1:8600f19753b8 23 Example:
mcm 1:8600f19753b8 24 @code
mcm 3:d36591d51f4d 25 #include "mbed.h"
mcm 3:d36591d51f4d 26 #include "HDC2080.h"
mcm 1:8600f19753b8 27
mcm 3:d36591d51f4d 28 HDC2080 myHDC2080 ( I2C_SDA, I2C_SCL, HDC2080::HDC2080_ADDRESS_GND, 400000 );
mcm 3:d36591d51f4d 29 Serial pc ( USBTX, USBRX );
mcm 3:d36591d51f4d 30
mcm 3:d36591d51f4d 31 DigitalOut myled ( LED1 );
mcm 3:d36591d51f4d 32 Ticker newReading;
mcm 3:d36591d51f4d 33
mcm 3:d36591d51f4d 34
mcm 3:d36591d51f4d 35 //@brief Variables.
mcm 3:d36591d51f4d 36 uint32_t myState = 0;
mcm 3:d36591d51f4d 37
mcm 3:d36591d51f4d 38 //@brief FUNCTION PROTOTYPES
mcm 3:d36591d51f4d 39 void changeDATA ( void );
mcm 3:d36591d51f4d 40
mcm 3:d36591d51f4d 41
mcm 3:d36591d51f4d 42 //@brief FUNCTION FOR APPLICATION MAIN ENTRY.
mcm 3:d36591d51f4d 43 int main()
mcm 3:d36591d51f4d 44 {
mcm 3:d36591d51f4d 45 HDC2080::HDC2080_data_t myHDC2080_Data;
mcm 3:d36591d51f4d 46 HDC2080::HDC2080_status_t aux;
mcm 3:d36591d51f4d 47
mcm 3:d36591d51f4d 48 pc.baud ( 115200 );
mcm 3:d36591d51f4d 49
mcm 3:d36591d51f4d 50 myled = 1;
mcm 3:d36591d51f4d 51 wait(3);
mcm 3:d36591d51f4d 52 myled = 0;
mcm 3:d36591d51f4d 53
mcm 3:d36591d51f4d 54 // Perform a software reset
mcm 3:d36591d51f4d 55 aux = myHDC2080.HDC2080_SetSoftReset ();
mcm 3:d36591d51f4d 56 do {
mcm 3:d36591d51f4d 57 aux = myHDC2080.HDC2080_GetSoftReset ( &myHDC2080_Data );
mcm 3:d36591d51f4d 58 } while( ( myHDC2080_Data.soft_res & HDC2080::RESET_DRDY_INT_CONF_SOFT_RES_MASK ) == HDC2080::RESET_DRDY_INT_CONF_SOFT_RES_RESET );
mcm 3:d36591d51f4d 59
mcm 3:d36591d51f4d 60 // Get Manufacturer IDs
mcm 3:d36591d51f4d 61 aux = myHDC2080.HDC2080_GetManufacturerID ( &myHDC2080_Data );
mcm 3:d36591d51f4d 62
mcm 3:d36591d51f4d 63 // Get device IDs
mcm 3:d36591d51f4d 64 aux = myHDC2080.HDC2080_GetDeviceID ( &myHDC2080_Data );
mcm 3:d36591d51f4d 65 pc.printf( "Manufacturer ID: %x | Device ID: %x\r\n", myHDC2080_Data.manufacturer_id, myHDC2080_Data.device_id );
mcm 3:d36591d51f4d 66
mcm 3:d36591d51f4d 67 // Auto measurement mode: Disable ( Initiate measurement via I2C )
mcm 3:d36591d51f4d 68 myHDC2080_Data.amm = HDC2080::RESET_DRDY_INT_CONF_AMM_DISABLED;
mcm 3:d36591d51f4d 69 aux = myHDC2080.HDC2080_SetAutoMeasurementMode ( myHDC2080_Data );
mcm 3:d36591d51f4d 70
mcm 3:d36591d51f4d 71 // Heater off
mcm 3:d36591d51f4d 72 myHDC2080_Data.heater_en = HDC2080::RESET_DRDY_INT_CONF_HEAT_EN_OFF;
mcm 3:d36591d51f4d 73 aux = myHDC2080.HDC2080_SetHeaterMode ( myHDC2080_Data );
mcm 3:d36591d51f4d 74
mcm 3:d36591d51f4d 75 // DRDY/INT_EN pin configuration: High Z
mcm 3:d36591d51f4d 76 myHDC2080_Data.drdy_intEn = HDC2080::RESET_DRDY_INT_CONF_DRDY_INT_EN_HIGH_Z;
mcm 3:d36591d51f4d 77 aux = myHDC2080.HDC2080_SetHeaterMode ( myHDC2080_Data );
mcm 3:d36591d51f4d 78
mcm 3:d36591d51f4d 79 // All interrupts are disabled
mcm 3:d36591d51f4d 80 myHDC2080_Data.drdy_enable = HDC2080::INTERRUPT_DRDY_DRDY_ENABLE_INTERRUPT_DISABLE;
mcm 3:d36591d51f4d 81 myHDC2080_Data.th_enable = HDC2080::INTERRUPT_DRDY_TH_ENABLE_INTERRUPT_DISABLE;
mcm 3:d36591d51f4d 82 myHDC2080_Data.tl_enable = HDC2080::INTERRUPT_DRDY_TL_ENABLE_INTERRUPT_DISABLE;
mcm 3:d36591d51f4d 83 myHDC2080_Data.hh_enable = HDC2080::INTERRUPT_DRDY_HH_ENABLE_INTERRUPT_DISABLE;
mcm 3:d36591d51f4d 84 myHDC2080_Data.hl_enable = HDC2080::INTERRUPT_DRDY_HL_ENABLE_INTERRUPT_DISABLE;
mcm 3:d36591d51f4d 85 aux = myHDC2080.HDC2080_SetInterruptConfiguration ( myHDC2080_Data );
mcm 3:d36591d51f4d 86
mcm 3:d36591d51f4d 87 // Measurement configuration: Humidity and Temperature 14-bit resolution. Both measurement enabled
mcm 3:d36591d51f4d 88 myHDC2080_Data.tres = HDC2080::MEASUREMENT_CONF_TRES_14_BIT;
mcm 3:d36591d51f4d 89 myHDC2080_Data.hres = HDC2080::MEASUREMENT_CONF_HRES_14_BIT;
mcm 3:d36591d51f4d 90 myHDC2080_Data.meas_conf = HDC2080::MEASUREMENT_CONF_MEAS_CONF_HUMIDITY_TEMPERATURE;
mcm 3:d36591d51f4d 91 aux = myHDC2080.HDC2080_SetMeasurementConf ( myHDC2080_Data );
mcm 3:d36591d51f4d 92
mcm 3:d36591d51f4d 93 newReading.attach( &changeDATA, 1 ); // the address of the function to be attached ( changeDATA ) and the interval ( 1s )
mcm 3:d36591d51f4d 94
mcm 3:d36591d51f4d 95 // Let the callbacks take care of everything
mcm 3:d36591d51f4d 96 while(1) {
mcm 3:d36591d51f4d 97 sleep();
mcm 3:d36591d51f4d 98
mcm 3:d36591d51f4d 99 myled = 1;
mcm 3:d36591d51f4d 100
mcm 3:d36591d51f4d 101 if ( myState == 1 ) {
mcm 3:d36591d51f4d 102 // Trigegr a new sample
mcm 3:d36591d51f4d 103 aux = myHDC2080.HDC2080_StartMeasurementTrigger ();
mcm 3:d36591d51f4d 104
mcm 3:d36591d51f4d 105 // Wait until the conversion is finished
mcm 3:d36591d51f4d 106 do {
mcm 3:d36591d51f4d 107 aux = myHDC2080.HDC2080_GetMeasurementTrigger ( &myHDC2080_Data );
mcm 3:d36591d51f4d 108 } while( ( myHDC2080_Data.meas_trig & HDC2080::MEASUREMENT_CONF_MEAS_TRIG_MASK ) != HDC2080::MEASUREMENT_CONF_MEAS_TRIG_NO_ACTION ); // [TODO] Dangerous!!! The uC may get stuck here if something goes wrong!
mcm 3:d36591d51f4d 109 // [WORKAROUND] Insert a counter.
mcm 3:d36591d51f4d 110
mcm 3:d36591d51f4d 111 // Get temperature
mcm 3:d36591d51f4d 112 aux = myHDC2080.HDC2080_GetTemperature ( &myHDC2080_Data );
mcm 3:d36591d51f4d 113
mcm 3:d36591d51f4d 114 // Get humidity
mcm 3:d36591d51f4d 115 aux = myHDC2080.HDC2080_GetHumidity ( &myHDC2080_Data );
mcm 3:d36591d51f4d 116
mcm 3:d36591d51f4d 117 // Transmit result over the UART
mcm 3:d36591d51f4d 118 pc.printf( "T: %0.2f C | RH: %0.2f %%\r\n", myHDC2080_Data.temperature, myHDC2080_Data.humidity );
mcm 3:d36591d51f4d 119
mcm 3:d36591d51f4d 120 myState = 0; // Reset the variable
mcm 3:d36591d51f4d 121 }
mcm 3:d36591d51f4d 122
mcm 3:d36591d51f4d 123 myled = 0;
mcm 3:d36591d51f4d 124 }
mcm 3:d36591d51f4d 125 }
mcm 3:d36591d51f4d 126
mcm 3:d36591d51f4d 127 // @brief changeDATA ( void )
mcm 3:d36591d51f4d 128 //
mcm 3:d36591d51f4d 129 // @details It changes myState variable
mcm 3:d36591d51f4d 130 //
mcm 3:d36591d51f4d 131 // @param[in] N/A
mcm 3:d36591d51f4d 132 //
mcm 3:d36591d51f4d 133 // @param[out] N/A.
mcm 3:d36591d51f4d 134 //
mcm 3:d36591d51f4d 135 //
mcm 3:d36591d51f4d 136 // @return N/A.
mcm 3:d36591d51f4d 137 //
mcm 3:d36591d51f4d 138 //
mcm 3:d36591d51f4d 139 // @author Manuel Caballero
mcm 3:d36591d51f4d 140 // @date 19/November/2019
mcm 3:d36591d51f4d 141 // @version 19/November/2019 The ORIGIN
mcm 3:d36591d51f4d 142 // @pre N/A
mcm 3:d36591d51f4d 143 // @warning N/A.
mcm 3:d36591d51f4d 144 void changeDATA ( void )
mcm 3:d36591d51f4d 145 {
mcm 3:d36591d51f4d 146 myState = 1;
mcm 3:d36591d51f4d 147 }
mcm 1:8600f19753b8 148 @endcode
mcm 1:8600f19753b8 149 */
mcm 1:8600f19753b8 150
mcm 1:8600f19753b8 151
mcm 1:8600f19753b8 152 /*!
mcm 1:8600f19753b8 153 Library for the HDC2080 Low-Power Humidity and Temperature Digital Sensor.
mcm 1:8600f19753b8 154 */
mcm 1:8600f19753b8 155 class HDC2080
mcm 1:8600f19753b8 156 {
mcm 1:8600f19753b8 157 public:
mcm 1:8600f19753b8 158 /**
mcm 1:8600f19753b8 159 * @brief DEFAULT ADDRESSES
mcm 1:8600f19753b8 160 */
mcm 1:8600f19753b8 161 typedef enum {
mcm 1:8600f19753b8 162 HDC2080_ADDRESS_GND = ( 0b1000000 << 1U ), /*!< ADDR connected to GND */
mcm 1:8600f19753b8 163 HDC2080_ADDRESS_VDD = ( 0b1000001 << 1U ) /*!< ADDR connected to VDD */
mcm 1:8600f19753b8 164 } HDC2080_addresses_t;
mcm 1:8600f19753b8 165
mcm 1:8600f19753b8 166
mcm 1:8600f19753b8 167
mcm 1:8600f19753b8 168 /**
mcm 1:8600f19753b8 169 * @brief REGISTER MAP
mcm 1:8600f19753b8 170 */
mcm 1:8600f19753b8 171 typedef enum {
mcm 1:8600f19753b8 172 HDC2080_TEMPERATURE_LOW = 0x00, /*!< Temperature [7:0] */
mcm 1:8600f19753b8 173 HDC2080_TEMPERATURE_HIGH = 0x01, /*!< Temperature [15:8] */
mcm 1:8600f19753b8 174 HDC2080_HUMIDITY_LOW = 0x02, /*!< Humidity [7:0] */
mcm 1:8600f19753b8 175 HDC2080_HUMIDITY_HIGH = 0x03, /*!< Humidity [15:8] */
mcm 1:8600f19753b8 176 HDC2080_INTERRUPT_DRDY = 0x04, /*!< DataReady and interrupt configuration */
mcm 1:8600f19753b8 177 HDC2080_TEMPERATURE_MAX = 0x05, /*!< Maximum measured temperature (Not supported in Auto Measurement Mode) */
mcm 1:8600f19753b8 178 HDC2080_HUMIDITY_MAX = 0x06, /*!< Maximum measured humidity (Not supported in Auto Measurement Mode) */
mcm 1:8600f19753b8 179 HDC2080_INTERRUPT_ENABLE = 0x07, /*!< Interrupt Enable */
mcm 1:8600f19753b8 180 HDC2080_TEMP_OFFSET_ADJUST = 0x08, /*!< Temperature offset adjustment */
mcm 1:8600f19753b8 181 HDC2080_HUM_OFFSET_ADJUST = 0x09, /*!< Humidity offset adjustment */
mcm 1:8600f19753b8 182 HDC2080_TEMP_THR_L = 0x0A, /*!< Temperature Threshold Low */
mcm 1:8600f19753b8 183 HDC2080_TEMP_THR_H = 0x0B, /*!< Temperature Threshold High */
mcm 1:8600f19753b8 184 HDC2080_RH_THR_L = 0x0C, /*!< Humidity threshold Low */
mcm 1:8600f19753b8 185 HDC2080_RH_THR_H = 0x0D, /*!< Humidity threshold High */
mcm 1:8600f19753b8 186 HDC2080_RESET_DRDY_INT_CONF = 0x0E, /*!< Soft Reset and Interrupt Configuration */
mcm 1:8600f19753b8 187 HDC2080_MEASUREMENT_CONFIGURATION = 0x0F, /*!< Measurement configuration */
mcm 1:8600f19753b8 188 HDC2080_MANUFACTURER_ID_LOW = 0xFC, /*!< Manufacturer ID Low */
mcm 1:8600f19753b8 189 HDC2080_MANUFACTURER_ID_HIGH = 0xFD, /*!< Manufacturer ID High */
mcm 1:8600f19753b8 190 HDC2080_DEVICE_ID_LOW = 0xFE, /*!< Device ID Low */
mcm 1:8600f19753b8 191 HDC2080_DEVICE_ID_HIGH = 0xFF /*!< Device ID High */
mcm 1:8600f19753b8 192 } HDC2080_register_map_t;
mcm 1:8600f19753b8 193
mcm 1:8600f19753b8 194
mcm 1:8600f19753b8 195
mcm 1:8600f19753b8 196 /**
mcm 1:8600f19753b8 197 * @brief INTERRUPT/DRDY REGISTER
mcm 1:8600f19753b8 198 */
mcm 1:8600f19753b8 199 /* DRDY_STATUS <7>
mcm 1:8600f19753b8 200 * NOTE: DataReady bit status. DRDY_STATUS is cleared to 0 when read.
mcm 1:8600f19753b8 201 */
mcm 1:8600f19753b8 202 typedef enum {
mcm 1:8600f19753b8 203 INTERRUPT_DRDY_DRDY_STATUS_MASK = ( 1U << 7U ), /*!< DRDY_STATUS mask */
mcm 1:8600f19753b8 204 INTERRUPT_DRDY_DRDY_STATUS_DATA_NOT_READY = ( 0U << 7U ), /*!< DRDY_STATUS data not ready */
mcm 1:8600f19753b8 205 INTERRUPT_DRDY_DRDY_STATUS_DATA_READY = ( 1U << 7U ) /*!< DRDY_STATUS data ready */
mcm 1:8600f19753b8 206 } HDC2080_interrupt_drdy_drdy_status_t;
mcm 1:8600f19753b8 207
mcm 1:8600f19753b8 208
mcm 1:8600f19753b8 209 /* TH_STATUS <6>
mcm 1:8600f19753b8 210 * NOTE: Temperature threshold HIGH Interrupt status. TH_STATUS is cleared to 0 when read.
mcm 1:8600f19753b8 211 */
mcm 1:8600f19753b8 212 typedef enum {
mcm 1:8600f19753b8 213 INTERRUPT_DRDY_TH_STATUS_MASK = ( 1U << 6U ), /*!< TH_STATUS mask */
mcm 1:8600f19753b8 214 INTERRUPT_DRDY_TH_STATUS_NO_INTERRUPT = ( 0U << 6U ), /*!< No interrupt */
mcm 1:8600f19753b8 215 INTERRUPT_DRDY_TH_STATUS_INTERRUPT = ( 1U << 6U ) /*!< Interrupt */
mcm 1:8600f19753b8 216 } HDC2080_interrupt_drdy_th_status_t;
mcm 1:8600f19753b8 217
mcm 1:8600f19753b8 218
mcm 1:8600f19753b8 219 /* TL_STATUS <5>
mcm 1:8600f19753b8 220 * NOTE: Temperature threshold LOW Interrupt status. TL_STATUS is cleared to 0 when read.
mcm 1:8600f19753b8 221 */
mcm 1:8600f19753b8 222 typedef enum {
mcm 1:8600f19753b8 223 INTERRUPT_DRDY_TL_STATUS_MASK = ( 1U << 5U ), /*!< TL_STATUS mask */
mcm 1:8600f19753b8 224 INTERRUPT_DRDY_TL_STATUS_NO_INTERRUPT = ( 0U << 5U ), /*!< No interrupt */
mcm 1:8600f19753b8 225 INTERRUPT_DRDY_TL_STATUS_INTERRUPT = ( 1U << 5U ) /*!< Interrupt */
mcm 1:8600f19753b8 226 } HDC2080_interrupt_drdy_tl_status_t;
mcm 1:8600f19753b8 227
mcm 1:8600f19753b8 228
mcm 1:8600f19753b8 229 /* HH_STATUS <4>
mcm 1:8600f19753b8 230 * NOTE: Humidity threshold HIGH Interrupt status. HH_STATUS is cleared to 0 when read.
mcm 1:8600f19753b8 231 */
mcm 1:8600f19753b8 232 typedef enum {
mcm 1:8600f19753b8 233 INTERRUPT_DRDY_HH_STATUS_MASK = ( 1U << 4U ), /*!< HH_STATUS mask */
mcm 1:8600f19753b8 234 INTERRUPT_DRDY_HH_STATUS_NO_INTERRUPT = ( 0U << 4U ), /*!< No interrupt */
mcm 1:8600f19753b8 235 INTERRUPT_DRDY_HH_STATUS_INTERRUPT = ( 1U << 4U ) /*!< Interrupt */
mcm 1:8600f19753b8 236 } HDC2080_interrupt_drdy_hh_status_t;
mcm 1:8600f19753b8 237
mcm 1:8600f19753b8 238
mcm 1:8600f19753b8 239 /* HL_STATUS <3>
mcm 1:8600f19753b8 240 * NOTE: Humidity threshold LOW Interrupt status. HL_STATUS is cleared to 0 when read.
mcm 1:8600f19753b8 241 */
mcm 1:8600f19753b8 242 typedef enum {
mcm 1:8600f19753b8 243 INTERRUPT_DRDY_HL_STATUS_MASK = ( 1U << 3U ), /*!< HL_STATUS mask */
mcm 1:8600f19753b8 244 INTERRUPT_DRDY_HL_STATUS_NO_INTERRUPT = ( 0U << 3U ), /*!< No interrupt */
mcm 1:8600f19753b8 245 INTERRUPT_DRDY_HL_STATUS_INTERRUPT = ( 1U << 3U ) /*!< Interrupt */
mcm 1:8600f19753b8 246 } HDC2080_interrupt_drdy_hl_status_t;
mcm 1:8600f19753b8 247
mcm 1:8600f19753b8 248
mcm 1:8600f19753b8 249
mcm 1:8600f19753b8 250 /**
mcm 1:8600f19753b8 251 * @brief INTERRUPT CONFIGURATION REGISTER
mcm 1:8600f19753b8 252 */
mcm 1:8600f19753b8 253 /* DRDY_STATUS <7>
mcm 1:8600f19753b8 254 * NOTE: DataReady interrupt enable.
mcm 1:8600f19753b8 255 */
mcm 1:8600f19753b8 256 typedef enum {
mcm 1:8600f19753b8 257 INTERRUPT_DRDY_DRDY_ENABLE_MASK = ( 1U << 7U ), /*!< DRDY_ENABLE mask */
mcm 1:8600f19753b8 258 INTERRUPT_DRDY_DRDY_ENABLE_INTERRUPT_DISABLE = ( 0U << 7U ), /*!< DRDY_ENABLE interrupt disable */
mcm 1:8600f19753b8 259 INTERRUPT_DRDY_DRDY_ENABLE_INTERRUPT_ENABLE = ( 1U << 7U ) /*!< DRDY_ENABLE interrupt enable */
mcm 1:8600f19753b8 260 } HDC2080_interrupt_enable_drdy_enable_t;
mcm 1:8600f19753b8 261
mcm 1:8600f19753b8 262
mcm 1:8600f19753b8 263 /* TH_ENABLE <6>
mcm 1:8600f19753b8 264 * NOTE: Temperature threshold HIGH Interrupt enable.
mcm 1:8600f19753b8 265 */
mcm 1:8600f19753b8 266 typedef enum {
mcm 1:8600f19753b8 267 INTERRUPT_DRDY_TH_ENABLE_MASK = ( 1U << 6U ), /*!< TH_ENABLE mask */
mcm 1:8600f19753b8 268 INTERRUPT_DRDY_TH_ENABLE_INTERRUPT_DISABLE = ( 0U << 6U ), /*!< Interrupt disable */
mcm 1:8600f19753b8 269 INTERRUPT_DRDY_TH_ENABLE_INTERRUPT_ENABLE = ( 1U << 6U ), /*!< Interrupt enable */
mcm 1:8600f19753b8 270 } HDC2080_interrupt_enable_th_enable_t;
mcm 1:8600f19753b8 271
mcm 1:8600f19753b8 272
mcm 1:8600f19753b8 273 /* TL_ENABLE <5>
mcm 1:8600f19753b8 274 * NOTE: Temperature threshold LOW Interrupt enable.
mcm 1:8600f19753b8 275 */
mcm 1:8600f19753b8 276 typedef enum {
mcm 1:8600f19753b8 277 INTERRUPT_DRDY_TL_ENABLE_MASK = ( 1U << 5U ), /*!< TL_ENABLE mask */
mcm 1:8600f19753b8 278 INTERRUPT_DRDY_TL_ENABLE_INTERRUPT_DISABLE = ( 0U << 5U ), /*!< Interrupt disable */
mcm 1:8600f19753b8 279 INTERRUPT_DRDY_TL_ENABLE_INTERRUPT_ENABLE = ( 1U << 5U ), /*!< Interrupt enable */
mcm 1:8600f19753b8 280 } HDC2080_interrupt_enable_tl_enable_t;
mcm 1:8600f19753b8 281
mcm 1:8600f19753b8 282
mcm 1:8600f19753b8 283 /* HH_ENABLE <4>
mcm 1:8600f19753b8 284 * NOTE: Humidity threshold HIGH Interrupt enable.
mcm 1:8600f19753b8 285 */
mcm 1:8600f19753b8 286 typedef enum {
mcm 1:8600f19753b8 287 INTERRUPT_DRDY_HH_ENABLE_MASK = ( 1U << 4U ), /*!< HH_ENABLE mask */
mcm 1:8600f19753b8 288 INTERRUPT_DRDY_HH_ENABLE_INTERRUPT_DISABLE = ( 0U << 4U ), /*!< Interrupt disable */
mcm 1:8600f19753b8 289 INTERRUPT_DRDY_HH_ENABLE_INTERRUPT_ENABLE = ( 1U << 4U ), /*!< Interrupt enable */
mcm 1:8600f19753b8 290 } HDC2080_interrupt_enable_hh_enable_t;
mcm 1:8600f19753b8 291
mcm 1:8600f19753b8 292
mcm 1:8600f19753b8 293 /* HL_ENABLE <3>
mcm 1:8600f19753b8 294 * NOTE: Humidity threshold LOW Interrupt enable.
mcm 1:8600f19753b8 295 */
mcm 1:8600f19753b8 296 typedef enum {
mcm 1:8600f19753b8 297 INTERRUPT_DRDY_HL_ENABLE_MASK = ( 1U << 3U ), /*!< HL_ENABLE mask */
mcm 1:8600f19753b8 298 INTERRUPT_DRDY_HL_ENABLE_INTERRUPT_DISABLE = ( 0U << 3U ), /*!< Interrupt disable */
mcm 1:8600f19753b8 299 INTERRUPT_DRDY_HL_ENABLE_INTERRUPT_ENABLE = ( 1U << 3U ), /*!< Interrupt enable */
mcm 1:8600f19753b8 300 } HDC2080_interrupt_enable_hl_enable_t;
mcm 1:8600f19753b8 301
mcm 1:8600f19753b8 302
mcm 1:8600f19753b8 303 /**
mcm 1:8600f19753b8 304 * @brief TEMP_OFFSET_ADJUST REGISTER
mcm 1:8600f19753b8 305 * NOTE: Temperature offset adjustment. Added to the converted temperature value.
mcm 1:8600f19753b8 306 */
mcm 1:8600f19753b8 307 typedef enum {
mcm 1:8600f19753b8 308 TEMP_OFFSET_ADJUST_MASK = 0xFF, /*!< TEMP_OFFSET_ADJUST mask */
mcm 1:8600f19753b8 309 TEMP_OFFSET_ADJUST_MINUS_20_62_C = ( 1U << 7U ), /*!< TEMP_OFFSET_ADJUST: –20.62°C */
mcm 1:8600f19753b8 310 TEMP_OFFSET_ADJUST_10_32_C = ( 1U << 6U ), /*!< TEMP_OFFSET_ADJUST: 10.32°C */
mcm 1:8600f19753b8 311 TEMP_OFFSET_ADJUST_5_16_C = ( 1U << 5U ), /*!< TEMP_OFFSET_ADJUST: 5.16°C */
mcm 1:8600f19753b8 312 TEMP_OFFSET_ADJUST_2_58_C = ( 1U << 4U ), /*!< TEMP_OFFSET_ADJUST: 2.58°C */
mcm 1:8600f19753b8 313 TEMP_OFFSET_ADJUST_1_28_C = ( 1U << 3U ), /*!< TEMP_OFFSET_ADJUST: 1.28°C */
mcm 1:8600f19753b8 314 TEMP_OFFSET_ADJUST_0_64_C = ( 1U << 2U ), /*!< TEMP_OFFSET_ADJUST: 0.64°C */
mcm 1:8600f19753b8 315 TEMP_OFFSET_ADJUST_0_32_C = ( 1U << 1U ), /*!< TEMP_OFFSET_ADJUST: 0.32°C */
mcm 1:8600f19753b8 316 TEMP_OFFSET_ADJUST_0_16_C = ( 1U << 0U ) /*!< TEMP_OFFSET_ADJUST: 0.16°C */
mcm 1:8600f19753b8 317 } HDC2080_temp_offset_adjust_t;
mcm 1:8600f19753b8 318
mcm 1:8600f19753b8 319
mcm 1:8600f19753b8 320 /**
mcm 1:8600f19753b8 321 * @brief HUM_OFFSET_ADJUST REGISTER
mcm 1:8600f19753b8 322 * NOTE: Humidity offset adjustment. Added to the converted Humidity value.
mcm 1:8600f19753b8 323 */
mcm 1:8600f19753b8 324 typedef enum {
mcm 1:8600f19753b8 325 HUM_OFFSET_ADJUST_MASK = 0xFF, /*!< HUM_OFFSET_ADJUST mask */
mcm 1:8600f19753b8 326 HUM_OFFSET_ADJUST_MINUS_25_RH = ( 1U << 7U ), /*!< HUM_OFFSET_ADJUST: –25 %RH */
mcm 1:8600f19753b8 327 HUM_OFFSET_ADJUST_12_5_RH = ( 1U << 6U ), /*!< HUM_OFFSET_ADJUST: 12.5 %RH */
mcm 1:8600f19753b8 328 HUM_OFFSET_ADJUST_6_3_RH = ( 1U << 5U ), /*!< HUM_OFFSET_ADJUST: 6.3 %RH */
mcm 1:8600f19753b8 329 HUM_OFFSET_ADJUST_3_1_RH = ( 1U << 4U ), /*!< HUM_OFFSET_ADJUST: 3.1 %RH */
mcm 1:8600f19753b8 330 HUM_OFFSET_ADJUST_1_6_RH = ( 1U << 3U ), /*!< HUM_OFFSET_ADJUST: 1.6 %RH */
mcm 1:8600f19753b8 331 HUM_OFFSET_ADJUST_0_8_RH = ( 1U << 2U ), /*!< HUM_OFFSET_ADJUST: 0.8 %RH */
mcm 1:8600f19753b8 332 HUM_OFFSET_ADJUST_0_4_RH = ( 1U << 1U ), /*!< HUM_OFFSET_ADJUST: 0.4 %RH */
mcm 1:8600f19753b8 333 HUM_OFFSET_ADJUST_0_2_RH = ( 1U << 0U ) /*!< HUM_OFFSET_ADJUST: 0.2 %RH */
mcm 1:8600f19753b8 334 } HDC2080_hum_offset_adjust_t;
mcm 1:8600f19753b8 335
mcm 1:8600f19753b8 336
mcm 1:8600f19753b8 337
mcm 1:8600f19753b8 338 /**
mcm 1:8600f19753b8 339 * @brief RESET_DRDY_INT_CONF REGISTER
mcm 1:8600f19753b8 340 */
mcm 1:8600f19753b8 341 /* SOFT_RES <7>
mcm 1:8600f19753b8 342 * NOTE: EEPROM value reload and registers reset.
mcm 1:8600f19753b8 343 */
mcm 1:8600f19753b8 344 typedef enum {
mcm 1:8600f19753b8 345 RESET_DRDY_INT_CONF_SOFT_RES_MASK = ( 1U << 7U ), /*!< SOFT_RES mask */
mcm 1:8600f19753b8 346 RESET_DRDY_INT_CONF_SOFT_RES_NORMAL = ( 0U << 7U ), /*!< Normal Operation mode, this bit is self-clear */
mcm 1:8600f19753b8 347 RESET_DRDY_INT_CONF_SOFT_RES_RESET = ( 1U << 7U ) /*!< Soft Reset */
mcm 1:8600f19753b8 348 } HDC2080_reset_drdy_int_conf_soft_res_t;
mcm 1:8600f19753b8 349
mcm 1:8600f19753b8 350
mcm 1:8600f19753b8 351 /* AMM <6:4>
mcm 1:8600f19753b8 352 * NOTE: EEPROM value reload and registers reset.
mcm 1:8600f19753b8 353 */
mcm 1:8600f19753b8 354 typedef enum {
mcm 1:8600f19753b8 355 RESET_DRDY_INT_CONF_AMM_MASK = ( 0b111 << 4U ), /*!< AMM mask */
mcm 1:8600f19753b8 356 RESET_DRDY_INT_CONF_AMM_DISABLED = ( 0b000 << 4U ), /*!< Disabled. Initiate measurement via I2C */
mcm 1:8600f19753b8 357 RESET_DRDY_INT_CONF_AMM_0_008_HZ = ( 0b001 << 4U ), /*!< 1/120Hz (1 samples every 2 minutes) */
mcm 1:8600f19753b8 358 RESET_DRDY_INT_CONF_AMM_0_017_HZ = ( 0b010 << 4U ), /*!< 1/60Hz (1 samples every minute) */
mcm 1:8600f19753b8 359 RESET_DRDY_INT_CONF_AMM_0_1_HZ = ( 0b011 << 4U ), /*!< 0.1Hz (1 samples every 10 seconds) */
mcm 1:8600f19753b8 360 RESET_DRDY_INT_CONF_AMM_0_2_HZ = ( 0b100 << 4U ), /*!< 0.2 Hz (1 samples every 5 second) */
mcm 1:8600f19753b8 361 RESET_DRDY_INT_CONF_AMM_1_HZ = ( 0b101 << 4U ), /*!< 1Hz (1 samples every second) */
mcm 1:8600f19753b8 362 RESET_DRDY_INT_CONF_AMM_2_HZ = ( 0b110 << 4U ), /*!< 2Hz (2 samples every second) */
mcm 1:8600f19753b8 363 RESET_DRDY_INT_CONF_AMM_5_HZ = ( 0b111 << 4U ) /*!< 5Hz (5 samples every second) */
mcm 1:8600f19753b8 364 } HDC2080_reset_drdy_int_conf_amm_t;
mcm 1:8600f19753b8 365
mcm 1:8600f19753b8 366
mcm 1:8600f19753b8 367 /* HEAT_EN <3>
mcm 1:8600f19753b8 368 * NOTE: N/A.
mcm 1:8600f19753b8 369 */
mcm 1:8600f19753b8 370 typedef enum {
mcm 1:8600f19753b8 371 RESET_DRDY_INT_CONF_HEAT_EN_MASK = ( 1U << 3U ), /*!< HEAT_EN mask */
mcm 1:8600f19753b8 372 RESET_DRDY_INT_CONF_HEAT_EN_OFF = ( 0U << 3U ), /*!< Heater off */
mcm 1:8600f19753b8 373 RESET_DRDY_INT_CONF_HEAT_EN_ON = ( 1U << 3U ) /*!< Heater on */
mcm 1:8600f19753b8 374 } HDC2080_reset_drdy_int_conf_heat_en_t;
mcm 1:8600f19753b8 375
mcm 1:8600f19753b8 376
mcm 1:8600f19753b8 377 /* DRDY/INT_EN <2>
mcm 1:8600f19753b8 378 * NOTE: DRDY/INT_EN pin configuration.
mcm 1:8600f19753b8 379 */
mcm 1:8600f19753b8 380 typedef enum {
mcm 1:8600f19753b8 381 RESET_DRDY_INT_CONF_DRDY_INT_EN_MASK = ( 1U << 2U ), /*!< DRDY/INT_EN mask */
mcm 1:8600f19753b8 382 RESET_DRDY_INT_CONF_DRDY_INT_EN_HIGH_Z = ( 0U << 2U ), /*!< High Z */
mcm 1:8600f19753b8 383 RESET_DRDY_INT_CONF_DRDY_INT_EN_ENABLED = ( 1U << 2U ) /*!< Enable */
mcm 1:8600f19753b8 384 } HDC2080_reset_drdy_int_conf_drdr_int_en_t;
mcm 1:8600f19753b8 385
mcm 1:8600f19753b8 386
mcm 1:8600f19753b8 387 /* INT_POL <1>
mcm 1:8600f19753b8 388 * NOTE: Interrupt polarity.
mcm 1:8600f19753b8 389 */
mcm 1:8600f19753b8 390 typedef enum {
mcm 1:8600f19753b8 391 RESET_DRDY_INT_CONF_INT_POL_MASK = ( 1U << 1U ), /*!< INT_POL mask */
mcm 1:8600f19753b8 392 RESET_DRDY_INT_CONF_INT_POL_ACTIVE_LOW = ( 0U << 1U ), /*!< Active Low */
mcm 1:8600f19753b8 393 RESET_DRDY_INT_CONF_INT_POL_ACTIVE_HIGH = ( 1U << 1U ) /*!< Active High */
mcm 1:8600f19753b8 394 } HDC2080_reset_drdy_int_conf_int_pol_t;
mcm 1:8600f19753b8 395
mcm 1:8600f19753b8 396
mcm 1:8600f19753b8 397 /* INT_MODE <0>
mcm 1:8600f19753b8 398 * NOTE: Interrupt mode.
mcm 1:8600f19753b8 399 */
mcm 1:8600f19753b8 400 typedef enum {
mcm 1:8600f19753b8 401 RESET_DRDY_INT_CONF_INT_MODE_MASK = ( 1U << 0U ), /*!< INT_MODE mask */
mcm 1:8600f19753b8 402 RESET_DRDY_INT_CONF_INT_MODE_LEVEL_SENSITIVE = ( 0U << 0U ), /*!< Level sensitive */
mcm 1:8600f19753b8 403 RESET_DRDY_INT_CONF_INT_MODE_COMPARATOR_MODE = ( 1U << 0U ) /*!< Comparator mode */
mcm 1:8600f19753b8 404 } HDC2080_reset_drdy_int_conf_int_mode_t;
mcm 1:8600f19753b8 405
mcm 1:8600f19753b8 406
mcm 1:8600f19753b8 407
mcm 1:8600f19753b8 408 /**
mcm 1:8600f19753b8 409 * @brief MEASUREMENT CONFIGURATION REGISTER
mcm 1:8600f19753b8 410 */
mcm 1:8600f19753b8 411 /* TRES <7:6>
mcm 1:8600f19753b8 412 * NOTE: Temperature resolution.
mcm 1:8600f19753b8 413 */
mcm 1:8600f19753b8 414 typedef enum {
mcm 1:8600f19753b8 415 MEASUREMENT_CONF_TRES_MASK = ( 0b11 << 6U ), /*!< TRES mask */
mcm 1:8600f19753b8 416 MEASUREMENT_CONF_TRES_14_BIT = ( 0b00 << 6U ), /*!< 14 bit */
mcm 1:8600f19753b8 417 MEASUREMENT_CONF_TRES_11_BIT = ( 0b01 << 6U ), /*!< 11 bit */
mcm 1:8600f19753b8 418 MEASUREMENT_CONF_TRES_9_BIT = ( 0b10 << 6U ) /*!< 9 bit */
mcm 1:8600f19753b8 419 } HDC2080_measurement_configuration_tres_t;
mcm 1:8600f19753b8 420
mcm 1:8600f19753b8 421
mcm 1:8600f19753b8 422
mcm 1:8600f19753b8 423 /* HRES <5:4>
mcm 1:8600f19753b8 424 * NOTE: Humidity resolution.
mcm 1:8600f19753b8 425 */
mcm 1:8600f19753b8 426 typedef enum {
mcm 1:8600f19753b8 427 MEASUREMENT_CONF_HRES_MASK = ( 0b11 << 4U ), /*!< HRES mask */
mcm 1:8600f19753b8 428 MEASUREMENT_CONF_HRES_14_BIT = ( 0b00 << 4U ), /*!< 14 bit */
mcm 1:8600f19753b8 429 MEASUREMENT_CONF_HRES_11_BIT = ( 0b01 << 4U ), /*!< 11 bit */
mcm 1:8600f19753b8 430 MEASUREMENT_CONF_HRES_9_BIT = ( 0b10 << 4U ) /*!< 9 bit */
mcm 1:8600f19753b8 431 } HDC2080_measurement_configuration_hres_t;
mcm 1:8600f19753b8 432
mcm 1:8600f19753b8 433
mcm 1:8600f19753b8 434
mcm 1:8600f19753b8 435 /* MEAS_CONF <2:1>
mcm 1:8600f19753b8 436 * NOTE: Measurement configuration.
mcm 1:8600f19753b8 437 */
mcm 1:8600f19753b8 438 typedef enum {
mcm 1:8600f19753b8 439 MEASUREMENT_CONF_MEAS_CONF_MASK = ( 0b11 << 1U ), /*!< MEAS_CONF mask */
mcm 1:8600f19753b8 440 MEASUREMENT_CONF_MEAS_CONF_HUMIDITY_TEMPERATURE = ( 0b00 << 1U ), /*!< Humidity + Temperature */
mcm 1:8600f19753b8 441 MEASUREMENT_CONF_MEAS_CONF_TEMPERATURE_ONLY = ( 0b01 << 1U ) /*!< Temperature only */
mcm 1:8600f19753b8 442 } HDC2080_measurement_configuration_meas_conf_t;
mcm 1:8600f19753b8 443
mcm 1:8600f19753b8 444
mcm 1:8600f19753b8 445
mcm 1:8600f19753b8 446 /* MEAS_TRIG <0>
mcm 1:8600f19753b8 447 * NOTE: Self-clearing bit when measurement completed.
mcm 1:8600f19753b8 448 */
mcm 1:8600f19753b8 449 typedef enum {
mcm 1:8600f19753b8 450 MEASUREMENT_CONF_MEAS_TRIG_MASK = ( 1U << 0U ), /*!< MEAS_TRIG mask */
mcm 1:8600f19753b8 451 MEASUREMENT_CONF_MEAS_TRIG_NO_ACTION = ( 0U << 0U ), /*!< no action */
mcm 1:8600f19753b8 452 MEASUREMENT_CONF_MEAS_TRIG_START_MEASUREMENT = ( 1U << 0U ) /*!< Start measurement */
mcm 1:8600f19753b8 453 } HDC2080_measurement_configuration_meas_trig_t;
mcm 1:8600f19753b8 454
mcm 1:8600f19753b8 455
mcm 1:8600f19753b8 456
mcm 1:8600f19753b8 457 /**
mcm 1:8600f19753b8 458 * @brief MANUFACTURER ID REGISTERS
mcm 1:8600f19753b8 459 */
mcm 1:8600f19753b8 460 typedef enum {
mcm 1:8600f19753b8 461 MANUFACTURER_ID_LOW = 0x49, /*!< MANUFACTURER ID low */
mcm 1:8600f19753b8 462 MANUFACTURER_ID_HIGH = 0x54 /*!< MANUFACTURER ID high */
mcm 1:8600f19753b8 463 } HDC2080_manufacturer_ids_t;
mcm 1:8600f19753b8 464
mcm 1:8600f19753b8 465
mcm 1:8600f19753b8 466
mcm 1:8600f19753b8 467 /**
mcm 1:8600f19753b8 468 * @brief DEVICE ID REGISTERS
mcm 1:8600f19753b8 469 */
mcm 1:8600f19753b8 470 typedef enum {
mcm 1:8600f19753b8 471 DEVICE_ID_LOW = 0xD0, /*!< DEVICE ID low */
mcm 1:8600f19753b8 472 DEVICE_ID_HIGH = 0x07 /*!< DEVICE ID high */
mcm 1:8600f19753b8 473 } HDC2080_device_ids_t;
mcm 1:8600f19753b8 474
mcm 1:8600f19753b8 475
mcm 1:8600f19753b8 476
mcm 1:8600f19753b8 477
mcm 1:8600f19753b8 478
mcm 1:8600f19753b8 479
mcm 1:8600f19753b8 480
mcm 1:8600f19753b8 481 #ifndef HDC2080_VECTOR_STRUCT_H
mcm 1:8600f19753b8 482 #define HDC2080_VECTOR_STRUCT_H
mcm 1:8600f19753b8 483 typedef struct {
mcm 1:8600f19753b8 484 /* Output registers */
mcm 1:8600f19753b8 485 uint16_t rawHumidity; /*!< Raw humidity */
mcm 1:8600f19753b8 486 uint16_t rawTemperature; /*!< Raw temperature */
mcm 1:8600f19753b8 487
mcm 1:8600f19753b8 488 float humidity; /*!< Humidity value */
mcm 1:8600f19753b8 489 float temperature; /*!< Temperature value */
mcm 1:8600f19753b8 490
mcm 1:8600f19753b8 491 uint8_t rawTemperature_max; /*!< Raw temperature max */
mcm 1:8600f19753b8 492 uint8_t rawHumidity_max; /*!< Raw humidity max */
mcm 1:8600f19753b8 493
mcm 1:8600f19753b8 494 /* Offsets */
mcm 1:8600f19753b8 495 uint8_t temp_offset_adjust; /*!< Temperature offset */
mcm 1:8600f19753b8 496 uint8_t hum_offset_adjust; /*!< Humidity offset */
mcm 1:8600f19753b8 497
mcm 1:8600f19753b8 498 /* Interrupt DRDY Field Descriptions */
mcm 1:8600f19753b8 499 uint8_t interrupt_drdy_status; /*!< Interrupt DRDY status */
mcm 1:8600f19753b8 500
mcm 1:8600f19753b8 501 /* Interrupt Configuration Field Descriptions */
mcm 1:8600f19753b8 502 HDC2080_interrupt_enable_drdy_enable_t drdy_enable; /*!< DataReady Interrupt enable */
mcm 1:8600f19753b8 503 HDC2080_interrupt_enable_th_enable_t th_enable; /*!< Temperature threshold HIGH Interrupt enable */
mcm 1:8600f19753b8 504 HDC2080_interrupt_enable_tl_enable_t tl_enable; /*!< Temperature threshold LOW Interrupt enable */
mcm 1:8600f19753b8 505 HDC2080_interrupt_enable_hh_enable_t hh_enable; /*!< Humidity threshold HIGH Interrupt enable */
mcm 1:8600f19753b8 506 HDC2080_interrupt_enable_hl_enable_t hl_enable; /*!< Humidity threshold LOW Interrupt enable */
mcm 1:8600f19753b8 507
mcm 1:8600f19753b8 508 /* Thresholds */
mcm 1:8600f19753b8 509 uint8_t temp_thres_low; /*!< Temperature threshold low */
mcm 1:8600f19753b8 510 uint8_t temp_thres_high; /*!< Temperature threshold low */
mcm 1:8600f19753b8 511 uint8_t hum_thres_low; /*!< Humidity threshold low */
mcm 1:8600f19753b8 512 uint8_t hum_thres_high; /*!< Humidity threshold low */
mcm 1:8600f19753b8 513
mcm 1:8600f19753b8 514 /* Configuration Field Descriptions */
mcm 1:8600f19753b8 515 HDC2080_reset_drdy_int_conf_soft_res_t soft_res; /*!< Soft reset flag */
mcm 1:8600f19753b8 516 HDC2080_reset_drdy_int_conf_amm_t amm; /*!< Auto Measurement Mode */
mcm 1:8600f19753b8 517 HDC2080_reset_drdy_int_conf_heat_en_t heater_en; /*!< Heater Mode */
mcm 1:8600f19753b8 518 HDC2080_reset_drdy_int_conf_drdr_int_en_t drdy_intEn; /*!< DRDY/INT_EN pin configuration */
mcm 1:8600f19753b8 519 HDC2080_reset_drdy_int_conf_int_pol_t int_pol; /*!< Interrupt polarity */
mcm 1:8600f19753b8 520 HDC2080_reset_drdy_int_conf_int_mode_t int_mode; /*!< Interrupt mode */
mcm 1:8600f19753b8 521
mcm 1:8600f19753b8 522 /* Measurement Configuration Field Descriptions */
mcm 1:8600f19753b8 523 HDC2080_measurement_configuration_tres_t tres; /*!< Temperature resolution */
mcm 1:8600f19753b8 524 HDC2080_measurement_configuration_hres_t hres; /*!< Humidity resolution */
mcm 1:8600f19753b8 525 HDC2080_measurement_configuration_meas_conf_t meas_conf; /*!< Measurement configuration */
mcm 1:8600f19753b8 526 HDC2080_measurement_configuration_meas_trig_t meas_trig; /*!< Measurement trigger */
mcm 1:8600f19753b8 527
mcm 1:8600f19753b8 528 /* Device identifications */
mcm 1:8600f19753b8 529 uint16_t manufacturer_id; /*!< Manufacturer ID */
mcm 1:8600f19753b8 530 uint16_t device_id; /*!< Device ID */
mcm 1:8600f19753b8 531 } HDC2080_data_t;
mcm 1:8600f19753b8 532 #endif
mcm 1:8600f19753b8 533
mcm 1:8600f19753b8 534
mcm 1:8600f19753b8 535 /**
mcm 1:8600f19753b8 536 * @brief INTERNAL CONSTANTS
mcm 1:8600f19753b8 537 */
mcm 1:8600f19753b8 538 typedef enum {
mcm 1:8600f19753b8 539 HDC2080_SUCCESS = 0U, /*!< I2C communication success */
mcm 1:8600f19753b8 540 HDC2080_FAILURE = 1U, /*!< I2C communication failure */
mcm 1:8600f19753b8 541 I2C_SUCCESS = 0U /*!< I2C communication was fine */
mcm 1:8600f19753b8 542 } HDC2080_status_t;
mcm 1:8600f19753b8 543
mcm 1:8600f19753b8 544
mcm 1:8600f19753b8 545
mcm 1:8600f19753b8 546
mcm 1:8600f19753b8 547 /** Create an HDC2080 object connected to the specified I2C pins.
mcm 1:8600f19753b8 548 *
mcm 1:8600f19753b8 549 * @param sda I2C data pin
mcm 1:8600f19753b8 550 * @param scl I2C clock pin
mcm 1:8600f19753b8 551 * @param addr I2C slave address
mcm 1:8600f19753b8 552 * @param freq I2C frequency
mcm 1:8600f19753b8 553 */
mcm 1:8600f19753b8 554 HDC2080 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq );
mcm 1:8600f19753b8 555
mcm 1:8600f19753b8 556 /** Delete HDC2080 object.
mcm 1:8600f19753b8 557 */
mcm 1:8600f19753b8 558 ~HDC2080();
mcm 1:8600f19753b8 559
mcm 1:8600f19753b8 560 /** It gets the raw temperature.
mcm 1:8600f19753b8 561 */
mcm 1:8600f19753b8 562 HDC2080_status_t HDC2080_GetRawTemperature ( HDC2080_data_t* myRawTemperature );
mcm 1:8600f19753b8 563
mcm 1:8600f19753b8 564 /** It gets the current temperature.
mcm 1:8600f19753b8 565 */
mcm 1:8600f19753b8 566 HDC2080_status_t HDC2080_GetTemperature ( HDC2080_data_t* myTemperature );
mcm 1:8600f19753b8 567
mcm 1:8600f19753b8 568 /** It gets the raw humidity.
mcm 1:8600f19753b8 569 */
mcm 1:8600f19753b8 570 HDC2080_status_t HDC2080_GetRawHumidity ( HDC2080_data_t* myRawHumidity );
mcm 1:8600f19753b8 571
mcm 1:8600f19753b8 572 /** It gets the current humidity.
mcm 1:8600f19753b8 573 */
mcm 1:8600f19753b8 574 HDC2080_status_t HDC2080_GetHumidity ( HDC2080_data_t* myHumidity );
mcm 1:8600f19753b8 575
mcm 1:8600f19753b8 576 /** It gets the interrupt DRDY status.
mcm 1:8600f19753b8 577 */
mcm 1:8600f19753b8 578 HDC2080_status_t HDC2080_GetInterrupt_DRDY_Status ( HDC2080_data_t* myStatus );
mcm 1:8600f19753b8 579
mcm 1:8600f19753b8 580 /** It writes the temperature max register ( raw value ).
mcm 1:8600f19753b8 581 */
mcm 1:8600f19753b8 582 HDC2080_status_t HDC2080_ConfTemperatureMax ( HDC2080_data_t myTemperatureMax );
mcm 1:8600f19753b8 583
mcm 1:8600f19753b8 584 /** It writes the humidity max register ( raw value ).
mcm 1:8600f19753b8 585 */
mcm 1:8600f19753b8 586 HDC2080_status_t HDC2080_ConfHumidityMax ( HDC2080_data_t myHumidityMax );
mcm 1:8600f19753b8 587
mcm 1:8600f19753b8 588 /** It sets the interrupt configuration.
mcm 1:8600f19753b8 589 */
mcm 1:8600f19753b8 590 HDC2080_status_t HDC2080_SetInterruptConfiguration ( HDC2080_data_t myIntConfiguration );
mcm 1:8600f19753b8 591
mcm 1:8600f19753b8 592 /** It gets the interrupt configuration.
mcm 1:8600f19753b8 593 */
mcm 1:8600f19753b8 594 HDC2080_status_t HDC2080_GetInterruptConfiguration ( HDC2080_data_t* myIntConfiguration );
mcm 1:8600f19753b8 595
mcm 1:8600f19753b8 596 /** It sets the temperature offset.
mcm 1:8600f19753b8 597 */
mcm 1:8600f19753b8 598 HDC2080_status_t HDC2080_SetTemperatureOffset ( HDC2080_data_t myTemperatureOffset );
mcm 1:8600f19753b8 599
mcm 1:8600f19753b8 600 /** It gets the temperature offset ( raw value ).
mcm 1:8600f19753b8 601 */
mcm 1:8600f19753b8 602 HDC2080_status_t HDC2080_GetTemperatureOffset ( HDC2080_data_t* myTemperatureOffset );
mcm 1:8600f19753b8 603
mcm 1:8600f19753b8 604 /** It sets the humidity offset.
mcm 1:8600f19753b8 605 */
mcm 1:8600f19753b8 606 HDC2080_status_t HDC2080_SetHumidityOffset ( HDC2080_data_t myHumidityOffset );
mcm 1:8600f19753b8 607
mcm 1:8600f19753b8 608 /** It gets the humidity offset ( raw value ).
mcm 1:8600f19753b8 609 */
mcm 1:8600f19753b8 610 HDC2080_status_t HDC2080_GetHumidityOffset ( HDC2080_data_t* myHumidityOffset );
mcm 1:8600f19753b8 611
mcm 1:8600f19753b8 612 /** It sets the temperature threshold low value ( raw value ).
mcm 1:8600f19753b8 613 */
mcm 1:8600f19753b8 614 HDC2080_status_t HDC2080_SetTemperatureThresLow ( HDC2080_data_t myTempThresLow );
mcm 1:8600f19753b8 615
mcm 1:8600f19753b8 616 /** It gets the temperature threshold low value ( raw value ).
mcm 1:8600f19753b8 617 */
mcm 1:8600f19753b8 618 HDC2080_status_t HDC2080_GetTemperatureThresLow ( HDC2080_data_t* myTempThresLow );
mcm 1:8600f19753b8 619
mcm 1:8600f19753b8 620 /** It sets the temperature threshold high value ( raw value ).
mcm 1:8600f19753b8 621 */
mcm 1:8600f19753b8 622 HDC2080_status_t HDC2080_SetTemperatureThresHigh ( HDC2080_data_t myTempThresLow );
mcm 1:8600f19753b8 623
mcm 1:8600f19753b8 624 /** It gets the temperature threshold high value ( raw value ).
mcm 1:8600f19753b8 625 */
mcm 1:8600f19753b8 626 HDC2080_status_t HDC2080_GetTemperatureThresHigh ( HDC2080_data_t* myTempThresHigh );
mcm 1:8600f19753b8 627
mcm 1:8600f19753b8 628 /** It sets the humidity threshold low value ( raw value ).
mcm 1:8600f19753b8 629 */
mcm 1:8600f19753b8 630 HDC2080_status_t HDC2080_SetHumidityThresLow ( HDC2080_data_t myHumThresLow );
mcm 1:8600f19753b8 631
mcm 1:8600f19753b8 632 /** It gets the humidity threshold low value ( raw value ).
mcm 1:8600f19753b8 633 */
mcm 1:8600f19753b8 634 HDC2080_status_t HDC2080_GetHumidityThresLow ( HDC2080_data_t* myHumThresLow );
mcm 1:8600f19753b8 635
mcm 1:8600f19753b8 636 /** It sets the humidity threshold high value ( raw value ).
mcm 1:8600f19753b8 637 */
mcm 1:8600f19753b8 638 HDC2080_status_t HDC2080_SetHumidityThresHigh ( HDC2080_data_t myHumThresLow );
mcm 1:8600f19753b8 639
mcm 1:8600f19753b8 640 /** It gets the humidity threshold high value ( raw value ).
mcm 1:8600f19753b8 641 */
mcm 1:8600f19753b8 642 HDC2080_status_t HDC2080_GetHumidityThresHigh ( HDC2080_data_t* myHumThresLow );
mcm 1:8600f19753b8 643
mcm 1:8600f19753b8 644 /** It makes a soft reset.
mcm 1:8600f19753b8 645 */
mcm 1:8600f19753b8 646 HDC2080_status_t HDC2080_SetSoftReset ( void );
mcm 1:8600f19753b8 647
mcm 1:8600f19753b8 648 /** It checks the soft reset flag.
mcm 1:8600f19753b8 649 */
mcm 1:8600f19753b8 650 HDC2080_status_t HDC2080_GetSoftReset ( HDC2080_data_t* mySoftResetFlag );
mcm 1:8600f19753b8 651
mcm 1:8600f19753b8 652 /** It sets auto measurement mode ( AMM ).
mcm 1:8600f19753b8 653 */
mcm 1:8600f19753b8 654 HDC2080_status_t HDC2080_SetAutoMeasurementMode ( HDC2080_data_t myAMM );
mcm 1:8600f19753b8 655
mcm 1:8600f19753b8 656 /** It gets auto measurement mode ( AMM ).
mcm 1:8600f19753b8 657 */
mcm 1:8600f19753b8 658 HDC2080_status_t HDC2080_GetAutoMeasurementMode ( HDC2080_data_t* myAMM );
mcm 1:8600f19753b8 659
mcm 1:8600f19753b8 660 /** It sets the heater.
mcm 1:8600f19753b8 661 */
mcm 1:8600f19753b8 662 HDC2080_status_t HDC2080_SetHeaterMode ( HDC2080_data_t myHeatEn );
mcm 1:8600f19753b8 663
mcm 1:8600f19753b8 664 /** It gets the heater status.
mcm 1:8600f19753b8 665 */
mcm 1:8600f19753b8 666 HDC2080_status_t HDC2080_GetHeaterMode ( HDC2080_data_t* myHeatEn );
mcm 1:8600f19753b8 667
mcm 1:8600f19753b8 668 /** It sets the DRDY/INT_EN pin configuration.
mcm 1:8600f19753b8 669 */
mcm 1:8600f19753b8 670 HDC2080_status_t HDC2080_SetPinConfifuration ( HDC2080_data_t myPinConfiguration );
mcm 1:8600f19753b8 671
mcm 1:8600f19753b8 672 /** It gets the DRDY/INT_EN pin configuration.
mcm 1:8600f19753b8 673 */
mcm 1:8600f19753b8 674 HDC2080_status_t HDC2080_GetPinConfiguration ( HDC2080_data_t* myPinConfiguration );
mcm 1:8600f19753b8 675
mcm 1:8600f19753b8 676 /** It sets the interrupt polarity.
mcm 1:8600f19753b8 677 */
mcm 1:8600f19753b8 678 HDC2080_status_t HDC2080_SetInterruptPolarity ( HDC2080_data_t myIntPol );
mcm 1:8600f19753b8 679
mcm 1:8600f19753b8 680 /** It gets the interrupt polarity.
mcm 1:8600f19753b8 681 */
mcm 1:8600f19753b8 682 HDC2080_status_t HDC2080_GetInterruptPolarity ( HDC2080_data_t* myIntPol );
mcm 1:8600f19753b8 683
mcm 1:8600f19753b8 684 /** It sets the interrupt mode.
mcm 1:8600f19753b8 685 */
mcm 1:8600f19753b8 686 HDC2080_status_t HDC2080_SetInterruptMode ( HDC2080_data_t myIntMode );
mcm 1:8600f19753b8 687
mcm 1:8600f19753b8 688 /** It gets the interrupt mode.
mcm 1:8600f19753b8 689 */
mcm 1:8600f19753b8 690 HDC2080_status_t HDC2080_GetInterruptMode ( HDC2080_data_t* myIntMode );
mcm 1:8600f19753b8 691
mcm 1:8600f19753b8 692 /** It sets the measurement configuration.
mcm 1:8600f19753b8 693 */
mcm 1:8600f19753b8 694 HDC2080_status_t HDC2080_SetMeasurementConf ( HDC2080_data_t myMeasConf );
mcm 1:8600f19753b8 695
mcm 1:8600f19753b8 696 /** It gets the measurement configuration.
mcm 1:8600f19753b8 697 */
mcm 1:8600f19753b8 698 HDC2080_status_t HDC2080_GetMeasurementConf ( HDC2080_data_t* myMeasConf );
mcm 1:8600f19753b8 699
mcm 1:8600f19753b8 700 /** It triggers a new measurement.
mcm 1:8600f19753b8 701 */
mcm 1:8600f19753b8 702 HDC2080_status_t HDC2080_StartMeasurementTrigger ( void );
mcm 1:8600f19753b8 703
mcm 1:8600f19753b8 704 /** It gets the measurement trigger flag.
mcm 1:8600f19753b8 705 */
mcm 1:8600f19753b8 706 HDC2080_status_t HDC2080_GetMeasurementTrigger ( HDC2080_data_t* myMeasTrig );
mcm 1:8600f19753b8 707
mcm 1:8600f19753b8 708 /** It gets the manufacturer ID.
mcm 1:8600f19753b8 709 */
mcm 1:8600f19753b8 710 HDC2080_status_t HDC2080_GetManufacturerID ( HDC2080_data_t* myManufacturerID );
mcm 1:8600f19753b8 711
mcm 1:8600f19753b8 712 /** It gets the device ID.
mcm 1:8600f19753b8 713 */
mcm 1:8600f19753b8 714 HDC2080_status_t HDC2080_GetDeviceID ( HDC2080_data_t* myDeviceID );
mcm 1:8600f19753b8 715
mcm 1:8600f19753b8 716
mcm 1:8600f19753b8 717 private:
mcm 1:8600f19753b8 718 I2C _i2c;
mcm 1:8600f19753b8 719 uint32_t _HDC2080_Addr;
mcm 1:8600f19753b8 720 };
mcm 1:8600f19753b8 721
mcm 1:8600f19753b8 722 #endif