I've started working with the I2C protocol yesterday to use the BME680 sensor I bought, so please forgive any silly mistakes I might've made or details I might've overlooked.
I've created a C++ project that uses the BME680 driver on Github. I've managed to get some data in return, but it looks meaningless, as you can see in the image below:
Here's how I initialize it:
And how I read the data:
I've tried reading the I2C frequency on my device, and it reads 100'000.
The room where the device is running in is at least 20°C, so am I missing something?
Solved! Go to Solution.
In this picture, Chip ID as well as calib parameters are zero. If that is the output after calling bme680_init() function, it most likely indicates that something went wrong, or that your communication is not working.
Can you confirm that your platform specific i2c read/write and delay functions are working as expected? You could for example use an oscilloscope or logic analyzer to capture the chip ID read-out. Also verify that the BME680 connections are correct, including proper selection of the I2C address via SDO pin, and CSB directly connected to Vddio.
Please note that it is mandatory to configure the sensor's settings (at least once), and set the sensor to forced mode to trigger each measurement.
You could also have a look at the integration example in BSEC's package for reference.
Thank you for your reply!
Turns out I wasn't checking what the init function was returning, which is BME680_E_DEV_NOT_FOUND. I'm currently checking my read and write functions to see what's wrong and I'll get back to you if I find nothing.
Yes, looks like a mix of me not looking at the init's return value and a faulty read function was the reason behind all of this. Thank you for your help!