BME280 Driver 2.0.x
Driver for BME280 sensor
Loading...
Searching...
No Matches
bme280_definitions.h
Go to the documentation of this file.
1
17//***************************************
18
19#ifndef BME280_DEFINITIONS_H
20#define BME280_DEFINITIONS_H
21
22//***************************************
23
24#include <stdint.h>
25
31#define BME280_OK (0)
32#define BME280_PARAM_ERR (-1)
33#define BME280_INTERFACE_ERR (-2)
34#define BME280_ID_ERR (-3)
35#define BME280_NO_INIT_ERR (-4)
36#define BME280_CONDITION_ERR (-5)
37#define BME280_BUSY_ERR (-6)
39
48#define BME280_I2CADDR_SDOL (0x76)
49#define BME280_I2CADDR_SDOH (0x77)
51
57#define BME280_ID (0x60)
58#define BME280_ID_ADDR (0xD0)
59
60 /* Reset related */
61#define BME280_RESET_ADDR (0xE0)
62#define BME280_RESET_VALUE (0xB6)
63
64 /* calibration data related */
65#define BME280_CALIB_DATA1_ADDR (0x88)
66#define BME280_CALIB_DATA1_LEN (25U)
67#define BME280_CALIB_DATA2_ADDR (0xE1)
68#define BME280_CALIB_DATA2_LEN (7U)
69
70 /* control and config related */
71#define BME280_CTRL_HUM_ADDR (0xF2)
72#define BME280_CTRL_MEAS_ADDR (0xF4)
73#define BME280_CONFIG_ADDR (0xF5)
74
75 /* raw adc data related */
76#define BME280_PRESS_ADC_ADDR (0xF7)
77#define BME280_PRESS_ADC_LEN (3U)
78#define BME280_TEMP_ADC_ADDR (0xFA)
79#define BME280_TEMP_ADC_LEN (3U)
80#define BME280_HUM_ADC_ADDR (0xFD)
81#define BME280_HUM_ADC_LEN (2U)
82
83 /* status register */
84#define BME280_STATUS_ADDR (0xF3)
86
99 /* oversampling values */
100#define BME280_OVERSAMPLING_SKIPP (0x00)
101#define BME280_OVERSAMPLING_X1 (0x01)
102#define BME280_OVERSAMPLING_X2 (0x02)
103#define BME280_OVERSAMPLING_X4 (0x03)
104#define BME280_OVERSAMPLING_X8 (0x04)
105#define BME280_OVERSAMPLING_X16 (0x05)
107
114 /* operating mode */
115#define BME280_SLEEPMODE (0x00)
116#define BME280_FORCEDMODE (0x01)
117#define BME280_NORMALMODE (0x03)
119
126 /* standby time in normal mode */
127#define BME280_STBY_0_5MS (0x00)
128#define BME280_STBY_62_5MS (0x01)
129#define BME280_STBY_125MS (0x02)
130#define BME280_STBY_250MS (0x03)
131#define BME280_STBY_500MS (0x04)
132#define BME280_STBY_1000MS (0x05)
133#define BME280_STBY_10MS (0x06)
134#define BME280_STBY_20MS (0x07)
136
143 /* filter coefficient */
144#define BME280_FILTER_OFF (0x00)
145#define BME280_FILTER_2 (0x01)
146#define BME280_FILTER_4 (0x02)
147#define BME280_FILTER_8 (0x03)
148#define BME280_FILTER_16 (0x04)
150
152
172typedef int8_t (*bme280_readregisters)(uint8_t reg_addr, uint8_t *rxbuff, uint8_t rxlen, void *driver);
173
184typedef int8_t (*bme280_writeregister)(uint8_t reg_addr, uint8_t value, void *driver);
185
190typedef void (*bme280_delayms)(uint8_t delay_time);
192
200typedef int32_t BME280_S32_t;
201typedef uint32_t BME280_U32_t;
202typedef int64_t BME280_S64_t;
204
212
213 uint16_t dig_T1;
214 int16_t dig_T2;
215 int16_t dig_T3;
216
217 uint16_t dig_P1;
218 int16_t dig_P2;
219 int16_t dig_P3;
220 int16_t dig_P4;
221 int16_t dig_P5;
222 int16_t dig_P6;
223 int16_t dig_P7;
224 int16_t dig_P8;
225 int16_t dig_P9;
226
227 uint8_t dig_H1;
228 int16_t dig_H2;
229 uint8_t dig_H3;
230 int16_t dig_H4;
231 int16_t dig_H5;
232 int8_t dig_H6;
233};
235
243typedef struct {
244
254 uint8_t i2c_address;
255
258
266typedef struct {
267
270
275
277 uint8_t initialized;
279 uint8_t mode;
280
281} BME280_t;
283
291typedef struct {
292
296 uint8_t mode;
297 uint8_t t_stby;
298 uint8_t filter;
299 uint8_t spi3w_enable;
300
303
311typedef struct {
312
313 int8_t temp_int;
314 uint8_t temp_fract;
315
316 uint16_t pressure_int;
317 uint16_t pressure_fract;
318
319 uint8_t humidity_int;
320 uint16_t humidity_fract;
321
324
332typedef struct {
333
334 float temp;
335 float press;
336 float hum;
337
340
341#endif /* BME280_DEFINITIONS_H */
342
int8_t(* bme280_writeregister)(uint8_t reg_addr, uint8_t value, void *driver)
Definition bme280_definitions.h:184
int8_t(* bme280_readregisters)(uint8_t reg_addr, uint8_t *rxbuff, uint8_t rxlen, void *driver)
Definition bme280_definitions.h:172
void(* bme280_delayms)(uint8_t delay_time)
Definition bme280_definitions.h:190
int64_t BME280_S64_t
signed 64-bit integer variable
Definition bme280_definitions.h:202
uint32_t BME280_U32_t
unsigned 32-bit integer variable
Definition bme280_definitions.h:201
int32_t BME280_S32_t
signed 32-bit integer variable
Definition bme280_definitions.h:200
Contains all sensor's settings.
Definition bme280_definitions.h:291
uint8_t oversampling_t
value of temperature oversampling, should be in range of Oversampling
Definition bme280_definitions.h:295
uint8_t spi3w_enable
enable SPI 3-wire mode, 1 - enable, 0 - disable
Definition bme280_definitions.h:299
uint8_t oversampling_p
value of pressure oversampling, should be in range of Oversampling
Definition bme280_definitions.h:294
uint8_t t_stby
standby time for normal mode, should be in range of Standby Time
Definition bme280_definitions.h:297
uint8_t oversampling_h
value of humidity oversampling, should be in range of Oversampling
Definition bme280_definitions.h:293
uint8_t mode
operating mode, should be in range of Operating Mode
Definition bme280_definitions.h:296
uint8_t filter
filter coeficient, should be in range of IIR Filter
Definition bme280_definitions.h:298
Contains result of measure (with floating points variables)
Definition bme280_definitions.h:332
float hum
contains measured humidity, f.e. 49.274 %
Definition bme280_definitions.h:336
float press
contains measured pressure, f.e. 1001.891 hPa
Definition bme280_definitions.h:335
float temp
contains measured temperature, f.e. 21.37deg C
Definition bme280_definitions.h:334
Contains result of measure (no floating points variables)
Definition bme280_definitions.h:311
uint8_t temp_fract
contains fractional part value of measured temperature, f.e contains 37 for 21.37deg C
Definition bme280_definitions.h:314
uint8_t humidity_int
contains integer value of measured humidity, f.e contains 49 for 49.274 %
Definition bme280_definitions.h:319
uint16_t humidity_fract
contains fractional part value of measured humidity, f.e contains 274 for 49.274 %
Definition bme280_definitions.h:320
uint16_t pressure_fract
contains fractional part value of measured pressure, f.e contains 891 for 1001.891 hPa
Definition bme280_definitions.h:317
int8_t temp_int
contains integer value of measured temperature, f.e contains 21 for 21.37deg C
Definition bme280_definitions.h:313
uint16_t pressure_int
contains integer value of measured pressure, f.e contains 1001 for 1001.891 hPa
Definition bme280_definitions.h:316
Keeps all data specific for used platform.
Definition bme280_definitions.h:243
uint8_t i2c_address
(I2C only) 7-bit address on I2C bus, should be BME280_I2CADDR_SDOL or BME280_I2CADDR_SDOH
Definition bme280_definitions.h:254
void * env_spec_data
pointer to platform specific data (f.e. to i2c bus structure)
Definition bme280_definitions.h:252
bme280_writeregister write
pointer to user defined function that writes data to sensor
Definition bme280_definitions.h:248
bme280_readregisters read
pointer to user defined function that reads data from sensor
Definition bme280_definitions.h:246
bme280_delayms delay
pointer to user defined delay function
Definition bme280_definitions.h:250
Keeps calibration data that were read from sensor.
Definition bme280_definitions.h:211
Keeps all data related to a single sensor.
Definition bme280_definitions.h:266
BME280_Driver_t * driver
structure with driver functions
Definition bme280_definitions.h:269
uint8_t initialized
variable stores current initialization status
Definition bme280_definitions.h:277
BME280_S32_t t_fine
variable keeps result of internal temperature compensation and is used to compensate pressure and hum...
Definition bme280_definitions.h:274
uint8_t mode
variable stores current operating mode
Definition bme280_definitions.h:279