Loading...
Searching...
No Matches
bme680.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2019 Mesotic SAS
3 * 2020 Gunar Schorcht
4 *
5 * This file is subject to the terms and conditions of the GNU Lesser
6 * General Public License v2.1. See the file LICENSE in the top level
7 * directory for more details.
8 */
9
10#pragma once
11
109
110#include "periph/i2c.h"
111#include "periph/spi.h"
112
113#ifdef MODULE_BME680_FP
114#define BME680_FLOAT_POINT_COMPENSATION
115#endif
116
117#include "bme680_hal.h"
118#include "bme680_internal.h"
119
120#ifdef __cplusplus
121extern "C" {
122#endif
123
127#define BME680_I2C_ADDR_1 (0x76)
128
132#define BME680_I2C_ADDR_2 (0x77)
133
138#define BME680_SENSOR(d) (*((struct bme680_dev *)d))
139
143enum {
149};
150
151#ifdef DOXYGEN
155typedef struct bme680_field_data {
156 uint8_t status;
160 uint8_t gas_index;
161 uint8_t meas_index;
162#ifndef MODULE_BME680_FP
163 int16_t temperature;
164 uint32_t pressure;
165 uint32_t humidity;
166 uint32_t gas_resistance;
167#else /* MODULE_BME680_FP */
168 float temperature;
169 float pressure;
170 float humidity;
171 float gas_resistance;
172#endif /* MODULE_BME680_FP */
173};
174
175#endif /* DOXYGEN */
176
181
186typedef struct bme680_dev bme680_dev_t;
187
191typedef struct {
193 uint8_t addr;
195
199typedef struct {
200 spi_t dev;
201 gpio_t nss_pin;
203
211
215typedef struct {
216 uint8_t ifsel;
217 uint8_t temp_os;
218 uint8_t hum_os;
219 uint8_t pres_os;
220 uint8_t filter;
221 uint8_t gas_measure;
222 uint16_t heater_dur;
223 uint16_t heater_temp;
224 uint8_t power_mode;
225 uint8_t settings;
228
232typedef struct {
233 struct bme680_dev sensor;
235} bme680_t;
236
240extern bme680_t *bme680_devs[];
241
245extern unsigned int bme680_devs_numof;
246
256int bme680_init(bme680_t *dev, const bme680_params_t *params);
257
272
287
304
317int bme680_set_ambient_temp(bme680_t* dev, int8_t temp);
318
319#ifdef __cplusplus
320}
321#endif
322
Abstraction layer for RIOT adaption.
int bme680_init(bme680_t *dev, const bme680_params_t *params)
Initialize the BME680 sensor.
unsigned int bme680_devs_numof
Number of initialized BME680 sensor devices in bme680_devs.
int bme680_force_measurement(bme680_t *dev)
Force a single TPHG measurement cycle.
bme680_t * bme680_devs[]
References to BME680 sensor devices used by the HAL functions.
int bme680_get_duration(bme680_t *dev)
Duration one THPG measurement cycle.
int bme680_set_ambient_temp(bme680_t *dev, int8_t temp)
Set the ambient temperature.
struct bme680_dev bme680_dev_t
Shortcut type definition for BME680 sensor device structure.
Definition bme680.h:186
struct bme680_field_data bme680_field_data_t
Shortcut type definition for BME680 sensor field data.
Definition bme680.h:180
int bme680_get_data(bme680_t *dev, bme680_field_data_t *data)
Get results of a TPHG measurement.
@ BME680_NO_NEW_DATA
No new data.
Definition bme680.h:148
@ BME680_COM_FAILED
Communication with the device failed.
Definition bme680.h:145
@ BME680_NULL_PTR
NULL pointer check failed.
Definition bme680.h:144
@ BME680_INVALID
Invalid value or length.
Definition bme680.h:147
@ BME680_NO_DEV
Device doesn't exist.
Definition bme680.h:146
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:144
Low-level I2C peripheral driver interface definition.
Low-level SPI peripheral driver interface definition.
BME680 sensor field data.
Definition bme680.h:155
uint32_t gas_resistance
Gas resistance in ohms.
Definition bme680.h:166
int16_t temperature
Temperature in degree Celsius x 100.
Definition bme680.h:163
uint32_t humidity
Relative humidity in percent x 1000.
Definition bme680.h:165
uint8_t meas_index
Measurement index.
Definition bme680.h:161
uint8_t gas_index
Index of used heater profile.
Definition bme680.h:160
uint8_t status
Status for new data, gas measurement valid and heater stable.
Definition bme680.h:156
uint32_t pressure
Pressure in Pascal.
Definition bme680.h:164
BME680 I2C parameters.
Definition bme680.h:191
uint8_t addr
I2C address.
Definition bme680.h:193
i2c_t dev
I2C device which is used.
Definition bme680.h:192
BME680 SPI parameters.
Definition bme680.h:199
gpio_t nss_pin
Chip Select pin.
Definition bme680.h:201
spi_t dev
SPI device which is used.
Definition bme680.h:200
BME680 device initialization parameters.
Definition bme680.h:215
uint8_t ifsel
Interface selection.
Definition bme680.h:216
bme680_intf_t intf
Hardware interface parameters.
Definition bme680.h:226
uint8_t gas_measure
Enable gas measurement.
Definition bme680.h:221
uint8_t pres_os
Pressure oversampling.
Definition bme680.h:219
uint8_t hum_os
Humidity oversampling.
Definition bme680.h:218
uint16_t heater_dur
Heater duration in ms.
Definition bme680.h:222
uint8_t power_mode
Power mode (sleep or forced)
Definition bme680.h:224
uint16_t heater_temp
Heater temperature in °C.
Definition bme680.h:223
uint8_t temp_os
Temperature oversampling.
Definition bme680.h:217
uint8_t settings
Settings used.
Definition bme680.h:225
uint8_t filter
IIR filter coefficient.
Definition bme680.h:220
BME680 device descriptor.
Definition bme680.h:232
struct bme680_dev sensor
Inherited device structure from vendor API.
Definition bme680.h:233
bme680_intf_t intf
Device interface.
Definition bme680.h:234
BME680 Hardware interface parameters union.
Definition bme680.h:207
bme680_intf_spi_t spi
SPI specific interface parameters.
Definition bme680.h:209
bme680_intf_i2c_t i2c
I2C specific interface parameters.
Definition bme680.h:208