From fe41f1e5bed48f3a840e1644ba7ba23de0e41781 Mon Sep 17 00:00:00 2001 From: anschrammh Date: Tue, 16 Jan 2024 12:48:16 +0100 Subject: [PATCH] Updated the BM280 driver readcalibration data function to make a single i2c read --- .../app/app_drivers/i2c/BMP280.c | 63 +++++-------------- 1 file changed, 16 insertions(+), 47 deletions(-) diff --git a/src/W800_SDK_v1.00.10/app/app_drivers/i2c/BMP280.c b/src/W800_SDK_v1.00.10/app/app_drivers/i2c/BMP280.c index e2b9c38..6780405 100644 --- a/src/W800_SDK_v1.00.10/app/app_drivers/i2c/BMP280.c +++ b/src/W800_SDK_v1.00.10/app/app_drivers/i2c/BMP280.c @@ -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)); }