From 9322ed6a1bce57c47000662153a67dcd4bb27dd7 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 1 Jul 2025 20:32:26 +0800 Subject: [PATCH] Fix LPS22H barometer macros and add SPI support in common_pre.h --- src/main/drivers/barometer/barometer_lps22h.c | 14 +++++++++++--- src/main/target/common_pre.h | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/drivers/barometer/barometer_lps22h.c b/src/main/drivers/barometer/barometer_lps22h.c index 7ed3425b66..fb92e14746 100644 --- a/src/main/drivers/barometer/barometer_lps22h.c +++ b/src/main/drivers/barometer/barometer_lps22h.c @@ -50,8 +50,8 @@ */ // Macros to encode/decode multi-bit values -#define LSM6DSV_ENCODE_BITS(val, mask, shift) ((val << shift) & mask) -#define LSM6DSV_DECODE_BITS(val, mask, shift) ((val & mask) >> shift) +#define LPS22H_ENCODE_BITS(val, mask, shift) ((val << shift) & mask) +#define LPS22H_DECODE_BITS(val, mask, shift) ((val & mask) >> shift) // RESERVED - 00-0A @@ -204,7 +204,7 @@ bool lps22hDetect(baroDev_t *baro) // Reset the device busWriteRegister(dev, LPS22H_CTRL_REG2, LPS22H_CTRL_REG2_SWRESET); - busWriteRegister(dev, LPS22H_CTRL_REG1, LSM6DSV_ENCODE_BITS( + busWriteRegister(dev, LPS22H_CTRL_REG1, LPS22H_ENCODE_BITS( LPS22H_CTRL_REG1_ODR_POWER_DOWN, LPS22H_CTRL_REG1_ODR_MASK, LPS22H_CTRL_REG1_ODR_SHIFT )); @@ -275,7 +275,15 @@ static bool lps22hGetUP(baroDev_t *baro) } lps22h_up = (int32_t)(sensor_data[0] | sensor_data[1] << 8 | sensor_data[2] << 16); + // Sign extend 24-bit to 32-bit + if (lps22h_up & 0x800000) { + lps22h_up |= 0xFF000000; // Extend sign bit + } + lps22h_ut = (int32_t)(sensor_data[3] | sensor_data[4] << 8); + if (lps22h_ut & 0x8000) { + lps22h_ut |= 0xFFFF0000; // Sign extend 16-bit to 32-bit + } return true; } diff --git a/src/main/target/common_pre.h b/src/main/target/common_pre.h index bb3fe1de7c..c339c6b2a4 100644 --- a/src/main/target/common_pre.h +++ b/src/main/target/common_pre.h @@ -97,6 +97,7 @@ #define USE_BARO_LPS22DF #define USE_BARO_SPI_LPS22DF #define USE_BARO_LPS22H +#define USE_BARO_SPI_LPS22H #endif #if !defined(USE_GYRO) && !defined(USE_ACC)