Updated the BM280 driver readcalibration data function to make a single i2c read

This commit is contained in:
anschrammh 2024-01-16 12:48:16 +01:00
parent ed930d1eae
commit fe41f1e5be

View File

@ -64,54 +64,23 @@ static int32_t t_fine = 0;
static bool _BMP280_read_calibration_data(void)
{
uint8_t data[2];
uint8_t data[24];
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_T1, data, sizeof data))
_calibration_data.dig_T1 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_T2, data, sizeof data))
_calibration_data.dig_T2 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_T3, data, sizeof data))
_calibration_data.dig_T3 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_P1, data, sizeof data))
_calibration_data.dig_P1 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_P2, data, sizeof data))
_calibration_data.dig_P2 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_P3, data, sizeof data))
_calibration_data.dig_P3 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_P4, data, sizeof data))
_calibration_data.dig_P4 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_P5, data, sizeof data))
_calibration_data.dig_P5 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_P6, data, sizeof data))
_calibration_data.dig_P6 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_P7, data, sizeof data))
_calibration_data.dig_P7 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_P8, data, sizeof data))
_calibration_data.dig_P8 = data[1] << 8 | data[0];
else return false;
if(i2c_read(BMP280_I2C_ADDR, BMP280_DIG_P9, data, sizeof data))
_calibration_data.dig_P9 = data[1] << 8 | data[0];
{
_calibration_data.dig_T1 = data[1] << 8 | data[0];
_calibration_data.dig_T2 = data[3] << 8 | data[2];
_calibration_data.dig_T3 = data[5] << 8 | data[4];
_calibration_data.dig_P1 = data[7] << 8 | data[6];
_calibration_data.dig_P2 = data[9] << 8 | data[8];
_calibration_data.dig_P3 = data[11] << 8 | data[10];
_calibration_data.dig_P4 = data[13] << 8 | data[12];
_calibration_data.dig_P5 = data[15] << 8 | data[14];
_calibration_data.dig_P6 = data[17] << 8 | data[16];
_calibration_data.dig_P7 = data[19] << 8 | data[18];
_calibration_data.dig_P8 = data[21] << 8 | data[20];
_calibration_data.dig_P9 = data[23] << 8 | data[22];
}
else return false;
return true;
@ -238,7 +207,7 @@ float BMP280_get_altitude(float pressureAtSeeLevel, float * const pressure, floa
if(pressure) *pressure = press;
press /= 100;
press /= 100.0;
return 44330 * (1.0 - pow(press / pressureAtSeeLevel, 0.1903));
}