Go to the documentation of this file.
38 #include "mikrosdk_version.h"
41 #if mikroSDK_GET_VERSION < 20800ul
42 #include "rcu_delays.h"
48 #include "drv_digital_out.h"
49 #include "drv_digital_in.h"
50 #include "drv_i2c_master.h"
51 #include "drv_spi_master.h"
64 #define ENVIRONMENT_MAP_MIKROBUS( cfg, mikrobus ) \
65 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
66 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
67 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
68 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
69 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
70 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS )
77 #define ENVIRONMENT_MASTER_I2C 0
78 #define ENVIRONMENT_MASTER_SPI 1
85 #define ENVIRONMENT_RETVAL uint8_t
87 #define ENVIRONMENT_OK 0x00
88 #define ENVIRONMENT_INIT_ERROR 0xFF
91 #define ENVIRONMENT_POLL_PERIOD_MS 10
97 #define ENVIRONMENT_DEVICE_SLAVE_ADDR_0 0x76
98 #define ENVIRONMENT_DEVICE_SLAVE_ADDR_1 0x77
99 #define ENVIRONMENT_CHIP_ID 0x61
100 #define ENVIRONMENT_COEFF_SIZE 41
101 #define ENVIRONMENT_COEFF_ADDR1_LEN 25
102 #define ENVIRONMENT_COEFF_ADDR2_LEN 16
103 #define ENVIRONMENT_FIELD_LENGTH 15
104 #define ENVIRONMENT_FIELD_ADDR_OFFSET 17
105 #define ENVIRONMENT_SOFT_RESET_CMD 0xB6
106 #define ENVIRONMENT_DEVICE_OK 0
107 #define ENVIRONMENT_DEVICE_ERROR 1
108 #define ENVIRONMENT_E_NULL_PTR -1
109 #define ENVIRONMENT_E_COM_FAIL -2
110 #define ENVIRONMENT_E_DEV_NOT_FOUND -3
111 #define ENVIRONMENT_E_INVALID_LENGTH -4
112 #define ENVIRONMENT_W_DEFINE_PWR_MODE 1
113 #define ENVIRONMENT_W_NO_NEW_DATA 2
114 #define ENVIRONMENT_I_MIN_CORRECTION 1
115 #define ENVIRONMENT_I_MAX_CORRECTION 2
122 #define ENVIRONMENT_ADDR_RES_HEAT_VAL_ADDR 0x00
123 #define ENVIRONMENT_ADDR_RES_HEAT_RANGE_ADDR 0x02
124 #define ENVIRONMENT_ADDR_RANGE_SW_ERR_ADDR 0x04
125 #define ENVIRONMENT_ADDR_SENS_CONF_START 0x5A
126 #define ENVIRONMENT_ADDR_GAS_CONF_START 0x64
127 #define ENVIRONMENT_FIELD0_ADDR 0x1d
128 #define ENVIRONMENT_RES_HEAT0_ADDR 0x5a
129 #define ENVIRONMENT_GAS_WAIT0_ADDR 0x64
130 #define ENVIRONMENT_CONF_HEAT_CTRL_ADDR 0x70
131 #define ENVIRONMENT_CONF_ODR_RUN_GAS_NBC_ADDR 0x71
132 #define ENVIRONMENT_CONF_OS_H_ADDR 0x72
133 #define ENVIRONMENT_MEM_PAGE_ADDR 0xf3
134 #define ENVIRONMENT_CONF_T_P_MODE_ADDR 0x74
135 #define ENVIRONMENT_CONF_ODR_FILT_ADDR 0x75
136 #define ENVIRONMENT_COEFF_ADDR1 0x89
137 #define ENVIRONMENT_COEFF_ADDR2 0xe1
138 #define ENVIRONMENT_CHIP_ID_ADDR 0xd0
139 #define ENVIRONMENT_SOFT_RESET_ADDR 0xe0
146 #define ENVIRONMENT_ENABLE_HEATER 0x00
147 #define ENVIRONMENT_DISABLE_HEATER 0x08
148 #define ENVIRONMENT_DISABLE_GAS_MEAS 0x00
149 #define ENVIRONMENT_ENABLE_GAS_MEAS 0x01
150 #define ENVIRONMENT_OS_NONE 0
151 #define ENVIRONMENT_OS_1X 1
152 #define ENVIRONMENT_OS_2X 2
153 #define ENVIRONMENT_OS_4X 3
154 #define ENVIRONMENT_OS_8X 4
155 #define ENVIRONMENT_OS_16X 5
156 #define ENVIRONMENT_FILTER_SIZE_0 0
157 #define ENVIRONMENT_FILTER_SIZE_1 1
158 #define ENVIRONMENT_FILTER_SIZE_3 2
159 #define ENVIRONMENT_FILTER_SIZE_7 3
160 #define ENVIRONMENT_FILTER_SIZE_15 4
161 #define ENVIRONMENT_FILTER_SIZE_31 5
162 #define ENVIRONMENT_FILTER_SIZE_63 6
163 #define ENVIRONMENT_FILTER_SIZE_127 7
164 #define ENVIRONMENT_SLEEP_MODE 0
165 #define ENVIRONMENT_FORCED_MODE 1
166 #define ENVIRONMENT_RESET_PERIOD 10
167 #define ENVIRONMENT_MEM_PAGE0 0x10
168 #define ENVIRONMENT_MEM_PAGE1 0x00
169 #define ENVIRONMENT_HUM_REG_SHIFT_VAL 4
170 #define ENVIRONMENT_RUN_GAS_DISABLE 0
171 #define ENVIRONMENT_RUN_GAS_ENABLE 1
172 #define ENVIRONMENT_TMP_BUFFER_LENGTH 40
173 #define ENVIRONMENT_REG_BUFFER_LENGTH 6
174 #define ENVIRONMENT_FIELD_DATA_LENGTH 3
175 #define ENVIRONMENT_GAS_REG_BUF_LENGTH 20
176 #define ENVIRONMENT_OST_SEL 1
177 #define ENVIRONMENT_OSP_SEL 2
178 #define ENVIRONMENT_OSH_SEL 4
179 #define ENVIRONMENT_GAS_MEAS_SEL 8
180 #define ENVIRONMENT_FILTER_SEL 16
181 #define ENVIRONMENT_HCNTRL_SEL 32
182 #define ENVIRONMENT_RUN_GAS_SEL 64
183 #define ENVIRONMENT_NBCONV_SEL 128
184 #define ENVIRONMENT_GAS_SENSOR_SEL ( ENVIRONMENT_GAS_MEAS_SEL | \
185 ENVIRONMENT_RUN_GAS_SEL | \
186 ENVIRONMENT_NBCONV_SEL )
187 #define ENVIRONMENT_NBCONV_MIN 0
188 #define ENVIRONMENT_NBCONV_MAX 10
189 #define ENVIRONMENT_GAS_MEAS_MSK 0x30
190 #define ENVIRONMENT_NBCONV_MSK 0X0F
191 #define ENVIRONMENT_FILTER_MSK 0X1C
192 #define ENVIRONMENT_OST_MSK 0XE0
193 #define ENVIRONMENT_OSP_MSK 0X1C
194 #define ENVIRONMENT_OSH_MSK 0X07
195 #define ENVIRONMENT_HCTRL_MSK 0x08
196 #define ENVIRONMENT_RUN_GAS_MSK 0x10
197 #define ENVIRONMENT_MODE_MSK 0x03
198 #define ENVIRONMENT_RHRANGE_MSK 0x30
199 #define ENVIRONMENT_RSERROR_MSK 0xf0
200 #define ENVIRONMENT_NEW_DATA_MSK 0x80
201 #define ENVIRONMENT_GAS_INDEX_MSK 0x0f
202 #define ENVIRONMENT_GAS_RANGE_MSK 0x0f
203 #define ENVIRONMENT_GASM_VALID_MSK 0x20
204 #define ENVIRONMENT_HEAT_STAB_MSK 0x10
205 #define ENVIRONMENT_MEM_PAGE_MSK 0x10
206 #define ENVIRONMENT_SPI_RD_MSK 0x80
207 #define ENVIRONMENT_SPI_WR_MSK 0x7f
208 #define ENVIRONMENT_BIT_H1_DATA_MSK 0x0F
209 #define ENVIRONMENT_GAS_MEAS_POS 4
210 #define ENVIRONMENT_FILTER_POS 2
211 #define ENVIRONMENT_OST_POS 5
212 #define ENVIRONMENT_OSP_POS 2
213 #define ENVIRONMENT_RUN_GAS_POS 4
214 #define ENVIRONMENT_T2_LSB_REG 1
215 #define ENVIRONMENT_T2_MSB_REG 2
216 #define ENVIRONMENT_T3_REG 3
217 #define ENVIRONMENT_P1_LSB_REG 5
218 #define ENVIRONMENT_P1_MSB_REG 6
219 #define ENVIRONMENT_P2_LSB_REG 7
220 #define ENVIRONMENT_P2_MSB_REG 8
221 #define ENVIRONMENT_P3_REG 9
222 #define ENVIRONMENT_P4_LSB_REG 11
223 #define ENVIRONMENT_P4_MSB_REG 12
224 #define ENVIRONMENT_P5_LSB_REG 13
225 #define ENVIRONMENT_P5_MSB_REG 14
226 #define ENVIRONMENT_P7_REG 15
227 #define ENVIRONMENT_P6_REG 16
228 #define ENVIRONMENT_P8_LSB_REG 19
229 #define ENVIRONMENT_P8_MSB_REG 20
230 #define ENVIRONMENT_P9_LSB_REG 21
231 #define ENVIRONMENT_P9_MSB_REG 22
232 #define ENVIRONMENT_P10_REG 23
233 #define ENVIRONMENT_H2_MSB_REG 25
234 #define ENVIRONMENT_H2_LSB_REG 26
235 #define ENVIRONMENT_H1_LSB_REG 26
236 #define ENVIRONMENT_H1_MSB_REG 27
237 #define ENVIRONMENT_H3_REG 28
238 #define ENVIRONMENT_H4_REG 29
239 #define ENVIRONMENT_H5_REG 30
240 #define ENVIRONMENT_H6_REG 31
241 #define ENVIRONMENT_H7_REG 32
242 #define ENVIRONMENT_T1_LSB_REG 33
243 #define ENVIRONMENT_T1_MSB_REG 34
244 #define ENVIRONMENT_GH2_LSB_REG 35
245 #define ENVIRONMENT_GH2_MSB_REG 36
246 #define ENVIRONMENT_GH1_REG 37
247 #define ENVIRONMENT_GH3_REG 38
248 #define ENVIRONMENT_REG_FILTER_INDEX 5
249 #define ENVIRONMENT_REG_TEMP_INDEX 4
250 #define ENVIRONMENT_REG_PRES_INDEX 4
251 #define ENVIRONMENT_REG_HUM_INDEX 2
252 #define ENVIRONMENT_REG_NBCONV_INDEX 1
253 #define ENVIRONMENT_REG_RUN_GAS_INDEX 1
254 #define ENVIRONMENT_REG_HCTRL_INDEX 0
255 #define ENVIRONMENT_MAX_OVERFLOW_VAL 0x40000000
256 #define ENVIRONMENT_DATA_TEMPERATURE 0x01
257 #define ENVIRONMENT_DATA_PRESSURE 0x02
258 #define ENVIRONMENT_DATA_HUMIDITY 0x03
259 #define BME680_CONCAT_BYTES(msb, lsb) (((uint16_t)msb << 8) | (uint16_t)lsb)
260 #define BME680_SET_BITS(reg_data, bitname, data) \
261 ((reg_data & ~(bitname##_MSK)) | \
262 ((data << bitname##_POS) & bitname##_MSK))
263 #define BME680_SET_BITS_POS_0(reg_data, bitname, data) \
264 ((reg_data & ~(bitname##_MSK)) | \
265 (data & bitname##_MSK))
645 #endif // _ENVIRONMENT_H_
int8_t par_t3
Definition: environment.h:300
int16_t par_p5
Definition: environment.h:305
environment_select_t sel
Definition: environment.h:401
int8_t par_p7
Definition: environment.h:307
uint8_t run_gas
Definition: environment.h:332
uint16_t par_h1
Definition: environment.h:288
int8_t par_gh3
Definition: environment.h:297
uint32_t i2c_speed
Definition: environment.h:394
void(* environment_master_io_t)(struct environment_s *, uint8_t, uint8_t *, uint8_t)
Master Input/Output type.
Definition: environment.h:346
uint8_t status
Definition: environment.h:276
T_ENVIRONMENT_BME680_FIELD_DATA d_data
Definition: environment.h:368
int16_t par_p4
Definition: environment.h:304
uint8_t environment_select_t
Communication type.
Definition: environment.h:341
pin_name_t sda
Definition: environment.h:386
Definition: environment.h:275
ENVIRONMENT_RETVAL environment_init(environment_t *ctx, environment_cfg_t *cfg)
Initialization function.
uint8_t filter
Definition: environment.h:323
Definition: environment.h:329
uint32_t humidity
Definition: environment.h:281
uint8_t device_power_mode
Definition: environment.h:374
int32_t t_fine
Definition: environment.h:311
pin_name_t miso
Definition: environment.h:387
uint8_t par_p10
Definition: environment.h:310
int16_t par_p2
Definition: environment.h:302
uint16_t par_t1
Definition: environment.h:298
struct environment_s environment_t
Click ctx object definition.
uint8_t slave_address
Definition: environment.h:362
Definition: environment.h:287
float environment_get_humidity(environment_t *ctx)
Gets humidity in percentage [ % ] function.
T_ENVIRONMENT_BME680_GAS_SETTINGS gas_sett
Definition: environment.h:371
uint16_t par_p1
Definition: environment.h:301
int8_t range_sw_err
Definition: environment.h:314
int16_t temperature
Definition: environment.h:279
digital_out_t cs
Definition: environment.h:353
uint8_t gas_index
Definition: environment.h:277
int8_t par_h4
Definition: environment.h:291
float environment_get_ambient_data(environment_t *ctx, uint8_t data_in)
Get ambient data function.
pin_name_t chip_select
Definition: environment.h:363
int16_t par_t2
Definition: environment.h:299
uint8_t os_temp
Definition: environment.h:321
int8_t par_gh1
Definition: environment.h:295
environment_master_io_t write_f
Definition: environment.h:364
void environment_generic_write(environment_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic write function.
int16_t par_gh2
Definition: environment.h:296
int16_t par_p8
Definition: environment.h:308
pin_name_t mosi
Definition: environment.h:388
void environment_write_byte(environment_t *ctx, uint8_t reg_address, uint8_t write_data)
Generic the write byte of data function.
i2c_master_t i2c
Definition: environment.h:357
uint8_t environment_check_id(environment_t *ctx)
Check device ID function.
pin_name_t cs
Definition: environment.h:390
int8_t par_h5
Definition: environment.h:292
spi_master_chip_select_polarity_t cs_polarity
Definition: environment.h:399
pin_name_t scl
Definition: environment.h:385
pin_name_t sck
Definition: environment.h:389
uint8_t res_heat_range
Definition: environment.h:312
uint8_t par_h6
Definition: environment.h:293
environment_select_t master_sel
Definition: environment.h:366
void environment_cfg_setup(environment_cfg_t *cfg)
Config Object Initialization function.
int8_t par_p3
Definition: environment.h:303
Click configuration structure definition.
Definition: environment.h:382
uint8_t meas_index
Definition: environment.h:278
uint8_t heatr_ctrl
Definition: environment.h:331
int8_t par_p6
Definition: environment.h:306
uint32_t environment_get_gas_resistance(environment_t *ctx)
Gets gas resistance data function.
uint16_t heatr_temp
Definition: environment.h:333
void environment_default_cfg(environment_t *ctx)
Click Default Configuration function.
uint8_t device_mem_page
Definition: environment.h:373
environment_master_io_t read_f
Definition: environment.h:365
spi_master_mode_t spi_mode
Definition: environment.h:398
uint16_t heatr_dur
Definition: environment.h:334
T_ENVIRONMENT_BME680_TPH_SETTINGS tph_sett
Definition: environment.h:370
uint32_t gas_resistance
Definition: environment.h:282
uint8_t environment_get_device_id(environment_t *ctx)
Get device ID function.
Definition: environment.h:319
float environment_get_pressure(environment_t *ctx)
Gets pressure in degrees Celsius function.
uint8_t nb_conv
Definition: environment.h:330
float pressure
Definition: environment.h:280
void environment_soft_reset(environment_t *ctx)
Software reset function.
uint8_t os_hum
Definition: environment.h:320
uint8_t environment_read_byte(environment_t *ctx, uint8_t reg_address)
Generic the read byte of data function.
int8_t par_h7
Definition: environment.h:294
T_ENVIRONMENT_BME680_CALIB_DATA calib
Definition: environment.h:369
uint8_t i2c_address
Definition: environment.h:395
void environment_default_config(environment_t *ctx)
Set default configuration for the BMP680 sensor function.
uint32_t spi_speed
Definition: environment.h:397
void environment_generic_read(environment_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function.
spi_master_t spi
Definition: environment.h:358
float environment_get_temperature(environment_t *ctx)
Gets temperature in degrees Celsius function.
Click ctx object definition.
Definition: environment.h:352
int16_t par_p9
Definition: environment.h:309
int8_t par_h3
Definition: environment.h:290
uint16_t par_h2
Definition: environment.h:289
int8_t res_heat_val
Definition: environment.h:313
#define ENVIRONMENT_RETVAL
Definition: environment.h:85
uint8_t os_pres
Definition: environment.h:322
void environment_get_calibration_data(environment_t *ctx)
Get factory calibration parameters function.