4 #if defined (ESP_PLATFORM)
7 #include <freertos/FreeRTOS.h>
8 #include <freertos/task.h>
14 : IMU_Base ( i2c_addr, freq, i2c )
17 IMU_Base::imu_spec_t AK8963_Class::begin(I2C_Class* i2c)
25 writeRegister8(CTRL_CMD_ADDR, POWER_DOWN_CMD);
27 writeRegister8(CTRL_CMD_ADDR, FUSE_ROM_CMD);
29 readRegister(ASAX_ADDR, rawData, 3);
31 writeRegister8(CTRL_CMD_ADDR, POWER_DOWN_CMD);
37 writeRegister8(CTRL_CMD_ADDR, 1 << 4 | 0x06);
49 std::uint8_t AK8963_Class::WhoAmI(
void)
51 return readRegister8(WHO_AM_I_ADDR);
54 IMU_Base::imu_spec_t AK8963_Class::getImuRawData(imu_raw_data_t* data)
const
58 std::uint8_t buf8[10];
59 std::int16_t buf16[5];
61 bool res = readRegister(STATUS1_ADDR, &buf8[1], 8) && buf8[1] && (0 == (buf8[8] & 0x08));
64 data->mag.x = buf16[1];
65 data->mag.y = buf16[2];
66 data->mag.z = buf16[3];
72 void AK8963_Class::getConvertParam(imu_convert_param_t* param)
const
74 param->mag_res = 10.0f * 4912.0f / 32760.0f;
AK8963_Class(std::uint8_t i2c_addr=DEFAULT_ADDRESS, std::uint32_t freq=400000, I2C_Class *i2c=&In_I2C)