10#ifndef M5_UNIT_IMU_UNIT_UNIT_BMI270_AUX_BMM150_HPP
11#define M5_UNIT_IMU_UNIT_UNIT_BMI270_AUX_BMM150_HPP
77 virtual bool begin()
override;
97 _cfg_aux_bmm150 = cfg;
110 const auto base = Capability::Accel | Capability::Gyro | Capability::Temp;
111 return _aux_mag ? (base | Capability::Mag) : base;
124 bool sleep()
override;
191 bool setup_aux_bmm150();
194 bool aux_enter_setup_mode();
197 bool aux_detect_bmm150();
200 bool aux_enter_data_mode();
202 bool aux_wait_ready();
203 bool aux_write_register8(
const uint8_t reg,
const uint8_t val);
204 bool aux_read_register8(
const uint8_t reg, uint8_t& out);
206 bool aux_read_burst8(
const uint8_t bmm150_reg, std::array<uint8_t, 8>& out);
214 config_t _cfg_aux_bmm150{};
217 uint8_t _aux_rep_xy{};
218 uint8_t _aux_rep_z{};
222 bool _aux_mag{
false};
223 bmm150::trim_t _mag_trim{};
BMI270 that switches on its auxiliary (AUX) interface and drives a BMM150 through it.
Definition unit_bmi270_aux_bmm150.hpp:49
AuxDetect
Definition unit_bmi270_aux_bmm150.hpp:176
@ Unknown
Not probed yet, or invalidated by begin()/sleep()
@ Present
A BMM150 answered and _mag_trim holds its factory trim.
@ Absent
Nothing answered on the interface; it is left switched off.
virtual void imuConvertParam(m5::imu::imu_convert_param_t &out) const override
Gets the conversion parameters for raw IMU data.
Definition unit_bmi270_aux_bmm150.cpp:206
virtual ~UnitBMI270AuxBMM150()
Destructor.
Definition unit_bmi270_aux_bmm150.hpp:72
virtual bool read_sensor_burst(bmi270::Data &d) override
One 20 byte burst covering mag + accel + gyro, instead of the base's 12 byte accel/gyro read.
Definition unit_bmi270_aux_bmm150.cpp:187
bool readAuxMagRepetition(uint8_t &rep_xy, uint8_t &rep_z) const
Read the repetition (oversampling) the AUX BMM150 is configured with.
Definition unit_bmi270_aux_bmm150.cpp:123
config_t config() const
Gets the configuration.
Definition unit_bmi270_aux_bmm150.hpp:83
void config(const config_t &cfg)
Set the configuration.
Definition unit_bmi270_aux_bmm150.hpp:95
virtual m5::imu::Capability imuSpec() const override
Capability of this unit.
Definition unit_bmi270_aux_bmm150.hpp:107
bool writeAuxMagPreset(const bmm150::Preset preset)
Write the accuracy/power preset of the AUX BMM150.
Definition unit_bmi270_aux_bmm150.cpp:102
UnitBMI270AuxBMM150(const uint8_t addr=DEFAULT_ADDRESS)
Construct with the BMI270's I2C address (the AUX BMM150 sits behind the bridge)
Definition unit_bmi270_aux_bmm150.cpp:84
bool sleep() override
Suspend the chip, parking the AUX BMM150 first.
Definition unit_bmi270_aux_bmm150.cpp:214
bool writeAuxMagRepetition(const uint8_t rep_xy, const uint8_t rep_z)
Write the repetition (oversampling) of the AUX BMM150.
Definition unit_bmi270_aux_bmm150.cpp:107
virtual bool begin() override
Seed the magnetometer's live state from config_t, then run the base begin()
Definition unit_bmi270_aux_bmm150.cpp:88
6-axis (accel + gyro) IMU unit. CoreS3/AtomS3R built-in
Definition unit_bmi270.hpp:34
config_t config() const
Gets the configuration.
Definition unit_bmi270.hpp:92
Capability
Capability of the IMU data source (bitwise combinable)
Definition imu_types.hpp:22
Top level namespace of M5Stack.
Definition ahrs_controller.cpp:26
Raw to physical unit conversion coefficients.
Definition imu_types.hpp:69
Settings for begin()
Definition unit_bmi270.hpp:47
Settings for begin(), extending the base with the magnetometer's own.
Definition unit_bmi270_aux_bmm150.hpp:57
bmm150::Preset aux_mag_preset
Definition unit_bmi270_aux_bmm150.hpp:65
One measurement. Accel/gyro are always 12 bytes, little-endian (register 0x0C when the AUX/BMM150 bri...
Definition unit_bmi270_data.hpp:179
Factory trim (calibration) values read from registers 0x5D-0x71, consumed by the compensation formula...
Definition unit_bmm150_data.hpp:125
UnitBMI270 (6-axis IMU) unit component.
GyroBwp
Gyroscope bandwidth parameter (REG_GYR_CONF register 0x42, bits[5:4])
Definition unit_bmi270_data.hpp:110
AccelBwp
Accelerometer bandwidth parameter (REG_ACC_CONF register 0x40, bits[6:4])
Definition unit_bmi270_data.hpp:93
FilterPerf
Filter performance mode (REG_ACC_CONF bit7 / REG_GYR_CONF bit7)
Definition unit_bmi270_data.hpp:81
GyroODR
Gyroscope output data rate (REG_GYR_CONF register 0x42, bits[3:0])
Definition unit_bmi270_data.hpp:65
GyroRange
Gyroscope full scale range (REG_GYR_RANGE register 0x43)
Definition unit_bmi270_data.hpp:38
AccelRange
Accelerometer full scale range (REG_ACC_RANGE register 0x41)
Definition unit_bmi270_data.hpp:25
AccelODR
Accelerometer output data rate (REG_ACC_CONF register 0x40, bits[3:0])
Definition unit_bmi270_data.hpp:50
Preset
Preset accuracy/power modes, controlling the REG_REP_XY/REG_REP_Z repetition counts (see preset_rep_x...
Definition unit_bmm150_data.hpp:41