I have BME280 on custom board connected to CC1350 host via I2C.
I configure BME280 to normal mode. When I read temperature right after power down I get at the first read correct values, then second read the value is about 25% higher than first read, and third read the value is about 50%-70% higher then in the first read, and I am sure the readings are incorrect.
What could be the cause for such behaviour?
Thanks for your inquiry.
I think you may mean you read temperature data after power on, not power down. The temperature data should be stable, not increasing 25% and 50%. Please refer to BME280 API source code at https://github.com/BoschSensortec/BME280_driver about how to initialize BME280 and how to read sensor data.
I am working with a driver provided in SDK by Texas Instruments, I guess this a working driver.
Can this beahviour happen because some HW conditions? over heating, incorrect voltage etc...
Or do you think this is a SW problem?
Yes, this should be SW problem.
If you initialize BME280 correctly with normal mode, oversampling for T, H and P sensors, then you can use the attached "sample_calculation_BME280.xlsx" to verify your SW. For example, you can manually type trimmed values from the BME280 chip that you are working with into the Excel file dig_T1 to T3, dig_P1 to P9 and dig_H1 to H6 cells. Then every time when you get the unsigned integers raw data for T, H and P sensors, you can manually type the values into the UT, UP and UH cells. The Excel file will calculate the final T in C, final H in %RH and final P in Pa. Then you can compare the results against what you get from the SDK from TI. If they match, then your SW is OK. Otherwise, there is a problem in your SW.
At early part of data reading, if there is 40 ms delay, could you put some delay and request to read some data?