ESPHome 2026.6.2
Loading...
Searching...
No Matches
bmi270.h
Go to the documentation of this file.
1#pragma once
2
7#include <functional>
8
9namespace esphome::bmi270 {
10
11// Register map
12static const uint8_t BMI270_REG_CHIP_ID = 0x00;
13static const uint8_t BMI270_REG_ERR_REG = 0x02;
14static const uint8_t BMI270_REG_STATUS = 0x03;
15static const uint8_t BMI270_REG_DATA_8 = 0x0C; // ACC_X LSB
16static const uint8_t BMI270_REG_DATA_14 = 0x12; // GYR_X LSB
17static const uint8_t BMI270_REG_TEMP_0 = 0x22;
18static const uint8_t BMI270_REG_TEMP_MSB = 0x23; // temperature (2 bytes big-endian ish)
19
20static constexpr uint8_t REG_READ_LEN =
21 BMI270_REG_TEMP_MSB - BMI270_REG_DATA_8 +
22 1; // 0x23 - 0x0C + 1 = 0x18 bytes total for accel(6) + gyro(6) + temp(2) + padding(4)
23
24static const uint8_t BMI270_REG_PWR_CONF = 0x7C;
25static const uint8_t BMI270_REG_PWR_CTRL = 0x7D;
26static const uint8_t BMI270_REG_INIT_CTRL = 0x59;
27static const uint8_t BMI270_REG_INIT_DATA = 0x5E;
28static const uint8_t BMI270_REG_INIT_ADDR_0 = 0x5B;
29static const uint8_t BMI270_REG_INTERNAL_STATUS = 0x21;
30static const uint8_t BMI270_REG_ACC_CONF = 0x40;
31static const uint8_t BMI270_REG_ACC_RANGE = 0x41;
32static const uint8_t BMI270_REG_GYR_CONF = 0x42;
33static const uint8_t BMI270_REG_GYR_RANGE = 0x43;
34
35static const uint8_t BMI270_CHIP_ID_VALUE = 0x24;
36
37// Accelerometer range options
44
45// Accelerometer ODR options
56
57// Gyroscope range options
65
66// Gyroscope ODR options
77
78// ---Data class
79
80// Main component class
82 public:
83 // Lifecycle
84 void setup() override;
85 void dump_config() override;
86 float get_setup_priority() const override { return setup_priority::DATA; }
87
88 // Configuration setters
92 void set_gyro_odr(BMI270GyroODR o) { this->gyro_odr_ = o; }
93 template<typename F> void add_temperature_listener(F &&cb) { this->temperature_callback_.add(std::forward<F>(cb)); }
94
95 protected:
96 bool update_data(motion::MotionData &data) override;
97 bool load_config_file_();
98
99 // Config
104
106};
107
108} // namespace esphome::bmi270
void set_gyro_range(BMI270GyroRange r)
Definition bmi270.h:91
void set_accel_range(BMI270AccelRange r)
Definition bmi270.h:89
LazyCallbackManager< void(float)> temperature_callback_
Definition bmi270.h:105
bool update_data(motion::MotionData &data) override
Definition bmi270.cpp:162
void set_accel_odr(BMI270AccelODR o)
Definition bmi270.h:90
float get_setup_priority() const override
Definition bmi270.h:86
void add_temperature_listener(F &&cb)
Definition bmi270.h:93
BMI270AccelRange accel_range_
Definition bmi270.h:100
void set_gyro_odr(BMI270GyroODR o)
Definition bmi270.h:92
BMI270GyroRange gyro_range_
Definition bmi270.h:102
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:132
@ BMI270_ACCEL_ODR_25
Definition bmi270.h:48
@ BMI270_ACCEL_ODR_800
Definition bmi270.h:53
@ BMI270_ACCEL_ODR_400
Definition bmi270.h:52
@ BMI270_ACCEL_ODR_200
Definition bmi270.h:51
@ BMI270_ACCEL_ODR_100
Definition bmi270.h:50
@ BMI270_ACCEL_ODR_1600
Definition bmi270.h:54
@ BMI270_ACCEL_ODR_12_5
Definition bmi270.h:47
@ BMI270_ACCEL_ODR_50
Definition bmi270.h:49
@ BMI270_GYRO_RANGE_250
Definition bmi270.h:62
@ BMI270_GYRO_RANGE_500
Definition bmi270.h:61
@ BMI270_GYRO_RANGE_125
Definition bmi270.h:63
@ BMI270_GYRO_RANGE_2000
Definition bmi270.h:59
@ BMI270_GYRO_RANGE_1000
Definition bmi270.h:60
@ BMI270_ACCEL_RANGE_4G
Definition bmi270.h:40
@ BMI270_ACCEL_RANGE_16G
Definition bmi270.h:42
@ BMI270_ACCEL_RANGE_2G
Definition bmi270.h:39
@ BMI270_ACCEL_RANGE_8G
Definition bmi270.h:41
@ BMI270_GYRO_ODR_200
Definition bmi270.h:71
@ BMI270_GYRO_ODR_1600
Definition bmi270.h:74
@ BMI270_GYRO_ODR_50
Definition bmi270.h:69
@ BMI270_GYRO_ODR_100
Definition bmi270.h:70
@ BMI270_GYRO_ODR_800
Definition bmi270.h:73
@ BMI270_GYRO_ODR_400
Definition bmi270.h:72
@ BMI270_GYRO_ODR_3200
Definition bmi270.h:75
@ BMI270_GYRO_ODR_25
Definition bmi270.h:68
constexpr float DATA
For components that import data from directly connected sensors like DHT.
Definition component.h:43