hdc1000.h

Interface definition for the HDC1000 sensor driver.

HDC1000_I2C_ADDRESS

Default I2C bus address of HDC1000 devices.

1
(0x43)
HDC1000_CONVERSION_TIME

Typical conversion time needed to acquire new values [in us].

1
(26000)

Note

This time value is chosen twice as large as needed for two 14-bit conversions (worst case) to allow for timer imprecision: (convert temp + convert hum) * 2 -> (6.5ms + 6.5ms) * 2 := 26ms.

enum @122
HDC1000_OK = 0
everything went as expected
HDC1000_NODEV = -1
no HDC1000 device found on the bus
HDC1000_NOBUS = -2
errors while initializing the I2C bus
HDC1000_BUSERR = -3
error during I2C communication
enum hdc1000_res_t
HDC1000_11BIT = (HDC1000_TRES11 | HDC1000_HRES11)
11-bit conversion
HDC1000_14BIT = (HDC1000_TRES14 | HDC1000_HRES14)
14-bit conversion
int hdc1000_init(hdc1000_t * dev, const hdc1000_params_t * params)

Initialize the given HDC1000 device.

Parameters

dev:device descriptor of sensor to initialize
params:configuration parameters

Return values

  • HDC1000_OK on success
  • HDC1000_NOBUS if initialization of I2C bus fails
  • HDC1000_NODEV if no HDC1000 device found on bus
int hdc1000_trigger_conversion(const hdc1000_t * dev)

Trigger a new conversion.

After the conversion is triggered, one has to wait hdc1000.h::HDC1000_CONVERSION_TIME us until the results can be read using hdc1000.h::hdc1000_get_results().

Parameters

dev:device descriptor of sensor

Return values

  • HDC1000_OK on success
  • HDC1000_BUSERR on I2C communication failures
int hdc1000_get_results(const hdc1000_t * dev, int16_t * temp, int16_t * hum)

Read conversion results for temperature and humidity.

Parameters

dev:device descriptor of sensor
temp:temperature [in 100 * degree centigrade]
hum:humidity [in 100 * percent relative]

Return values

  • HDC1000_OK on success
  • HDC1000_BUSERR on I2C communication failures
int hdc1000_read(const hdc1000_t * dev, int16_t * temp, int16_t * hum)

Convenience function for reading temperature and humidity.

This function will trigger a new conversion, wait for the conversion to be finished and the get the results from the device.

Parameters

dev:device descriptor of sensor
temp:temperature [in 100 * degree centigrade]
hum:humidity [in 100 * percent relative]

Return values

  • HDC1000_OK on success
  • HDC1000_BUSERR on I2C communication failures
int hdc1000_read_cached(const hdc1000_t * dev, int16_t * temp, int16_t * hum)

Extended read function including caching capability.

This function will return cached values if they are within the sampling period (HDC1000_RENEW_INTERVAL), or will trigger a new conversion, wait for the conversion to be finished and the get the results from the device.

Parameters

dev:device descriptor of sensor
temp:temperature [in 100 * degree centigrade]
hum:humidity [in 100 * percent relative]

Return values

  • HDC1000_OK on success
  • HDC1000_BUSERR on I2C communication failures
struct hdc1000_params_t

Parameters needed for device initialization.

i2c.h::i2c_t i2c

bus the device is connected to

uint8_t addr

address on that bus

hdc1000.h::hdc1000_res_t res

resolution used for sampling temp and hum

uint32_t renew_interval

interval for cache renewal

struct hdc1000_t

Device descriptor for HDC1000 sensors.

hdc1000_params_t p

Configuration parameters.