Loading...
Searching...
No Matches
bme680.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2019 Mesotic SAS
3 * SPDX-FileCopyrightText: 2020 Gunar Schorcht
4 * SPDX-License-Identifier: LGPL-2.1-only
5 */
6
7#pragma once
8
106
107#include "periph/i2c.h"
108#include "periph/spi.h"
109
110#ifdef MODULE_BME680_FP
111#define BME680_FLOAT_POINT_COMPENSATION
112#endif
113
114#include "bme680_hal.h"
115#include "bme680_internal.h"
116
117#ifdef __cplusplus
118extern "C" {
119#endif
120
124#define BME680_I2C_ADDR_1 (0x76)
125
129#define BME680_I2C_ADDR_2 (0x77)
130
135#define BME680_SENSOR(d) (*((struct bme680_dev *)d))
136
140enum {
146};
147
148#ifdef DOXYGEN
152typedef struct bme680_field_data {
153 uint8_t status;
157 uint8_t gas_index;
158 uint8_t meas_index;
159#ifndef MODULE_BME680_FP
160 int16_t temperature;
161 uint32_t pressure;
162 uint32_t humidity;
163 uint32_t gas_resistance;
164#else /* MODULE_BME680_FP */
165 float temperature;
166 float pressure;
167 float humidity;
168 float gas_resistance;
169#endif /* MODULE_BME680_FP */
170};
171
172#endif /* DOXYGEN */
173
178
183typedef struct bme680_dev bme680_dev_t;
184
188typedef struct {
190 uint8_t addr;
192
196typedef struct {
197 spi_t dev;
198 gpio_t nss_pin;
200
208
212typedef struct {
213 uint8_t ifsel;
214 uint8_t temp_os;
215 uint8_t hum_os;
216 uint8_t pres_os;
217 uint8_t filter;
218 uint8_t gas_measure;
219 uint16_t heater_dur;
220 uint16_t heater_temp;
221 uint8_t power_mode;
222 uint8_t settings;
225
229typedef struct {
230 struct bme680_dev sensor;
232} bme680_t;
233
237extern bme680_t *bme680_devs[];
238
242extern unsigned int bme680_devs_numof;
243
253int bme680_init(bme680_t *dev, const bme680_params_t *params);
254
269
284
301
314int bme680_set_ambient_temp(bme680_t* dev, int8_t temp);
315
316#ifdef __cplusplus
317}
318#endif
319
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:183
struct bme680_field_data bme680_field_data_t
Shortcut type definition for BME680 sensor field data.
Definition bme680.h:177
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:145
@ BME680_COM_FAILED
Communication with the device failed.
Definition bme680.h:142
@ BME680_NULL_PTR
NULL pointer check failed.
Definition bme680.h:141
@ BME680_INVALID
Invalid value or length.
Definition bme680.h:144
@ BME680_NO_DEV
Device doesn't exist.
Definition bme680.h:143
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition i2c.h:155
Low-level I2C peripheral driver interface definition.
Low-level SPI peripheral driver interface definition.
BME680 sensor field data.
Definition bme680.h:152
uint32_t gas_resistance
Gas resistance in ohms.
Definition bme680.h:163
int16_t temperature
Temperature in degree Celsius x 100.
Definition bme680.h:160
uint32_t humidity
Relative humidity in percent x 1000.
Definition bme680.h:162
uint8_t meas_index
Measurement index.
Definition bme680.h:158
uint8_t gas_index
Index of used heater profile.
Definition bme680.h:157
uint8_t status
Status for new data, gas measurement valid and heater stable.
Definition bme680.h:153
uint32_t pressure
Pressure in Pascal.
Definition bme680.h:161
BME680 I2C parameters.
Definition bme680.h:188
uint8_t addr
I2C address.
Definition bme680.h:190
i2c_t dev
I2C device which is used.
Definition bme680.h:189
BME680 SPI parameters.
Definition bme680.h:196
gpio_t nss_pin
Chip Select pin.
Definition bme680.h:198
spi_t dev
SPI device which is used.
Definition bme680.h:197
BME680 device initialization parameters.
Definition bme680.h:212
uint8_t ifsel
Interface selection.
Definition bme680.h:213
bme680_intf_t intf
Hardware interface parameters.
Definition bme680.h:223
uint8_t gas_measure
Enable gas measurement.
Definition bme680.h:218
uint8_t pres_os
Pressure oversampling.
Definition bme680.h:216
uint8_t hum_os
Humidity oversampling.
Definition bme680.h:215
uint16_t heater_dur
Heater duration in ms.
Definition bme680.h:219
uint8_t power_mode
Power mode (sleep or forced)
Definition bme680.h:221
uint16_t heater_temp
Heater temperature in °C.
Definition bme680.h:220
uint8_t temp_os
Temperature oversampling.
Definition bme680.h:214
uint8_t settings
Settings used.
Definition bme680.h:222
uint8_t filter
IIR filter coefficient.
Definition bme680.h:217
BME680 device descriptor.
Definition bme680.h:229
struct bme680_dev sensor
Inherited device structure from vendor API.
Definition bme680.h:230
bme680_intf_t intf
Device interface.
Definition bme680.h:231
BME680 Hardware interface parameters union.
Definition bme680.h:204
bme680_intf_spi_t spi
SPI specific interface parameters.
Definition bme680.h:206
bme680_intf_i2c_t i2c
I2C specific interface parameters.
Definition bme680.h:205