|
|
@@ -64,7 +64,7 @@ Icm20948::Icm20948(SpiManager *spi, icm20948_Config *config){
|
|
|
this->gyroSensor->data.type = ICM20948_GYRO + _activeDevice;
|
|
|
this->magSensor->data.type = ICM20948_MAG + _activeDevice;
|
|
|
|
|
|
- this->icm20948_device_reset();
|
|
|
+ this->Reset();
|
|
|
this->Wakeup();
|
|
|
|
|
|
this->icm20948_clock_source(1);
|
|
|
@@ -85,8 +85,8 @@ Icm20948::Icm20948(SpiManager *spi, icm20948_Config *config){
|
|
|
|
|
|
this->Calibrate();
|
|
|
|
|
|
- this->accSensor->SetRange(_16g);
|
|
|
- this->gyroSensor->SetRange(_2000dps);
|
|
|
+ this->accSensor->SetRange(config->accel.full_scale);
|
|
|
+ this->gyroSensor->SetRange(config->gyro.full_scale);
|
|
|
|
|
|
this->ak09916_init(&config->mag);
|
|
|
_sensor_ready = true;
|
|
|
@@ -109,7 +109,7 @@ bool Icm20948::icm20948_who_am_i()
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-void Icm20948::icm20948_device_reset()
|
|
|
+void Icm20948::Reset()
|
|
|
{
|
|
|
_spi->write_single_reg(_activeDevice, ub_0, B0_PWR_MGMT_1, 0x80 | 0x41); // reset, sleep, source PLL auto
|
|
|
HAL_Delay(100);
|
|
|
@@ -734,9 +734,9 @@ void SensorAccel::Calibrate()
|
|
|
accel_bias_reg[2] = (int32_t)(temp4[0] << 8 | temp4[1]);
|
|
|
mask_bit[2] = temp4[1] & 0x01;
|
|
|
|
|
|
- accel_bias_reg[0] -= (accel_bias[0] / 8);
|
|
|
- accel_bias_reg[1] -= (accel_bias[1] / 8);
|
|
|
- accel_bias_reg[2] -= (accel_bias[2] / 8);
|
|
|
+ accel_bias_reg[0] -= (accel_bias[0]/8 );
|
|
|
+ accel_bias_reg[1] -= (accel_bias[1]/8 );
|
|
|
+ accel_bias_reg[2] -= (accel_bias[2]/8 ); // (accel_bias[2]/8)
|
|
|
|
|
|
accel_offset[0] = (accel_bias_reg[0] >> 8) & 0xFF;
|
|
|
accel_offset[1] = (accel_bias_reg[0]) & 0xFE;
|
|
|
@@ -750,6 +750,7 @@ void SensorAccel::Calibrate()
|
|
|
accel_offset[5] = (accel_bias_reg[2]) & 0xFE;
|
|
|
accel_offset[5] = accel_offset[5] | mask_bit[2];
|
|
|
|
|
|
+
|
|
|
_spi->write_multiple_reg(_activeDevice, ub_1, B1_XA_OFFS_H, &accel_offset[0], 2);
|
|
|
_spi->write_multiple_reg(_activeDevice, ub_1, B1_YA_OFFS_H, &accel_offset[2], 2);
|
|
|
_spi->write_multiple_reg(_activeDevice, ub_1, B1_ZA_OFFS_H, &accel_offset[4], 2);
|