drivers: sensor: BME280: add forced sampling mode
add the forced sampling mode, to take just a single measurement when fatching a sample Signed-off-by: Christian Hirsch <christian.hirsch@tuwien.ac.at>
This commit is contained in:
parent
a8e90cbfb3
commit
6380c24626
3 changed files with 36 additions and 1 deletions
|
@ -12,6 +12,18 @@ menuconfig BME280
|
||||||
|
|
||||||
if BME280
|
if BME280
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "BME280 sampling mode"
|
||||||
|
default BME280_MODE_NORMAL
|
||||||
|
help
|
||||||
|
Select sampling mode. In normal mode continuous measurements are
|
||||||
|
performed, whereas in forced mode only single measurement is performed.
|
||||||
|
config BME280_MODE_NORMAL
|
||||||
|
bool "normal"
|
||||||
|
config BME280_MODE_FORCED
|
||||||
|
bool "forced"
|
||||||
|
endchoice
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "BME280 temperature oversampling"
|
prompt "BME280 temperature oversampling"
|
||||||
default BME280_TEMP_OVER_2X
|
default BME280_TEMP_OVER_2X
|
||||||
|
|
|
@ -169,6 +169,21 @@ static int bme280_sample_fetch(struct device *dev, enum sensor_channel chan)
|
||||||
|
|
||||||
__ASSERT_NO_MSG(chan == SENSOR_CHAN_ALL);
|
__ASSERT_NO_MSG(chan == SENSOR_CHAN_ALL);
|
||||||
|
|
||||||
|
#ifdef CONFIG_BME280_MODE_FORCED
|
||||||
|
ret = bm280_reg_write(data, BME280_REG_CTRL_MEAS, BME280_CTRL_MEAS_VAL);
|
||||||
|
if (ret < 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
k_sleep(K_MSEC(3));
|
||||||
|
ret = bm280_reg_read(data, BME280_REG_STATUS, buf, 1);
|
||||||
|
if (ret < 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
} while (buf[0] & 0x08);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (data->chip_id == BME280_CHIP_ID) {
|
if (data->chip_id == BME280_CHIP_ID) {
|
||||||
size = 8;
|
size = 8;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,14 +19,22 @@
|
||||||
#define BME280_REG_CONFIG 0xF5
|
#define BME280_REG_CONFIG 0xF5
|
||||||
#define BME280_REG_CTRL_MEAS 0xF4
|
#define BME280_REG_CTRL_MEAS 0xF4
|
||||||
#define BME280_REG_CTRL_HUM 0xF2
|
#define BME280_REG_CTRL_HUM 0xF2
|
||||||
|
#define BME280_REG_STATUS 0xF3
|
||||||
|
|
||||||
#define BMP280_CHIP_ID_SAMPLE_1 0x56
|
#define BMP280_CHIP_ID_SAMPLE_1 0x56
|
||||||
#define BMP280_CHIP_ID_SAMPLE_2 0x57
|
#define BMP280_CHIP_ID_SAMPLE_2 0x57
|
||||||
#define BMP280_CHIP_ID_MP 0x58
|
#define BMP280_CHIP_ID_MP 0x58
|
||||||
#define BME280_CHIP_ID 0x60
|
#define BME280_CHIP_ID 0x60
|
||||||
|
#define BME280_MODE_FORCED 0x01
|
||||||
#define BME280_MODE_NORMAL 0x03
|
#define BME280_MODE_NORMAL 0x03
|
||||||
#define BME280_SPI_3W_DISABLE 0x00
|
#define BME280_SPI_3W_DISABLE 0x00
|
||||||
|
|
||||||
|
#if defined CONFIG_BME280_MODE_NORMAL
|
||||||
|
#define BME280_MODE BME280_MODE_NORMAL
|
||||||
|
#elif defined CONFIG_BME280_MODE_FORCED
|
||||||
|
#define BME280_MODE BME280_MODE_FORCED
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined CONFIG_BME280_TEMP_OVER_1X
|
#if defined CONFIG_BME280_TEMP_OVER_1X
|
||||||
#define BME280_TEMP_OVER (1 << 5)
|
#define BME280_TEMP_OVER (1 << 5)
|
||||||
#elif defined CONFIG_BME280_TEMP_OVER_2X
|
#elif defined CONFIG_BME280_TEMP_OVER_2X
|
||||||
|
@ -95,7 +103,7 @@
|
||||||
|
|
||||||
#define BME280_CTRL_MEAS_VAL (BME280_PRESS_OVER | \
|
#define BME280_CTRL_MEAS_VAL (BME280_PRESS_OVER | \
|
||||||
BME280_TEMP_OVER | \
|
BME280_TEMP_OVER | \
|
||||||
BME280_MODE_NORMAL)
|
BME280_MODE)
|
||||||
#define BME280_CONFIG_VAL (BME280_STANDBY | \
|
#define BME280_CONFIG_VAL (BME280_STANDBY | \
|
||||||
BME280_FILTER | \
|
BME280_FILTER | \
|
||||||
BME280_SPI_3W_DISABLE)
|
BME280_SPI_3W_DISABLE)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue