picofuse

Data Structures | Macros | Typedefs | Enumerations
bme680.h File Reference

Bosch BME680 environmental sensor interface. More...

#include <picofuse/hw.h>
#include <stdbool.h>
#include <stdint.h>
Include dependency graph for bme680.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  dev_bme680_data_t
 BME680 measurement values. More...
 
struct  dev_bme680_config_t
 BME680 runtime configuration. More...
 

Macros

#define DEV_BME680_I2C_ADDR_PRIMARY   0x76
 7-bit I2C address when the SDO pin is tied low.
 
#define DEV_BME680_I2C_ADDR_SECONDARY   0x77
 7-bit I2C address when the SDO pin is tied high.
 
#define DEV_BME680_CHIP_ID   0x61
 Expected value of the chip ID register, used by dev_bme680_init() to confirm a BME680 is actually present before returning a handle.
 
#define DEV_BME680_REG_CHIP_ID   0xD0u
 Register holding the chip ID (see DEV_BME680_CHIP_ID).
 
#define DEV_BME680_REG_VARIANT_ID   0xF0u
 Register holding the chip variant (see DEV_BME680_VARIANT_GAS_LOW, DEV_BME680_VARIANT_GAS_HIGH).
 
#define DEV_BME680_REG_SOFT_RESET   0xE0u
 Register that triggers a soft reset when DEV_BME680_SOFT_RESET_CMD is written to it.
 
#define DEV_BME680_REG_FIELD0   0x1Du
 First register of the sensor data field read by dev_bme680_read().
 
#define DEV_BME680_REG_RES_HEAT0   0x5Au
 First heater resistance register, for the gas heater profile.
 
#define DEV_BME680_REG_GAS_WAIT0   0x64u
 First heater duration register, for the gas heater profile.
 
#define DEV_BME680_REG_CTRL_GAS_0   0x70u
 Gas heater control register.
 
#define DEV_BME680_REG_CTRL_GAS_1   0x71u
 Gas measurement/heater-profile-selection control register.
 
#define DEV_BME680_REG_CTRL_HUM   0x72u
 Humidity oversampling control register.
 
#define DEV_BME680_REG_CTRL_MEAS   0x74u
 Temperature/pressure oversampling and power-mode control register.
 
#define DEV_BME680_REG_CONFIG   0x75u
 IIR filter control register.
 
#define DEV_BME680_REG_COEFF1   0x8Au
 First byte of the first calibration coefficient block.
 
#define DEV_BME680_REG_COEFF2   0xE1u
 First byte of the second calibration coefficient block.
 
#define DEV_BME680_REG_COEFF3   0x00u
 First byte of the third calibration coefficient block.
 
#define DEV_BME680_SOFT_RESET_CMD   0xB6u
 Value that triggers a soft reset when written to DEV_BME680_REG_SOFT_RESET.
 
#define DEV_BME680_VARIANT_GAS_LOW   0x00u
 Chip variant value read from DEV_BME680_REG_VARIANT_ID on earlier BME680 units, using the "low" gas resistance compensation formula.
 
#define DEV_BME680_VARIANT_GAS_HIGH   0x01u
 Chip variant value read from DEV_BME680_REG_VARIANT_ID on later BME680 units, using the "high" gas resistance compensation formula.
 

Typedefs

typedef struct dev_bme680_t dev_bme680_t
 Opaque BME680 handle.
 

Enumerations

enum  dev_bme680_oversampling_t {
  dev_bme680_oversampling_skip = 0, dev_bme680_oversampling_1x = 1, dev_bme680_oversampling_2x = 2, dev_bme680_oversampling_4x = 3,
  dev_bme680_oversampling_8x = 4, dev_bme680_oversampling_16x = 5
}
 
enum  dev_bme680_iir_filter_t {
  dev_bme680_iir_filter_off = 0, dev_bme680_iir_filter_1 = 1, dev_bme680_iir_filter_3 = 2, dev_bme680_iir_filter_7 = 3,
  dev_bme680_iir_filter_15 = 4, dev_bme680_iir_filter_31 = 5, dev_bme680_iir_filter_63 = 6, dev_bme680_iir_filter_127 = 7
}
 
enum  dev_bme680_heater_temp_t {
  dev_bme680_heater_temp_200c = 200, dev_bme680_heater_temp_250c = 250, dev_bme680_heater_temp_300c = 300, dev_bme680_heater_temp_320c = 320,
  dev_bme680_heater_temp_350c = 350, dev_bme680_heater_temp_400c = 400
}
 
enum  dev_bme680_heater_duration_t {
  dev_bme680_heater_dur_50ms = 50, dev_bme680_heater_dur_100ms = 100, dev_bme680_heater_dur_120ms = 120, dev_bme680_heater_dur_150ms = 150,
  dev_bme680_heater_dur_200ms = 200
}
 
enum  dev_bme680_ambient_temp_t {
  dev_bme680_ambient_temp_0c = 0, dev_bme680_ambient_temp_10c = 10, dev_bme680_ambient_temp_20c = 20, dev_bme680_ambient_temp_25c = 25,
  dev_bme680_ambient_temp_30c = 30, dev_bme680_ambient_temp_35c = 35, dev_bme680_ambient_temp_40c = 40
}
 
enum  dev_bme680_gas_mode_t { dev_bme680_gas_disabled = 0, dev_bme680_gas_enabled = 1 }
 

Functions

Lifecycle
void dev_bme680_default_config (dev_bme680_config_t *config)
 Fill a BME680 config struct with safe defaults. More...
 
dev_bme680_tdev_bme680_init (hw_deviceio_t *device, const dev_bme680_config_t *config)
 Initialize a BME680 sensor. More...
 
void dev_bme680_deinit (dev_bme680_t *bme680)
 Deinitialize a BME680 sensor. More...
 
Properties
uint8_t dev_bme680_chip_id (const dev_bme680_t *bme680)
 Get the detected chip ID. More...
 
uint32_t dev_bme680_measurement_duration_ms (const dev_bme680_config_t *config)
 Calculate how long a measurement takes to complete for a given configuration. More...
 
Methods
bool dev_bme680_read (dev_bme680_t *bme680, dev_bme680_data_t *data)
 Read sensor data from BME680. More...
 

Detailed Description

Bosch BME680 environmental sensor interface.

Definition in file bme680.h.