I just reviewed your i2c traces, and found some differences to the example code.
@eugenyd wrote:
bme680_set_sensor_settings start I2C W $5A <= 0x70, 0x64, 0x65, I2C R $74 => 0x00, I2C R $75 => 0x00, I2C R $70 => 0x00, I2C R $74 => 0x00, I2C R $72 => 0x00, I2C R $71 => 0x00, I2C W $75 <= 0x08, 0x70, 0x00, 0x74, 0x54, 0x72, 0x01, 0x71, 0x10, bme680_set_sensor_settings end
This sequence indicates that BME680_FILTER_SEL and BME680_HCNTRL_SEL were set (respectively configured to BME680_FILTER_SIZE_3 and BME680_ENABLE_HEATER?). Although these should not cause the described error, this is not the default configuration.
@eugenyd wrote:
bme680_set_sensor_mode start I2C R $74 => 0x54, I2C W $74 <= 0x55, bme680_set_sensor_mode end Waiting (ms):193
The value of 193ms looks suspect to me here. Is this the period on the bus, or the output of bme680_get_profile_dur()? With the default configuration in my setup, bme680_get_profile_dur() expects a delay of ~240ms. An incorrect delay like 193ms would trigger the following while() loop, making sure the measurement was really completed before reading out the data!
Note that forcing the delay period to 193ms AND skipping the said loop will cause a similar output as you described (no relevant data from the register map). Again a mechanism is the official sensor API should kick-in and poll again the data registers (up to 10 times) until valid new data is read-out. Therefore my project was able to continue without any error/issue.
... View more