5 Commits

Author SHA1 Message Date
TamTamHero
93e47861b3 Fix wrong addressing of raw temp and pressure buffers 2025-05-03 19:25:01 +03:00
TamTamHero
1e18e7a815 Remove non-existent IIR_X1 filter 2025-05-03 19:25:01 +03:00
TamTamHero
91c142fd5d Increase CMake version requirement to fix compilation on recent CMake install 2025-05-03 19:25:01 +03:00
TamTamHero
55e1ccc3c9 Expose reset function for external use 2025-04-13 15:56:00 +03:00
b48a6e2fa9 Move the I2C speed config key out of the choice prompt. 2024-11-25 22:44:33 +03:00
5 changed files with 23 additions and 17 deletions

View File

@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.1) cmake_minimum_required(VERSION 3.17)
set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD 11)
idf_component_register( idf_component_register(
SRCS bmx280.c SRCS bmx280.c

View File

@@ -12,13 +12,14 @@ menu "BMX280 Options"
bool "I2C Master Driver (i2c_master.h)" bool "I2C Master Driver (i2c_master.h)"
help help
Use I2C Master Driver (i2c_master.h) for ESP-IDF >= 5.3. Use I2C Master Driver (i2c_master.h) for ESP-IDF >= 5.3.
endchoice
config BMX280_I2C_CLK_SPEED_HZ config BMX280_I2C_CLK_SPEED_HZ
int "I2C Clock Speed (Hz)" int "I2C Clock Speed (Hz)"
default 100000 default 100000
range 1000 400000 range 1000 400000
help help
Set the I2C clock speed in Hz. Set the I2C clock speed in Hz. Only applies to the new I2C Master driver.
endchoice
choice BMX280_EXPECT_DEVICE choice BMX280_EXPECT_DEVICE
prompt "Installed Sensor Model" prompt "Installed Sensor Model"

View File

@@ -338,12 +338,6 @@ static esp_err_t bmx280_probe(bmx280_t *bmx280)
#endif #endif
} }
static esp_err_t bmx280_reset(bmx280_t *bmx280)
{
const static uint8_t din[] = { BMX280_RESET_VEC };
return bmx280_write(bmx280, BMX280_REG_RESET, din, sizeof din);
}
static esp_err_t bmx280_calibrate(bmx280_t *bmx280) static esp_err_t bmx280_calibrate(bmx280_t *bmx280)
{ {
// Honestly, the best course of action is to read the high and low banks // Honestly, the best course of action is to read the high and low banks
@@ -448,6 +442,12 @@ bmx280_t* bmx280_create_master(i2c_master_bus_handle_t bus_handle)
} }
#endif #endif
esp_err_t bmx280_reset(bmx280_t *bmx280)
{
const static uint8_t din[] = { BMX280_RESET_VEC };
return bmx280_write(bmx280, BMX280_REG_RESET, din, sizeof din);
}
void bmx280_close(bmx280_t *bmx280) void bmx280_close(bmx280_t *bmx280)
{ {
#if CONFIG_USE_I2C_MASTER_DRIVER #if CONFIG_USE_I2C_MASTER_DRIVER
@@ -634,7 +634,7 @@ esp_err_t bmx280_readout(bmx280_t *bmx280, int32_t *temperature, uint32_t *press
return error; return error;
*temperature = BME280_compensate_T_int32(bmx280, *temperature = BME280_compensate_T_int32(bmx280,
(buffer[0] << 12) | (buffer[1] << 4) | (buffer[0] >> 4) (buffer[0] << 12) | (buffer[1] << 4) | (buffer[2] >> 4)
); );
} }
@@ -644,7 +644,7 @@ esp_err_t bmx280_readout(bmx280_t *bmx280, int32_t *temperature, uint32_t *press
return error; return error;
*pressure = BME280_compensate_P_int64(bmx280, *pressure = BME280_compensate_P_int64(bmx280,
(buffer[0] << 12) | (buffer[1] << 4) | (buffer[0] >> 4) (buffer[0] << 12) | (buffer[1] << 4) | (buffer[2] >> 4)
); );
} }

View File

@@ -57,6 +57,12 @@ BMXAPI bmx280_t* bmx280_create_legacy(i2c_port_t port);
#define bmx280_create_master(port) static_assert(0, "You have the wrong driver configuration for using the new I2C master driver.") #define bmx280_create_master(port) static_assert(0, "You have the wrong driver configuration for using the new I2C master driver.")
#endif #endif
/**
* Restart the sensor, effectively puting it into sleep mode.
* @param bmx280 The instance to reset.
*/
esp_err_t bmx280_reset(bmx280_t *bmx280);
/** /**
* Destroy your the instance. * Destroy your the instance.
* @param bmx280 The instance to destroy. * @param bmx280 The instance to destroy.

View File

@@ -57,7 +57,6 @@ typedef enum bmx280_tstby_t {
typedef enum bmx280_iirf_t { typedef enum bmx280_iirf_t {
BMX280_IIR_NONE = 0x0, BMX280_IIR_NONE = 0x0,
BMX280_IIR_X1,
BMX280_IIR_X2, BMX280_IIR_X2,
BMX280_IIR_X4, BMX280_IIR_X4,
BMX280_IIR_X8, BMX280_IIR_X8,