diff --git a/src/drivers/imu/invensense/icm20602/ICM20602.cpp b/src/drivers/imu/invensense/icm20602/ICM20602.cpp index c0452c56b4..d0ed918409 100644 --- a/src/drivers/imu/invensense/icm20602/ICM20602.cpp +++ b/src/drivers/imu/invensense/icm20602/ICM20602.cpp @@ -623,7 +623,7 @@ bool ICM20602::ProcessTemperature(const FIFOTransferBuffer &buffer, const uint8_ } // use average temperature reading - const float temperature_C = temperature_avg / TEMPERATURE_SENSITIVITY + ROOM_TEMPERATURE_OFFSET; + const float temperature_C = (temperature_avg / TEMPERATURE_SENSITIVITY) + TEMPERATURE_OFFSET; _px4_accel.set_temperature(temperature_C); _px4_gyro.set_temperature(temperature_C); diff --git a/src/drivers/imu/invensense/icm20602/InvenSense_ICM20602_registers.hpp b/src/drivers/imu/invensense/icm20602/InvenSense_ICM20602_registers.hpp index 96738d5bd7..4da10d3892 100644 --- a/src/drivers/imu/invensense/icm20602/InvenSense_ICM20602_registers.hpp +++ b/src/drivers/imu/invensense/icm20602/InvenSense_ICM20602_registers.hpp @@ -60,7 +60,7 @@ static constexpr uint8_t DIR_READ = 0x80; static constexpr uint8_t WHOAMI = 0x12; static constexpr float TEMPERATURE_SENSITIVITY = 326.8f; // LSB/C -static constexpr float ROOM_TEMPERATURE_OFFSET = 25.f; // C +static constexpr float TEMPERATURE_OFFSET = 25.f; // C enum class Register : uint8_t { CONFIG = 0x1A, diff --git a/src/drivers/imu/invensense/icm20608g/ICM20608G.cpp b/src/drivers/imu/invensense/icm20608g/ICM20608G.cpp index 80e75c30db..59cb8b5cfe 100644 --- a/src/drivers/imu/invensense/icm20608g/ICM20608G.cpp +++ b/src/drivers/imu/invensense/icm20608g/ICM20608G.cpp @@ -628,7 +628,7 @@ void ICM20608G::UpdateTemperature() } const int16_t TEMP_OUT = combine(temperature_buf[1], temperature_buf[2]); - const float TEMP_degC = ((TEMP_OUT - ROOM_TEMPERATURE_OFFSET) / TEMPERATURE_SENSITIVITY) + ROOM_TEMPERATURE_OFFSET; + const float TEMP_degC = (TEMP_OUT / TEMPERATURE_SENSITIVITY) + TEMPERATURE_OFFSET; if (PX4_ISFINITE(TEMP_degC)) { _px4_accel.set_temperature(TEMP_degC); diff --git a/src/drivers/imu/invensense/icm20608g/InvenSense_ICM20608G_registers.hpp b/src/drivers/imu/invensense/icm20608g/InvenSense_ICM20608G_registers.hpp index ffd156a5c0..f3f7c1ee61 100644 --- a/src/drivers/imu/invensense/icm20608g/InvenSense_ICM20608G_registers.hpp +++ b/src/drivers/imu/invensense/icm20608g/InvenSense_ICM20608G_registers.hpp @@ -60,7 +60,7 @@ static constexpr uint8_t DIR_READ = 0x80; static constexpr uint8_t WHOAMI = 0xAF; static constexpr float TEMPERATURE_SENSITIVITY = 326.8f; // LSB/C -static constexpr float ROOM_TEMPERATURE_OFFSET = 25.f; // C +static constexpr float TEMPERATURE_OFFSET = 25.f; // C enum class Register : uint8_t { CONFIG = 0x1A, diff --git a/src/drivers/imu/invensense/icm20689/ICM20689.cpp b/src/drivers/imu/invensense/icm20689/ICM20689.cpp index f585224819..5b343ea73a 100644 --- a/src/drivers/imu/invensense/icm20689/ICM20689.cpp +++ b/src/drivers/imu/invensense/icm20689/ICM20689.cpp @@ -627,7 +627,7 @@ void ICM20689::UpdateTemperature() } const int16_t TEMP_OUT = combine(temperature_buf[1], temperature_buf[2]); - const float TEMP_degC = ((TEMP_OUT - ROOM_TEMPERATURE_OFFSET) / TEMPERATURE_SENSITIVITY) + ROOM_TEMPERATURE_OFFSET; + const float TEMP_degC = (TEMP_OUT / TEMPERATURE_SENSITIVITY) + TEMPERATURE_OFFSET; if (PX4_ISFINITE(TEMP_degC)) { _px4_accel.set_temperature(TEMP_degC); diff --git a/src/drivers/imu/invensense/icm20689/InvenSense_ICM20689_registers.hpp b/src/drivers/imu/invensense/icm20689/InvenSense_ICM20689_registers.hpp index d1a5713288..5efb9c6dc2 100644 --- a/src/drivers/imu/invensense/icm20689/InvenSense_ICM20689_registers.hpp +++ b/src/drivers/imu/invensense/icm20689/InvenSense_ICM20689_registers.hpp @@ -60,7 +60,7 @@ static constexpr uint8_t DIR_READ = 0x80; static constexpr uint8_t WHOAMI = 0x98; static constexpr float TEMPERATURE_SENSITIVITY = 326.8f; // LSB/C -static constexpr float ROOM_TEMPERATURE_OFFSET = 25.f; // C +static constexpr float TEMPERATURE_OFFSET = 25.f; // C enum class Register : uint8_t { CONFIG = 0x1A, diff --git a/src/drivers/imu/invensense/icm40609d/ICM40609D.cpp b/src/drivers/imu/invensense/icm40609d/ICM40609D.cpp index 92a55835e4..333a37b498 100644 --- a/src/drivers/imu/invensense/icm40609d/ICM40609D.cpp +++ b/src/drivers/imu/invensense/icm40609d/ICM40609D.cpp @@ -618,8 +618,8 @@ void ICM40609D::UpdateTemperature() const int16_t TEMP_DATA = combine(temperature_buf[1], temperature_buf[2]); - // Temperature in Degrees Centigrade = (TEMP_DATA / 132.48) + 25 - const float TEMP_degC = (TEMP_DATA / TEMPERATURE_SENSITIVITY) + ROOM_TEMPERATURE_OFFSET; + // Temperature in Degrees Centigrade + const float TEMP_degC = (TEMP_DATA / TEMPERATURE_SENSITIVITY) + TEMPERATURE_OFFSET; if (PX4_ISFINITE(TEMP_degC)) { _px4_accel.set_temperature(TEMP_degC); diff --git a/src/drivers/imu/invensense/icm40609d/InvenSense_ICM40609D_registers.hpp b/src/drivers/imu/invensense/icm40609d/InvenSense_ICM40609D_registers.hpp index 7cbd6b0e65..8759c2d33c 100644 --- a/src/drivers/imu/invensense/icm40609d/InvenSense_ICM40609D_registers.hpp +++ b/src/drivers/imu/invensense/icm40609d/InvenSense_ICM40609D_registers.hpp @@ -60,7 +60,7 @@ static constexpr uint8_t DIR_READ = 0x80; static constexpr uint8_t WHOAMI = 0x3B; static constexpr float TEMPERATURE_SENSITIVITY = 132.48f; // LSB/C -static constexpr float ROOM_TEMPERATURE_OFFSET = 25.f; // C +static constexpr float TEMPERATURE_OFFSET = 25.f; // C namespace Register { @@ -221,7 +221,6 @@ struct DATA { uint8_t timestamp_l; uint8_t timestamp_h; }; -static_assert(sizeof(DATA) == 16, "FIFO packet 16 bytes"); // With FIFO_ACCEL_EN and FIFO_GYRO_EN header should be 8’b_0110_10xx enum FIFO_HEADER_BIT : uint8_t { diff --git a/src/drivers/imu/invensense/icm42688p/ICM42688P.cpp b/src/drivers/imu/invensense/icm42688p/ICM42688P.cpp index b2d16725ba..792917dd12 100644 --- a/src/drivers/imu/invensense/icm42688p/ICM42688P.cpp +++ b/src/drivers/imu/invensense/icm42688p/ICM42688P.cpp @@ -620,8 +620,8 @@ void ICM42688P::UpdateTemperature() const int16_t TEMP_DATA = combine(temperature_buf[1], temperature_buf[2]); - // Temperature in Degrees Centigrade = (TEMP_DATA / 132.48) + 25 - const float TEMP_degC = (TEMP_DATA / TEMPERATURE_SENSITIVITY) + ROOM_TEMPERATURE_OFFSET; + // Temperature in Degrees Centigrade + const float TEMP_degC = (TEMP_DATA / TEMPERATURE_SENSITIVITY) + TEMPERATURE_OFFSET; if (PX4_ISFINITE(TEMP_degC)) { _px4_accel.set_temperature(TEMP_degC); diff --git a/src/drivers/imu/invensense/icm42688p/InvenSense_ICM42688P_registers.hpp b/src/drivers/imu/invensense/icm42688p/InvenSense_ICM42688P_registers.hpp index 307af53ddb..6ce9b70c22 100644 --- a/src/drivers/imu/invensense/icm42688p/InvenSense_ICM42688P_registers.hpp +++ b/src/drivers/imu/invensense/icm42688p/InvenSense_ICM42688P_registers.hpp @@ -60,7 +60,7 @@ static constexpr uint8_t DIR_READ = 0x80; static constexpr uint8_t WHOAMI = 0x47; static constexpr float TEMPERATURE_SENSITIVITY = 132.48f; // LSB/C -static constexpr float ROOM_TEMPERATURE_OFFSET = 25.f; // C +static constexpr float TEMPERATURE_OFFSET = 25.f; // C namespace Register { diff --git a/src/drivers/imu/invensense/mpu6000/InvenSense_MPU6000_registers.hpp b/src/drivers/imu/invensense/mpu6000/InvenSense_MPU6000_registers.hpp index 45a8427717..155739b312 100644 --- a/src/drivers/imu/invensense/mpu6000/InvenSense_MPU6000_registers.hpp +++ b/src/drivers/imu/invensense/mpu6000/InvenSense_MPU6000_registers.hpp @@ -60,8 +60,8 @@ static constexpr uint8_t DIR_READ = 0x80; static constexpr uint8_t WHOAMI = 0x68; -static constexpr float TEMPERATURE_SENSITIVITY = 326.8f; // LSB/C -static constexpr float ROOM_TEMPERATURE_OFFSET = 25.f; // C +static constexpr float TEMPERATURE_SENSITIVITY = 340.f; // LSB/C +static constexpr float TEMPERATURE_OFFSET = 36.53f; // C enum class Register : uint8_t { CONFIG = 0x1A, diff --git a/src/drivers/imu/invensense/mpu6000/MPU6000.cpp b/src/drivers/imu/invensense/mpu6000/MPU6000.cpp index 5a5808680a..d2d0dcde9f 100644 --- a/src/drivers/imu/invensense/mpu6000/MPU6000.cpp +++ b/src/drivers/imu/invensense/mpu6000/MPU6000.cpp @@ -567,7 +567,7 @@ void MPU6000::UpdateTemperature() } const int16_t TEMP_OUT = combine(temperature_buf[1], temperature_buf[2]); - const float TEMP_degC = ((TEMP_OUT - ROOM_TEMPERATURE_OFFSET) / TEMPERATURE_SENSITIVITY) + ROOM_TEMPERATURE_OFFSET; + const float TEMP_degC = (TEMP_OUT / TEMPERATURE_SENSITIVITY) + TEMPERATURE_OFFSET; if (PX4_ISFINITE(TEMP_degC)) { _px4_accel.set_temperature(TEMP_degC); diff --git a/src/drivers/imu/invensense/mpu6500/InvenSense_MPU6500_registers.hpp b/src/drivers/imu/invensense/mpu6500/InvenSense_MPU6500_registers.hpp index 69fb998a45..2691604004 100644 --- a/src/drivers/imu/invensense/mpu6500/InvenSense_MPU6500_registers.hpp +++ b/src/drivers/imu/invensense/mpu6500/InvenSense_MPU6500_registers.hpp @@ -60,8 +60,8 @@ static constexpr uint8_t DIR_READ = 0x80; static constexpr uint8_t WHOAMI = 0x70; -static constexpr float TEMPERATURE_SENSITIVITY = 326.8f; // LSB/C -static constexpr float ROOM_TEMPERATURE_OFFSET = 25.f; // C +static constexpr float TEMPERATURE_SENSITIVITY = 333.87f; // LSB/C +static constexpr float TEMPERATURE_OFFSET = 21.f; // C enum class Register : uint8_t { CONFIG = 0x1A, diff --git a/src/drivers/imu/invensense/mpu6500/MPU6500.cpp b/src/drivers/imu/invensense/mpu6500/MPU6500.cpp index 21dba4b1af..4395330107 100644 --- a/src/drivers/imu/invensense/mpu6500/MPU6500.cpp +++ b/src/drivers/imu/invensense/mpu6500/MPU6500.cpp @@ -591,7 +591,7 @@ void MPU6500::UpdateTemperature() } const int16_t TEMP_OUT = combine(temperature_buf[1], temperature_buf[2]); - const float TEMP_degC = ((TEMP_OUT - ROOM_TEMPERATURE_OFFSET) / TEMPERATURE_SENSITIVITY) + ROOM_TEMPERATURE_OFFSET; + const float TEMP_degC = (TEMP_OUT / TEMPERATURE_SENSITIVITY) + TEMPERATURE_OFFSET; if (PX4_ISFINITE(TEMP_degC)) { _px4_accel.set_temperature(TEMP_degC); diff --git a/src/drivers/imu/invensense/mpu9250/InvenSense_MPU9250_registers.hpp b/src/drivers/imu/invensense/mpu9250/InvenSense_MPU9250_registers.hpp index 1571985449..bdf8f82a10 100644 --- a/src/drivers/imu/invensense/mpu9250/InvenSense_MPU9250_registers.hpp +++ b/src/drivers/imu/invensense/mpu9250/InvenSense_MPU9250_registers.hpp @@ -61,8 +61,8 @@ static constexpr uint8_t DIR_READ = 0x80; static constexpr uint8_t WHOAMI = 0x71; -static constexpr float TEMPERATURE_SENSITIVITY = 326.8f; // LSB/C -static constexpr float ROOM_TEMPERATURE_OFFSET = 25.f; // C +static constexpr float TEMPERATURE_SENSITIVITY = 333.87f; // LSB/C +static constexpr float TEMPERATURE_OFFSET = 21.f; // C enum class Register : uint8_t { CONFIG = 0x1A, diff --git a/src/drivers/imu/invensense/mpu9250/MPU9250.cpp b/src/drivers/imu/invensense/mpu9250/MPU9250.cpp index 9b637b8769..a47b0d1876 100644 --- a/src/drivers/imu/invensense/mpu9250/MPU9250.cpp +++ b/src/drivers/imu/invensense/mpu9250/MPU9250.cpp @@ -624,7 +624,7 @@ void MPU9250::UpdateTemperature() } const int16_t TEMP_OUT = combine(temperature_buf[1], temperature_buf[2]); - const float TEMP_degC = ((TEMP_OUT - ROOM_TEMPERATURE_OFFSET) / TEMPERATURE_SENSITIVITY) + ROOM_TEMPERATURE_OFFSET; + const float TEMP_degC = (TEMP_OUT / TEMPERATURE_SENSITIVITY) + TEMPERATURE_OFFSET; if (PX4_ISFINITE(TEMP_degC)) { _px4_accel.set_temperature(TEMP_degC);