8#ifndef SRC_DRIVER_BME280_DRV_H_
9#define SRC_DRIVER_BME280_DRV_H_
11#include "i2c_interface.h"
15 static const uint8_t ADDRESS = 0x76;
18 static const uint8_t RESET = 0xB6;
22 static const uint8_t REG_HUM_LSB = 0xFE;
23 static const uint8_t REG_HUM_MSB = 0xFD;
24 static const uint8_t REG_TEMP_XLSB = 0xFC;
25 static const uint8_t REG_TEMP_LSB = 0xFB;
26 static const uint8_t REG_TEMP_MSB = 0xFA;
27 static const uint8_t REG_PRESS_XLSB = 0xF9;
28 static const uint8_t REG_PRESS_LSB = 0xF8;
29 static const uint8_t REG_PRESS_MSB = 0xF7;
30 static const uint8_t REG_CONFIG = 0xF5;
31 static const uint8_t REG_CTRL_MEAS = 0xF4;
32 static const uint8_t REG_STATUS = 0xF3;
33 static const uint8_t REG_CTRL_HUM = 0xF2;
34 static const uint8_t REG_RESET = 0xE0;
35 static const uint8_t REG_ID = 0xD0;
39 static const uint8_t REG_DIG_T1 = 0x88;
40 static const uint8_t REG_DIG_T2 = 0x8A;
41 static const uint8_t REG_DIG_T3 = 0x8C;
44 static const uint8_t REG_DIG_P1 = 0x8E;
45 static const uint8_t REG_DIG_P2 = 0x90;
46 static const uint8_t REG_DIG_P3 = 0x92;
47 static const uint8_t REG_DIG_P4 = 0x94;
48 static const uint8_t REG_DIG_P5 = 0x96;
49 static const uint8_t REG_DIG_P6 = 0x98;
50 static const uint8_t REG_DIG_P7 = 0x9A;
51 static const uint8_t REG_DIG_P8 = 0x9C;
52 static const uint8_t REG_DIG_P9 = 0x9E;
55 static const uint8_t REG_DIG_H1 = 0xA1;
56 static const uint8_t REG_DIG_H2 = 0xE1;
57 static const uint8_t REG_DIG_H3 = 0xE3;
58 static const uint8_t REG_DIG_H4 = 0xE4;
59 static const uint8_t REG_DIG_H5 = 0xE5;
60 static const uint8_t REG_DIG_H6 = 0xE7;
62 enum class SAMPLING : uint8_t {
71 enum class MODE : uint8_t {
77 enum class FILTER : uint8_t {
85 enum class STANDBY_TIME : uint8_t {
128 float get_temperature();
129 float get_pressure();
130 float get_humidity();
131 void set_sampling(BME280::MODE m,
133 BME280::STANDBY_TIME t,
134 BME280::SAMPLING s_temp,
135 BME280::SAMPLING s_press,
136 BME280::SAMPLING s_hum);
138 void get_calibration_data();
139 bool detect_sensor();
148 void writeRegister(uint8_t reg, uint8_t val);
149 uint8_t readRegister(uint8_t reg);
150 uint32_t read_u24(uint8_t reg);
151 uint16_t read_u16(uint8_t reg);
152 uint16_t read_u16_le(uint8_t reg);
153 uint16_t read_s16_le(uint8_t reg);