07-06-2020 03:31 PM
Hello,
I have a BME280 device and read the data out with the Linux kernel module bmp280-i2c. From time to time, I get the message "reading temperature skipped", i.e. the device sends the value 0x80000. It happens irregularly. If it happens, this error arises several times within a period of some seconds, then it takes few hours until the error comes next time.
In the data sheet it is written that temperature read out can be skipped by setting the oversampling ratio to zero and then the device sends the 0x80000 value. My oversampling ratio for the temperature is 16 and I don't change it at all. I have checked that the oversampling ratio is not zero when the 0x80000 value is sent.
What are possible reasons that the device sends this value?
Solved! Go to Solution.
07-15-2020 04:32 PM
Hi,
Thank you. Please send a private message to me with your company email address. I will introduce you to our local FAE for further support.
Thanks.
10-07-2020 11:16 PM - edited 10-08-2020 12:16 AM
Hi,
I have the exact same issue. What was the solution?
It is not clear from the data sheet if:
Could you confirm which answer is correct so I can either fix the kernel driver or need further support to understand why readings are being skipped.
I am based in the UK
Thanks
10-08-2020 05:45 PM
Hi,
If the sensor is continuously running in normal mode, 'skipped values' (0x80000) should not be observed in the data registers anymore as soon as one conversion was successfully completed, since the previous value with remained cached if the register is over-read.
In my opinion, the most probable root causes for the behavior on the log could be that:
Please let us know how it goes.
Thanks.
10-09-2020 06:12 PM
Thanks for your reply.
Can Iconfirm you are saying it is not possible for the BME280 to read 0x800000 for temperature if the temperature has been successfully read by the chip? Even if the temperature current temperature would give this value?
Looking at a log of the data on the I2C bus neither of your suggestions seem to fit the data I have recorded. The BME280 is always on in our design so is only hard reset on a system power cycle. In the log below from you can see a successful read of 0x77FF10, followed by the "skipped" value of 0x800000 1 second later with several retries as this value is currently considered bad. Then finally 1 second later a successful read of 0x800050.
To me this looks like option 2 of the data sheet interpretations I gave above with the value of 0x800000 being valid (it corresponds to a temperature of 23.34 C using the compenstation formulat in the linux driver).
The ctrl_meas register (0xF4) is set to 0x57 when the driver first loads. This corresponds to osrs_t = 010 2x oversampling and osrs_p = 101 16x oversampling, normal mode.
The config register is set once to 0x08, t_standby 0.5ms, filter coefficient 4
Time [s] | Decoded Protocol Result |
-1.00761985 | Setup Write to [0x77] + ACK |
-1.00697025 | 0xFA + ACK |
-1.0062784 | Setup Read to [0x77] + ACK |
-1.0056269 | 0x7F + ACK |
-1.0049568 | 0xFF + ACK |
-1.00480575 | 0x10 + NAK |
-1.00446535 | Setup Write to [0x77] + ACK |
-1.0043149 | 0xFD + ACK |
-1.0041434 | Setup Read to [0x77] + ACK |
-1.0039917 | 0x65 + ACK |
-1.00384005 | 0x7D + NAK |
-1.0034806 | Setup Write to [0x77] + ACK |
-1.0033302 | 0xFA + ACK |
-1.0031587 | Setup Read to [0x77] + ACK |
-1.00300765 | 0x7F + ACK |
-1.0028579 | 0xFF + ACK |
-1.0027075 | 0x10 + NAK |
-1.0023701 | Setup Write to [0x77] + ACK |
-1.0022197 | 0xF7 + ACK |
-1.00204815 | Setup Read to [0x77] + ACK |
-1.0018965 | 0x4F + ACK |
-1.0016949 | 0x3A + ACK |
-1.00154255 | 0xF0 + NAK |
-0.00679885 | Setup Write to [0x77] + ACK |
-0.00664845 | 0xFA + ACK |
-0.00647755 | Setup Read to [0x77] + ACK |
-0.0063265 | 0x80 + ACK |
-0.00617675 | 0x00 + ACK |
-0.00602635 | 0x00 + NAK |
0.00160155 | Setup Write to [0x77] + ACK |
0.0017801 | 0xFA + ACK |
0.00200155 | Setup Read to [0x77] + ACK |
0.00215515 | 0x80 + ACK |
0.0023081 | 0x00 + ACK |
0.00245915 | 0x00 + NAK |
0.0109354 | Setup Write to [0x77] + ACK |
0.0111037 | 0xFA + ACK |
0.0112317 | Setup Read to [0x77] + ACK |
0.01133475 | 0x80 + ACK |
0.0114365 | 0x00 + ACK |
0.01153825 | 0x00 + NAK |
0.01936935 | Setup Write to [0x77] + ACK |
0.01952745 | 0xFA + ACK |
0.01970025 | Setup Read to [0x77] + ACK |
0.0198519 | 0x80 + ACK |
0.0200017 | 0x00 + ACK |
0.02015785 | 0x00 + NAK |
0.9924992 | Setup Write to [0x77] + ACK |
0.9926016 | 0xFA + ACK |
0.99272385 | Setup Read to [0x77] + ACK |
0.9928256 | 0x80 + ACK |
0.9929261 | 0x00 + ACK |
0.99302785 | 0x50 + NAK |
0.993318 | Setup Write to [0x77] + ACK |
0.9934198 | 0xFD + ACK |
0.99354265 | Setup Read to [0x77] + ACK |
0.9936444 | 0x65 + ACK |
0.9937462 | 0x70 + NAK |
0.99405475 | Setup Write to [0x77] + ACK |
0.9941565 | 0xFA + ACK |
0.99427875 | Setup Read to [0x77] + ACK |
0.9943805 | 0x80 + ACK |
0.99448165 | 0x00 + ACK |
0.9945834 | 0x50 + NAK |
0.9948706 | Setup Write to [0x77] + ACK |
0.99497235 | 0xF7 + ACK |
0.9950946 | Setup Read to [0x77] + ACK |
0.99519635 | 0x4F + ACK |
0.99529745 | 0x3A + ACK |
0.9953992 | 0xC0 + NAK |
10-12-2020 03:28 PM