Hi,
I have recently updated to V2.1.1 and I can no longer get my BME280 sensor to work.
I am using the standard code from the samples directory,
#include <zephyr/zephyr.h>
#include <zephyr/device.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/sensor.h>
#include <stdio.h>
/*
* Get a device structure from a devicetree node with compatible
* "bosch,bme280". (If there are multiple, just pick one.)
*/
static const struct device *get_bme280_device(void)
{
const struct device *dev = DEVICE_DT_GET_ANY(bosch_bme280);
if (dev == NULL) {
/* No such node, or the node does not have status "okay". */
printk("\nError: no device found.\n");
return NULL;
}
if (!device_is_ready(dev)) {
printk("\nError: Device \"%s\" is not ready; "
"check the driver initialization logs for errors.\n",
dev->name);
return NULL;
}
printk("Found device \"%s\", getting sensor data\n", dev->name);
return dev;
}
void main(void)
{
const struct device *dev = get_bme280_device();
if (dev == NULL) {
return;
}
while (1) {
struct sensor_value temp, press, humidity;
sensor_sample_fetch(dev);
sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
sensor_channel_get(dev, SENSOR_CHAN_PRESS, &press);
sensor_channel_get(dev, SENSOR_CHAN_HUMIDITY, &humidity);
printk("temp: %d.%06d; press: %d.%06d; humidity: %d.%06d\n",
temp.val1, temp.val2, press.val1, press.val2,
humidity.val1, humidity.val2);
k_sleep(K_MSEC(1000));
}
}
&pinctrl {
uart0_default_alt: uart0_default_alt {
group0 {
psels = <NRF_PSEL(UART_TX, 0, 24)>, <NRF_PSEL(UART_RX, 0, 22)>;
};
};
uart0_sleep_alt: uart0_sleep_alt {
group1 {
psels = <NRF_PSEL(UART_TX, 0, 24)>, <NRF_PSEL(UART_RX, 0, 22)>;
low-power-enable;
};
};
i2c0_default_alt: i2c0_default_alt {
group2 {
psels = <NRF_PSEL(TWIM_SDA, 0, 17)>, <NRF_PSEL(TWIM_SCL, 0, 20)>;
};
};
i2c0_default_sleep: i2c0_default_sleep {
group3 {
psels = <NRF_PSEL(TWIM_SDA, 0, 17)>, <NRF_PSEL(TWIM_SCL, 0, 20)>;
low-power-enable;
};
};
};
&uart0 {
pinctrl-0 = <&uart0_default_alt>;
pinctrl-1 = <&uart0_sleep_alt>;
pinctrl-names = "default", "sleep";
compatible = "nordic,nrf-uart";
current-speed = <115200>;
status = "okay";
};
&i2c0 {
status = "okay";
compatible = "nordic,nrf-twim";
pinctrl-0 = <&i2c0_default_alt>;
pinctrl-1 = <&i2c0_default_sleep>;
pinctrl-names = "default", "sleep";
clock-frequency = < I2C_BITRATE_STANDARD >;
bme280@76 {
compatible = "bosch,bme280";
reg = <0x76>;
label = "BME280";
};
};my prj file looks like this
CONFIG_PINCTRL=y CONFIG_ASSERT=y CONFIG_TEST_RANDOM_GENERATOR=y CONFIG_GPIO=y CONFIG_SERIAL=y CONFIG_UART_INTERRUPT_DRIVEN=y CONFIG_TEST_RANDOM_GENERATOR=y CONFIG_NEWLIB_LIBC=y CONFIG_CONSOLE_SUBSYS=y CONFIG_CONSOLE_GETCHAR=y CONFIG_STDOUT_CONSOLE=y CONFIG_CONSOLE=y CONFIG_CPLUSPLUS=y CONFIG_LOG=y CONFIG_SHELL=y CONFIG_REBOOT=y CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y CONFIG_PRINTK=y CONFIG_PM_DEVICE=y CONFIG_I2C=y CONFIG_I2C_NRFX=y CONFIG_SENSOR=y CONFIG_BME280=y CONFIG_BOOT_BANNER=n CONFIG_HEAP_MEM_POOL_SIZE=16384
I am using VS and the line "CONFIG_BME280=y" shows a warning
CONFIG_BME280 was assigned the value y, but got the value n. Missing dependencies: DT_HAS_BOSCH_BME280_ENABLED
What am I missing?
Rod
