4 #if defined (ESP_PLATFORM)
7 #include <freertos/FreeRTOS.h>
8 #include <freertos/task.h>
15 : IMU_Base ( i2c_addr, freq, i2c )
18 IMU_Base::imu_spec_t SH200Q_Class::begin(I2C_Class* i2c)
44 static constexpr std::uint8_t init_cmd[] =
61 std::uint8_t reg = init_cmd[++idx];
62 std::uint8_t val = init_cmd[++idx];
63 if ((reg & val) == 0xFF) {
break; }
64 writeRegister8(reg, val);
77 return (imu_spec_t)(imu_spec_accel | imu_spec_gyro);
80 IMU_Base::imu_spec_t SH200Q_Class::getImuRawData(imu_raw_data_t* data)
const
84 uint8_t st = readRegister8(0x2C);
89 bool res = readRegister(0x00, (std::uint8_t*)buf, 14);
92 memcpy(data->value, buf, 12);
93 return (imu_spec_t)(imu_spec_accel | imu_spec_gyro);
148 std::uint8_t SH200Q_Class::WhoAmI(
void)
150 return readRegister8(0x30);
203 void SH200Q_Class::getConvertParam(imu_convert_param_t* param)
const
205 param->accel_res = 8.0f / 32768.0f;
206 param->gyro_res = 2000.0f / 32768.0f;
207 param->temp_res = 1.0f / 333.87f;
208 param->temp_offset = 21.0f;
211 bool SH200Q_Class::getTempAdc(int16_t *t)
const
214 bool res = readRegister(0x0C, (std::uint8_t*)&buf, 2);
215 if (res) { *t = buf; }
SH200Q_Class(std::uint8_t i2c_addr=DEFAULT_ADDRESS, std::uint32_t freq=400000, I2C_Class *i2c=&In_I2C)