bmx280.h

Device driver interface for the BMX280 sensors (BMP280 and BME280).

There are three sensor values that can be read: temperature, pressure and humidity. The BME280 device usually measures them all at once. It is possible to skip measuring either of the values by changing the oversampling settings. The driver is written in such a way that a measurement is only started from the function that reads the temperature. In other words, you always have to call bmx280_read_temperature, and then optionally you can call the other two.

enum bmx280_t_sb_t
BMX280_SB_0_5 = 0
BMX280_SB_62_5 = 1
BMX280_SB_125 = 2
BMX280_SB_250 = 3
BMX280_SB_500 = 4
BMX280_SB_1000 = 5
BMX280_SB_10 = 6
BMX280_SB_20 = 7
enum bmx280_filter_t
BMX280_FILTER_OFF = 0
BMX280_FILTER_2 = 1
BMX280_FILTER_4 = 2
BMX280_FILTER_8 = 3
BMX280_FILTER_16 = 4
enum bmx280_mode_t
BMX280_MODE_SLEEP = 0
BMX280_MODE_FORCED = 1
BMX280_MODE_FORCED2 = 2
BMX280_MODE_NORMAL = 3
enum bmx280_osrs_t
BMX280_OSRS_SKIPPED = 0
BMX280_OSRS_X1 = 1
BMX280_OSRS_X2 = 2
BMX280_OSRS_X4 = 3
BMX280_OSRS_X8 = 4
BMX280_OSRS_X16 = 5
enum @115
BMX280_OK =  0
everything was fine
BMX280_ERR_NODEV = -1
did not detect BME280 or BMP280
BMX280_ERR_NOCAL = -2
could not read calibration data
int bmx280_init(bmx280_t * dev, const bmx280_params_t * params)

Initialize the given BMX280 device.

Parameters

dev:Initialized device descriptor of BMX280 device
params:The parameters for the BMX280 device (sampling rate, etc)

Return values

  • BMX280_OK on success
  • BMX280_ERR_I2C
  • BMX280_ERR_NODEV
  • BMX280_ERR_NOCAL
int16_t bmx280_read_temperature(const bmx280_t * dev)

Read temperature value from the given BMX280 device, returned in centi °C.

Parameters

dev:Device descriptor of BMX280 device to read from

Return values

  • The temperature in centi Celsius. In case of an error it returns INT16_MIN.
uint32_t bmx280_read_pressure(const bmx280_t * dev)

Read air pressure value from the given BMX280 device, returned in PA.

This function should only be called after doing bmx280_read_temperature first.

Parameters

dev:Device descriptor of BMX280 device to read from

Return values

  • The air pressure in Pa
uint16_t bme280_read_humidity(const bmx280_t * dev)

Read humidity value from the given BME280 device, returned in centi RH.

This function should only be called after doing bmx280_read_temperature first. It’s only available with BME280 sensor.

Parameters

dev:Device descriptor of BME280 device to read from

Return values

  • Humidity in centi RH (i.e. the percentage times 100)
struct bmx280_calibration_t

Calibration struct for the BMX280 sensor.

This must be read from the device at startup.

uint16_t dig_T1

T1 coefficient.

int16_t dig_T2

T2 coefficient.

int16_t dig_T3

T3 coefficient.

uint16_t dig_P1

P1 coefficient.

int16_t dig_P2

P2 coefficient.

int16_t dig_P3

P3 coefficient.

int16_t dig_P4

P4 coefficient.

int16_t dig_P5

P5 coefficient.

int16_t dig_P6

P6 coefficient.

int16_t dig_P7

P7 coefficient.

int16_t dig_P8

P8 coefficient.

int16_t dig_P9

P9 coefficient.

uint8_t dig_H1

H1 coefficient.

int16_t dig_H2

H2 coefficient.

uint8_t dig_H3

H3 coefficient.

int16_t dig_H4

H4 coefficient.

int16_t dig_H5

H5 coefficient.

int8_t dig_H6

H6 coefficient.

struct bmx280_params_t

Parameters for the BMX280 sensor.

These parameters are needed to configure the device at startup.

i2c.h::i2c_t i2c_dev

I2C device which is used.

uint8_t i2c_addr

I2C address.

bmx280.h::bmx280_t_sb_t t_sb

standby

bmx280.h::bmx280_filter_t filter

filter coefficient

uint8_t spi3w_en

Enables 3-wire SPI interface.

bmx280.h::bmx280_mode_t run_mode

ctrl_meas mode

bmx280.h::bmx280_osrs_t temp_oversample

ctrl_meas osrs_t

bmx280.h::bmx280_osrs_t press_oversample

ctrl_meas osrs_p

bmx280.h::bmx280_osrs_t humid_oversample

ctrl_hum osrs_h

struct bmx280_t

Device descriptor for the BMX280 sensor.

bmx280_params_t params

Device Parameters.

bmx280_calibration_t calibration

Calibration Data.