Go to the documentation of this file.
28 #ifndef ENVIRONMENT3_H
29 #define ENVIRONMENT3_H
39 #ifdef PREINIT_SUPPORTED
43 #ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49 #include "drv_digital_out.h"
50 #include "drv_digital_in.h"
51 #include "drv_i2c_master.h"
52 #include "drv_spi_master.h"
74 #define ENVIRONMENT3_REG_STATUS 0x73
75 #define ENVIRONMENT3_REG_VARIANT_ID 0xF0
76 #define ENVIRONMENT3_REG_RESET 0xE0
77 #define ENVIRONMENT3_REG_CHIP_ID 0xD0
78 #define ENVIRONMENT3_REG_CONFIG 0x75
79 #define ENVIRONMENT3_REG_CTRL_MEAS 0x74
80 #define ENVIRONMENT3_REG_CTRL_HUM 0x72
81 #define ENVIRONMENT3_REG_CTRL_GAS_1 0x71
82 #define ENVIRONMENT3_REG_CTRL_GAS_0 0x70
83 #define ENVIRONMENT3_REG_GAS_WAIT_SHARED 0x6E
84 #define ENVIRONMENT3_REG_GAS_WAIT_0 0x64
85 #define ENVIRONMENT3_REG_RES_HEAT_0 0x5A
86 #define ENVIRONMENT3_REG_IDAC_HEAT_0 0x50
87 #define ENVIRONMENT3_REG_GAS_R_LSB_FIELD_2 0x4F
88 #define ENVIRONMENT3_REG_GAS_R_MSB_FIELD_2 0x4E
89 #define ENVIRONMENT3_REG_HUM_LSB_FIELD_2 0x48
90 #define ENVIRONMENT3_REG_HUM_MSB_FIELD_2 0x47
91 #define ENVIRONMENT3_REG_TEMP_XLSB_FIELD_2 0x46
92 #define ENVIRONMENT3_REG_TEMP_LSB_FIELD_2 0x45
93 #define ENVIRONMENT3_REG_TEMP_MSB_FIELD_2 0x44
94 #define ENVIRONMENT3_REG_PRESS_XLSB_FIELD_2 0x43
95 #define ENVIRONMENT3_REG_PRESS_LSB_FIELD_2 0x42
96 #define ENVIRONMENT3_REG_PRESS_MSB_FIELD_2 0x41
97 #define ENVIRONMENT3_REG_SUB_MEAS_INDEX_FIELD_2 0x40
98 #define ENVIRONMENT3_REG_MEAS_STATUS_FIELD_2 0x3F
99 #define ENVIRONMENT3_REG_GAS_R_LSB_FIELD_1 0x3E
100 #define ENVIRONMENT3_REG_GAS_R_MSB_FIELD_1 0x3D
101 #define ENVIRONMENT3_REG_HUM_LSB_FIELD_1 0x37
102 #define ENVIRONMENT3_REG_HUM_MSB_FIELD_1 0x36
103 #define ENVIRONMENT3_REG_TEMP_XLSB_FIELD_1 0x35
104 #define ENVIRONMENT3_REG_TEMP_LSB_FIELD_1 0x34
105 #define ENVIRONMENT3_REG_TEMP_MSB_FIELD_1 0x33
106 #define ENVIRONMENT3_REG_PRESS_XLSB_FIELD_1 0x32
107 #define ENVIRONMENT3_REG_PRESS_LSB_FIELD_1 0x31
108 #define ENVIRONMENT3_REG_PRESS_MSB_FIELD_1 0x30
109 #define ENVIRONMENT3_REG_SUB_MEAS_INDEX_FIELD_1 0x2F
110 #define ENVIRONMENT3_REG_MEAS_STATUS_FIELD_1 0x2E
111 #define ENVIRONMENT3_REG_GAS_R_LSB_FIELD_0 0x2D
112 #define ENVIRONMENT3_REG_GAS_R_MSB_FIELD_0 0x2C
113 #define ENVIRONMENT3_REG_HUM_LSB_FIELD_0 0x26
114 #define ENVIRONMENT3_REG_HUM_MSB_FIELD_0 0x25
115 #define ENVIRONMENT3_REG_TEMP_XLSB_FIELD_0 0x24
116 #define ENVIRONMENT3_REG_TEMP_LSB_FIELD_0 0x23
117 #define ENVIRONMENT3_REG_TEMP_MSB_FIELD_0 0x22
118 #define ENVIRONMENT3_REG_PRESS_XLSB_FIELD_0 0x21
119 #define ENVIRONMENT3_REG_PRESS_LSB_FIELD_0 0x20
120 #define ENVIRONMENT3_REG_PRESS_MSB_FIELD_0 0x1F
121 #define ENVIRONMENT3_REG_SUB_MEAS_INDEX_FIELD_0 0x1E
122 #define ENVIRONMENT3_REG_MEAS_STATUS_FIELD_0 0x1D
123 #define ENVIRONMENT3_REG_MEM_PAGE 0xF3
124 #define ENVIRONMENT3_REG_UNIQUE_ID 0x83
125 #define ENVIRONMENT3_REG_COEFF_1 0x8A
126 #define ENVIRONMENT3_REG_COEFF_2 0xE1
127 #define ENVIRONMENT3_REG_COEFF_3 0x00
145 #define ENVIRONMENT3_CHIP_ID 0x61
151 #define ENVIRONMENT3_SOFT_RESET 0xB6
157 #define ENVIRONMENT3_E_NULL_PTR -2
158 #define ENVIRONMENT3_E_COM_FAIL -3
159 #define ENVIRONMENT3_E_INVALID_LENGTH -4
160 #define ENVIRONMENT3_W_DEFINE_OP_MODE 1
161 #define ENVIRONMENT3_W_NO_NEW_DATA 2
167 #define ENVIRONMENT3_NBCONV_MASK 0x0F
168 #define ENVIRONMENT3_FILTER_MASK 0x1C
169 #define ENVIRONMENT3_ODR3_MASK 0x80
170 #define ENVIRONMENT3_ODR20_MASK 0xE0
171 #define ENVIRONMENT3_OST_MASK 0xE0
172 #define ENVIRONMENT3_OSP_MASK 0x1C
173 #define ENVIRONMENT3_OSH_MASK 0x07
174 #define ENVIRONMENT3_HCTRL_MASK 0x08
175 #define ENVIRONMENT3_RUN_GAS_MASK 0x30
176 #define ENVIRONMENT3_MODE_MASK 0x03
177 #define ENVIRONMENT3_RHRANGE_MASK 0x30
178 #define ENVIRONMENT3_RSERROR_MASK 0xF0
179 #define ENVIRONMENT3_NEW_DATA_MASK 0x80
180 #define ENVIRONMENT3_GAS_INDEX_MASK 0x0F
181 #define ENVIRONMENT3_GAS_RANGE_MASK 0x0F
182 #define ENVIRONMENT3_GASM_VALID_MASK 0x20
183 #define ENVIRONMENT3_HEAT_STAB_MASK 0x10
184 #define ENVIRONMENT3_MEM_PAGE_MASK 0x10
185 #define ENVIRONMENT3_BIT_H1_DATA_MASK 0x0F
186 #define ENVIRONMENT3_HUM_REG_SHIFT_VAL_MASK 0x04
187 #define ENVIRONMENT3_SPI_READ_MASK 0x80
188 #define ENVIRONMENT3_SPI_WRITE_MASK 0x7F
194 #define ENVIRONMENT3_FILTER_POS 2
195 #define ENVIRONMENT3_OST_POS 5
196 #define ENVIRONMENT3_OSP_POS 2
197 #define ENVIRONMENT3_ODR3_POS 7
198 #define ENVIRONMENT3_ODR20_POS 5
199 #define ENVIRONMENT3_RUN_GAS_POS 4
200 #define ENVIRONMENT3_HCTRL_POS 3
206 #define ENVIRONMENT3_ENABLE 0x01
207 #define ENVIRONMENT3_DISABLE 0x00
208 #define ENVIRONMENT3_ENABLE_HEATER 0x00
209 #define ENVIRONMENT3_DISABLE_HEATER 0x01
210 #define ENVIRONMENT3_ENABLE_GAS_MEAS_H 0x02
211 #define ENVIRONMENT3_ENABLE_GAS_MEAS_L 0x01
212 #define ENVIRONMENT3_DISABLE_GAS_MEAS 0x00
218 #define ENVIRONMENT3_VARIANT_GAS_LOW 0x00
219 #define ENVIRONMENT3_VARIANT_GAS_HIGH 0x01
225 #define ENVIRONMENT3_OS_NONE 0
226 #define ENVIRONMENT3_OS_1X 1
227 #define ENVIRONMENT3_OS_2X 2
228 #define ENVIRONMENT3_OS_4X 3
229 #define ENVIRONMENT3_OS_8X 4
230 #define ENVIRONMENT3_OS_16X 5
236 #define ENVIRONMENT3_FILTER_OFF 0
237 #define ENVIRONMENT3_FILTER_SIZE_1 1
238 #define ENVIRONMENT3_FILTER_SIZE_3 2
239 #define ENVIRONMENT3_FILTER_SIZE_7 3
240 #define ENVIRONMENT3_FILTER_SIZE_15 4
241 #define ENVIRONMENT3_FILTER_SIZE_31 5
242 #define ENVIRONMENT3_FILTER_SIZE_63 6
243 #define ENVIRONMENT3_FILTER_SIZE_127 7
249 #define ENVIRONMENT3_ODR_0_59_MS 0
250 #define ENVIRONMENT3_ODR_62_5_MS 1
251 #define ENVIRONMENT3_ODR_125_MS 2
252 #define ENVIRONMENT3_ODR_250_MS 3
253 #define ENVIRONMENT3_ODR_500_MS 4
254 #define ENVIRONMENT3_ODR_1000_MS 5
255 #define ENVIRONMENT3_ODR_10_MS 6
256 #define ENVIRONMENT3_ODR_20_MS 7
257 #define ENVIRONMENT3_ODR_NONE 8
263 #define ENVIRONMENT3_MODE_SLEEP 0
264 #define ENVIRONMENT3_MODE_FORCED 1
270 #define ENVIRONMENT3_MEM_PAGE_0 0x10
271 #define ENVIRONMENT3_MEM_PAGE_1 0x00
277 #define ENVIRONMENT3_LEN_COEFF_ALL 42
278 #define ENVIRONMENT3_LEN_COEFF_1 23
279 #define ENVIRONMENT3_LEN_COEFF_2 14
280 #define ENVIRONMENT3_LEN_COEFF_3 5
281 #define ENVIRONMENT3_LEN_FIELD 17
282 #define ENVIRONMENT3_LEN_CONFIG 5
283 #define ENVIRONMENT3_LEN_INTERLEAVE_BUFF 20
289 #define ENVIRONMENT3_IDX_T2_LSB 0
290 #define ENVIRONMENT3_IDX_T2_MSB 1
291 #define ENVIRONMENT3_IDX_T3 2
292 #define ENVIRONMENT3_IDX_P1_LSB 4
293 #define ENVIRONMENT3_IDX_P1_MSB 5
294 #define ENVIRONMENT3_IDX_P2_LSB 6
295 #define ENVIRONMENT3_IDX_P2_MSB 7
296 #define ENVIRONMENT3_IDX_P3 8
297 #define ENVIRONMENT3_IDX_P4_LSB 10
298 #define ENVIRONMENT3_IDX_P4_MSB 11
299 #define ENVIRONMENT3_IDX_P5_LSB 12
300 #define ENVIRONMENT3_IDX_P5_MSB 13
301 #define ENVIRONMENT3_IDX_P7 14
302 #define ENVIRONMENT3_IDX_P6 15
303 #define ENVIRONMENT3_IDX_P8_LSB 18
304 #define ENVIRONMENT3_IDX_P8_MSB 19
305 #define ENVIRONMENT3_IDX_P9_LSB 20
306 #define ENVIRONMENT3_IDX_P9_MSB 21
307 #define ENVIRONMENT3_IDX_P10 22
308 #define ENVIRONMENT3_IDX_H2_MSB 23
309 #define ENVIRONMENT3_IDX_H2_LSB 24
310 #define ENVIRONMENT3_IDX_H1_LSB 24
311 #define ENVIRONMENT3_IDX_H1_MSB 25
312 #define ENVIRONMENT3_IDX_H3 26
313 #define ENVIRONMENT3_IDX_H4 27
314 #define ENVIRONMENT3_IDX_H5 28
315 #define ENVIRONMENT3_IDX_H6 29
316 #define ENVIRONMENT3_IDX_H7 30
317 #define ENVIRONMENT3_IDX_T1_LSB 31
318 #define ENVIRONMENT3_IDX_T1_MSB 32
319 #define ENVIRONMENT3_IDX_GH2_LSB 33
320 #define ENVIRONMENT3_IDX_GH2_MSB 34
321 #define ENVIRONMENT3_IDX_GH1 35
322 #define ENVIRONMENT3_IDX_GH3 36
323 #define ENVIRONMENT3_IDX_RES_HEAT_VAL 37
324 #define ENVIRONMENT3_IDX_RES_HEAT_RANGE 39
325 #define ENVIRONMENT3_IDX_RANGE_SW_ERR 41
332 #define ENVIRONMENT3_DEVICE_SLAVE_ADDR_0 0x76
333 #define ENVIRONMENT3_DEVICE_SLAVE_ADDR_1 0x77
351 #define ENVIRONMENT3_MAP_MIKROBUS( cfg, mikrobus ) \
352 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
353 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
354 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
355 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
356 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
357 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
844 #endif // ENVIRONMENT3_H
int8_t environment3_set_operating_mode(environment3_t *ctx, uint8_t op_mode)
Environment 3 set operating mode function.
int16_t par_gh2
Definition: environment3.h:412
float temperature
Definition: environment3.h:391
int8_t range_sw_err
Definition: environment3.h:430
uint8_t gas_index
Definition: environment3.h:386
uint8_t slave_address
Definition: environment3.h:469
spi_master_mode_t spi_mode
Definition: environment3.h:503
uint8_t environment3_read_byte(environment3_t *ctx, uint8_t reg)
Environment 3 single data reading function.
uint8_t enable
Definition: environment3.h:454
int8_t par_h7
Definition: environment3.h:410
int16_t par_p9
Definition: environment3.h:425
uint8_t status
Definition: environment3.h:385
void environment3_drv_interface_selection(environment3_cfg_t *cfg, environment3_drv_t drv_sel)
Environment 3 driver interface setup function.
int8_t environment3_soft_reset(environment3_t *ctx)
Environment 3 soft reset function.
pin_name_t miso
Definition: environment3.h:494
uint8_t filter
Definition: environment3.h:443
int16_t par_p2
Definition: environment3.h:418
uint8_t i2c_address
Definition: environment3.h:500
int8_t par_h3
Definition: environment3.h:406
err_t(* environment3_master_io_t)(struct environment3_s *, uint8_t, uint8_t *, uint8_t)
Environment 3 Click driver interface.
Definition: environment3.h:377
float environment3_get_humidity(environment3_t *ctx)
Environment 3 get humidity data function.
uint8_t par_p10
Definition: environment3.h:426
Environment 3 Click context object.
Definition: environment3.h:465
pin_name_t cs
Definition: environment3.h:497
uint16_t par_h2
Definition: environment3.h:405
environment3_master_io_t write_f
Definition: environment3.h:473
i2c_master_t i2c
Definition: environment3.h:466
environment3_drv_t drv_sel
Definition: environment3.h:506
err_t environment3_generic_write(environment3_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Environment 3 data writing function.
Environment 3 Click configuration object.
Definition: environment3.h:491
uint8_t gas_wait
Definition: environment3.h:390
uint8_t res_heat_range
Definition: environment3.h:428
spi_master_t spi
Definition: environment3.h:467
pin_name_t sck
Definition: environment3.h:496
err_t environment3_generic_read(environment3_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Environment 3 data reading function.
Environment 3 field data structure.
Definition: environment3.h:384
uint8_t os_temp
Definition: environment3.h:441
int8_t par_t3
Definition: environment3.h:416
uint16_t heater_dur
Definition: environment3.h:456
int16_t par_p5
Definition: environment3.h:421
pin_name_t mosi
Definition: environment3.h:495
pin_name_t scl
Definition: environment3.h:492
int8_t environment3_get_operating_mode(environment3_t *ctx)
Environment 3 get operating mode function.
@ ENVIRONMENT3_OK
Definition: environment3.h:516
environment3_master_io_t read_f
Definition: environment3.h:474
uint16_t par_h1
Definition: environment3.h:404
float environment3_get_pressure(environment3_t *ctx)
Environment 3 get pressure data function.
uint32_t spi_speed
Definition: environment3.h:502
spi_master_chip_select_polarity_t cs_polarity
Definition: environment3.h:504
float t_fine
Definition: environment3.h:427
environment3_field_data_t f_data
Definition: environment3.h:476
float environment3_get_temperature(environment3_t *ctx)
Environment 3 get temperature data function.
int8_t par_h5
Definition: environment3.h:408
err_t environment3_write_byte(environment3_t *ctx, uint8_t reg, uint8_t data_in)
Environment 3 single data writing function.
pin_name_t sda
Definition: environment3.h:493
environment3_gas_settings_t gas_sett
Definition: environment3.h:479
int8_t res_heat_val
Definition: environment3.h:429
int8_t environment3_set_heater_conf(environment3_t *ctx, environment3_gas_settings_t *conf)
Environment 3 set heater configuration function.
int8_t par_p6
Definition: environment3.h:422
int16_t par_p4
Definition: environment3.h:420
int8_t par_p7
Definition: environment3.h:423
int8_t par_gh3
Definition: environment3.h:413
int8_t par_p3
Definition: environment3.h:419
uint8_t environment3_get_device_id(environment3_t *ctx)
Environment 3 get device ID function.
@ ENVIRONMENT3_ERROR
Definition: environment3.h:517
uint8_t par_h6
Definition: environment3.h:409
uint16_t par_p1
Definition: environment3.h:417
int8_t environment3_get_all_data(environment3_t *ctx, float *temp, float *hum, float *pres, uint32_t *gas)
Environment 3 get all data function.
int8_t par_h4
Definition: environment3.h:407
environment3_calibration_data_t calib
Definition: environment3.h:477
err_t environment3_default_cfg(environment3_t *ctx)
Environment 3 default configuration function.
uint8_t meas_index
Definition: environment3.h:387
uint32_t i2c_speed
Definition: environment3.h:499
uint16_t heater_temp
Definition: environment3.h:455
environment3_return_value_t
Environment 3 Click return value data.
Definition: environment3.h:515
int16_t par_t2
Definition: environment3.h:415
environment3_drv_t
Environment 3 Click driver selector.
Definition: environment3.h:367
int8_t environment3_set_regs(environment3_t *ctx, uint8_t *reg, uint8_t *data_in, uint8_t len)
Environment 3 write data to registers function.
float gas_resistance
Definition: environment3.h:394
Environment 3 gas settings structure.
Definition: environment3.h:453
uint8_t os_pres
Definition: environment3.h:442
float humidity
Definition: environment3.h:393
uint8_t odr
Definition: environment3.h:444
float environment3_get_gas_resistance(environment3_t *ctx)
Environment 3 get gas resistance data function.
int8_t environment3_get_regs(environment3_t *ctx, uint8_t reg, uint8_t *data_out, uint16_t len)
Environment 3 read data from register address function.
environment3_tph_settings_t tph_sett
Definition: environment3.h:478
Environment 3 calibration data structure.
Definition: environment3.h:403
int16_t par_p8
Definition: environment3.h:424
struct environment3_s environment3_t
Environment 3 Click context object.
Environment 3 TPH settings structure.
Definition: environment3.h:439
@ ENVIRONMENT3_DRV_SEL_SPI
Definition: environment3.h:368
uint8_t device_mem_page
Definition: environment3.h:481
@ ENVIRONMENT3_DRV_SEL_I2C
Definition: environment3.h:369
float pressure
Definition: environment3.h:392
uint16_t par_t1
Definition: environment3.h:414
int8_t environment3_enable_heater(environment3_t *ctx, uint8_t state)
Environment 3 enable heater function.
int8_t environment3_set_sensor_conf(environment3_t *ctx, environment3_tph_settings_t *conf)
Environment 3 set sensor configuration function.
void environment3_cfg_setup(environment3_cfg_t *cfg)
Environment 3 configuration object setup function.
err_t environment3_init(environment3_t *ctx, environment3_cfg_t *cfg)
Environment 3 initialization function.
int8_t par_gh1
Definition: environment3.h:411
pin_name_t chip_select
Definition: environment3.h:470
uint8_t device_variant_id
Definition: environment3.h:482
uint8_t res_heat
Definition: environment3.h:388
int8_t environment3_check_id(environment3_t *ctx)
Environment 3 check device ID function.
uint8_t idac
Definition: environment3.h:389
environment3_drv_t drv_sel
Definition: environment3.h:471
uint8_t os_hum
Definition: environment3.h:440