M5Unified
BMI270_Class.hpp
Go to the documentation of this file.
1 // Copyright (c) M5Stack. All rights reserved.
2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3 
4 #ifndef __M5_BMI270_CLASS_H__
5 #define __M5_BMI270_CLASS_H__
6 
7 #include "IMU_Base.hpp"
8 
9 namespace m5
10 {
11  class BMI270_Class : public IMU_Base
12  {
13  public:
14  static constexpr const std::uint8_t CHIP_ID_ADDR = 0x00;
15  static constexpr const std::uint8_t ERR_REG_ADDR = 0x02;
16  static constexpr const std::uint8_t STATUS_ADDR = 0x03;
17  static constexpr const std::uint8_t AUX_X_LSB_ADDR = 0x04;
18  static constexpr const std::uint8_t ACC_X_LSB_ADDR = 0x0C;
19  static constexpr const std::uint8_t GYR_X_LSB_ADDR = 0x12;
20  static constexpr const std::uint8_t SENSORTIME_ADDR = 0x18;
21  static constexpr const std::uint8_t EVENT_ADDR = 0x1B;
22  static constexpr const std::uint8_t INT_STATUS_0_ADDR = 0x1C;
23  static constexpr const std::uint8_t INT_STATUS_1_ADDR = 0x1D;
24  static constexpr const std::uint8_t SC_OUT_0_ADDR = 0x1E;
25  static constexpr const std::uint8_t SYNC_COMMAND_ADDR = 0x1E;
26  static constexpr const std::uint8_t GYR_CAS_GPIO0_ADDR = 0x1E;
27  static constexpr const std::uint8_t INTERNAL_STATUS_ADDR = 0x21;
28  static constexpr const std::uint8_t TEMPERATURE_0_ADDR = 0x22;
29  static constexpr const std::uint8_t FIFO_LENGTH_0_ADDR = 0x24;
30  static constexpr const std::uint8_t FIFO_DATA_ADDR = 0x26;
31  static constexpr const std::uint8_t FEAT_PAGE_ADDR = 0x2F;
32  static constexpr const std::uint8_t FEATURES_REG_ADDR = 0x30;
33  static constexpr const std::uint8_t ACC_CONF_ADDR = 0x40;
34  static constexpr const std::uint8_t GYR_CONF_ADDR = 0x42;
35  static constexpr const std::uint8_t AUX_CONF_ADDR = 0x44;
36  static constexpr const std::uint8_t FIFO_DOWNS_ADDR = 0x45;
37  static constexpr const std::uint8_t FIFO_WTM_0_ADDR = 0x46;
38  static constexpr const std::uint8_t FIFO_WTM_1_ADDR = 0x47;
39  static constexpr const std::uint8_t FIFO_CONFIG_0_ADDR = 0x48;
40  static constexpr const std::uint8_t FIFO_CONFIG_1_ADDR = 0x49;
41  static constexpr const std::uint8_t AUX_DEV_ID_ADDR = 0x4B;
42  static constexpr const std::uint8_t AUX_IF_CONF_ADDR = 0x4C;
43  static constexpr const std::uint8_t AUX_RD_ADDR = 0x4D;
44  static constexpr const std::uint8_t AUX_WR_ADDR = 0x4E;
45  static constexpr const std::uint8_t AUX_WR_DATA_ADDR = 0x4F;
46  static constexpr const std::uint8_t INT1_IO_CTRL_ADDR = 0x53;
47  static constexpr const std::uint8_t INT2_IO_CTRL_ADDR = 0x54;
48  static constexpr const std::uint8_t INT_LATCH_ADDR = 0x55;
49  static constexpr const std::uint8_t INT1_MAP_FEAT_ADDR = 0x56;
50  static constexpr const std::uint8_t INT2_MAP_FEAT_ADDR = 0x57;
51  static constexpr const std::uint8_t INT_MAP_DATA_ADDR = 0x58;
52  static constexpr const std::uint8_t INIT_CTRL_ADDR = 0x59;
53  static constexpr const std::uint8_t INIT_ADDR_0 = 0x5B;
54  static constexpr const std::uint8_t INIT_ADDR_1 = 0x5C;
55  static constexpr const std::uint8_t INIT_DATA_ADDR = 0x5E;
56  static constexpr const std::uint8_t AUX_IF_TRIM = 0x68;
57  static constexpr const std::uint8_t GYR_CRT_CONF_ADDR = 0x69;
58  static constexpr const std::uint8_t NVM_CONF_ADDR = 0x6A;
59  static constexpr const std::uint8_t IF_CONF_ADDR = 0x6B;
60  static constexpr const std::uint8_t ACC_SELF_TEST_ADDR = 0x6D;
61  static constexpr const std::uint8_t GYR_SELF_TEST_AXES_ADDR = 0x6E;
62  static constexpr const std::uint8_t SELF_TEST_MEMS_ADDR = 0x6F;
63  static constexpr const std::uint8_t NV_CONF_ADDR = 0x70;
64  static constexpr const std::uint8_t ACC_OFF_COMP_0_ADDR = 0x71;
65  static constexpr const std::uint8_t GYR_OFF_COMP_3_ADDR = 0x74;
66  static constexpr const std::uint8_t GYR_OFF_COMP_6_ADDR = 0x77;
67  static constexpr const std::uint8_t GYR_USR_GAIN_0_ADDR = 0x78;
68  static constexpr const std::uint8_t PWR_CONF_ADDR = 0x7C;
69  static constexpr const std::uint8_t PWR_CTRL_ADDR = 0x7D;
70  static constexpr const std::uint8_t CMD_REG_ADDR = 0x7E;
71 
72 
73  static constexpr const std::uint8_t G_TRIGGER_CMD = 0x02;
74  static constexpr const std::uint8_t USR_GAIN_CMD = 0x03;
75  static constexpr const std::uint8_t NVM_PROG_CMD = 0xA0;
76  static constexpr const std::uint8_t SOFT_RESET_CMD = 0xB6;
77  static constexpr const std::uint8_t FIFO_FLUSH_CMD = 0xB0;
78 
79 
80  static constexpr std::uint8_t DEFAULT_ADDRESS = 0x69;
81 
82  virtual ~BMI270_Class();
83  BMI270_Class(std::uint8_t i2c_addr = DEFAULT_ADDRESS, std::uint32_t freq = 400000, I2C_Class* i2c = &In_I2C);
84 
85  imu_spec_t begin(I2C_Class* i2c = nullptr) override;
86  imu_spec_t getImuRawData(imu_raw_data_t* data) const override;
87  void getConvertParam(imu_convert_param_t* param) const override;
88  bool getTempAdc(int16_t* adc) const override;
89 
90  std::uint8_t WhoAmI(void);
91 /*
92  bool getAccelAdc(std::int16_t* ax, std::int16_t* ay, std::int16_t* az) const override;
93  bool getGyroAdc(std::int16_t* gx, std::int16_t* gy, std::int16_t* gz) const override;
94  bool getAccel(float* ax, float* ay, float* az) const override;
95  bool getGyro(float* gx, float* gy, float* gz) const override;
96  bool getTemp(float *t) const override;
97 //*/
98  protected:
99  bool _upload_file(const std::uint8_t *config_data, std::size_t index, std::size_t write_len);
100 
101  bool auxSetupMode(std::uint8_t i2c_addr);
102  bool auxWriteRegister8(std::uint8_t reg, std::uint8_t data);
103  std::uint8_t auxReadRegister8(std::uint8_t reg);
104  };
105 }
106 
107 #endif
static constexpr const std::uint8_t SYNC_COMMAND_ADDR
void getConvertParam(imu_convert_param_t *param) const override
static constexpr const std::uint8_t GYR_CAS_GPIO0_ADDR
static constexpr const std::uint8_t FIFO_DOWNS_ADDR
static constexpr const std::uint8_t INIT_CTRL_ADDR
static constexpr const std::uint8_t FIFO_LENGTH_0_ADDR
static constexpr const std::uint8_t FIFO_WTM_1_ADDR
static constexpr const std::uint8_t FEAT_PAGE_ADDR
static constexpr const std::uint8_t GYR_OFF_COMP_6_ADDR
static constexpr const std::uint8_t TEMPERATURE_0_ADDR
static constexpr const std::uint8_t GYR_X_LSB_ADDR
static constexpr const std::uint8_t AUX_DEV_ID_ADDR
static constexpr const std::uint8_t FIFO_CONFIG_0_ADDR
static constexpr const std::uint8_t GYR_SELF_TEST_AXES_ADDR
virtual ~BMI270_Class()
std::uint8_t WhoAmI(void)
static constexpr const std::uint8_t AUX_IF_CONF_ADDR
static constexpr const std::uint8_t INT_LATCH_ADDR
static constexpr const std::uint8_t ERR_REG_ADDR
static constexpr const std::uint8_t AUX_CONF_ADDR
imu_spec_t getImuRawData(imu_raw_data_t *data) const override
static constexpr const std::uint8_t GYR_OFF_COMP_3_ADDR
static constexpr const std::uint8_t ACC_CONF_ADDR
static constexpr const std::uint8_t INIT_ADDR_0
bool getTempAdc(int16_t *adc) const override
static constexpr const std::uint8_t AUX_IF_TRIM
static constexpr const std::uint8_t NVM_PROG_CMD
static constexpr const std::uint8_t ACC_X_LSB_ADDR
static constexpr const std::uint8_t NV_CONF_ADDR
static constexpr const std::uint8_t AUX_WR_ADDR
static constexpr const std::uint8_t FIFO_WTM_0_ADDR
static constexpr const std::uint8_t INT_STATUS_0_ADDR
static constexpr const std::uint8_t GYR_CRT_CONF_ADDR
std::uint8_t auxReadRegister8(std::uint8_t reg)
static constexpr const std::uint8_t AUX_WR_DATA_ADDR
static constexpr const std::uint8_t FIFO_CONFIG_1_ADDR
static constexpr const std::uint8_t INIT_ADDR_1
static constexpr const std::uint8_t FIFO_FLUSH_CMD
static constexpr std::uint8_t DEFAULT_ADDRESS
static constexpr const std::uint8_t STATUS_ADDR
BMI270_Class(std::uint8_t i2c_addr=DEFAULT_ADDRESS, std::uint32_t freq=400000, I2C_Class *i2c=&In_I2C)
static constexpr const std::uint8_t SELF_TEST_MEMS_ADDR
static constexpr const std::uint8_t INT2_MAP_FEAT_ADDR
bool auxSetupMode(std::uint8_t i2c_addr)
static constexpr const std::uint8_t INTERNAL_STATUS_ADDR
static constexpr const std::uint8_t ACC_OFF_COMP_0_ADDR
static constexpr const std::uint8_t INT_STATUS_1_ADDR
static constexpr const std::uint8_t FIFO_DATA_ADDR
static constexpr const std::uint8_t USR_GAIN_CMD
static constexpr const std::uint8_t INT2_IO_CTRL_ADDR
static constexpr const std::uint8_t GYR_CONF_ADDR
static constexpr const std::uint8_t EVENT_ADDR
static constexpr const std::uint8_t G_TRIGGER_CMD
static constexpr const std::uint8_t AUX_X_LSB_ADDR
static constexpr const std::uint8_t INT_MAP_DATA_ADDR
static constexpr const std::uint8_t FEATURES_REG_ADDR
static constexpr const std::uint8_t SENSORTIME_ADDR
static constexpr const std::uint8_t INT1_IO_CTRL_ADDR
static constexpr const std::uint8_t INIT_DATA_ADDR
static constexpr const std::uint8_t INT1_MAP_FEAT_ADDR
static constexpr const std::uint8_t CHIP_ID_ADDR
static constexpr const std::uint8_t PWR_CTRL_ADDR
static constexpr const std::uint8_t SOFT_RESET_CMD
imu_spec_t begin(I2C_Class *i2c=nullptr) override
static constexpr const std::uint8_t CMD_REG_ADDR
static constexpr const std::uint8_t ACC_SELF_TEST_ADDR
static constexpr const std::uint8_t NVM_CONF_ADDR
static constexpr const std::uint8_t PWR_CONF_ADDR
bool auxWriteRegister8(std::uint8_t reg, std::uint8_t data)
static constexpr const std::uint8_t SC_OUT_0_ADDR
static constexpr const std::uint8_t IF_CONF_ADDR
static constexpr const std::uint8_t GYR_USR_GAIN_0_ADDR
static constexpr const std::uint8_t AUX_RD_ADDR
bool _upload_file(const std::uint8_t *config_data, std::size_t index, std::size_t write_len)
Definition: M5Unified.cpp:48
I2C_Class In_I2C
for internal I2C device
Definition: I2C_Class.cpp:10