BMP280 self-test fails

Hello,

Β 

On our board we've integrated a BMP280 that we drive with IΒ²C. I use the driver provided byΒ https://github.com/BoschSensortec/BMP280_driver

However the self-test fails for t3 check: the value 50 is not within the range [-3000, -1000]Β  (https://github.com/BoschSensortec/BMP280_driver/blob/master/bmp280_defs.h#L304-L305)

Debug traces:

Β 

13:33:36.631733 😧 read: 0xd0: @00: 58
13:33:36.631748 😧 read: 0x88: @00: d5
13:33:36.631761 😧 read: 0x88: @01: 6a
13:33:36.631775 😧 read: 0x88: @02: ac
13:33:36.631789 😧 read: 0x88: @03: 64
13:33:36.631804 😧 read: 0x88: @04: 32
13:33:36.631821 😧 read: 0x88: @05: 00
13:33:36.631836 😧 read: 0x88: @06: fb
13:33:36.639739 😧 read: 0x88: @07: 94
13:33:36.639844 😧 read: 0x88: @08: 9e
13:33:36.639857 😧 read: 0x88: @09: d6
13:33:36.639870 😧 read: 0x88: @0a: d0
13:33:36.639889 😧 read: 0x88: @0b: 0b
13:33:36.639907 😧 read: 0x88: @0c: 26
13:33:36.639924 😧 read: 0x88: @0d: 20
13:33:36.639939 😧 read: 0x88: @0e: 62
13:33:36.639955 😧 read: 0x88: @0f: ff
13:33:36.639971 😧 read: 0x88: @10: f9
13:33:36.639988 😧 read: 0x88: @11: ff
13:33:36.640005 😧 read: 0x88: @12: 8c
13:33:36.640023 😧 read: 0x88: @13: 3c
13:33:36.640040 😧 read: 0x88: @14: f8
13:33:36.640055 😧 read: 0x88: @15: c6
13:33:36.640072 😧 read: 0x88: @16: 70
13:33:36.640090 😧 read: 0x88: @17: 17
13:33:36.645969 OK:      875:    27349 vs.    19000/   35000
13:33:36.646048 OK:      881:    25772 vs.    22000/   30000
13:33:36.646063 ERR:     884:       50 vs.    -3000/   -1000
13:33:36.646095 OK:      893:    38139 vs.    30000/   42000
13:33:36.646109 OK:      899:   -10594 vs.   -12970/   -8000
13:33:36.646125 OK:      905:     3024 vs.    -5000/    8000
13:33:36.646141 OK:      911:     8230 vs.   -10000/   18000
13:33:36.646158 OK:      917:     -158 vs.     -500/    1100
13:33:36.646174 OK:      923:       -7 vs.    -1000/    1000
13:33:36.646190 OK:      929:   -14600 vs.   -30000/   10000
13:33:36.662018 OK:      935:     6000 vs.   -10000/   30000
13:33:36.662074 E:  128: self-test failed: -9

Β 

Since I do not see the values in the datasheet, I'm unsure where the problem lies: code (-1000 value is too low) or in the chip (i.e. at production time).

I have tested with two chips and both show 50 (but have some different values on other fields):

12:56:50.979826 OK:      879:    27608 vs.    19000/   35000
12:56:50.979848 OK:      885:    25836 vs.    22000/   30000
12:56:50.979882 ERR:     888:       50 vs.    -3000/   -1000
12:56:50.979914 OK:      896:    39409 vs.    30000/   42000
12:56:50.979937 OK:      902:   -10632 vs.   -12970/   -8000
12:56:50.979965 OK:      908:     3024 vs.    -5000/    8000
12:56:50.979998 OK:      914:     8011 vs.   -10000/   18000
12:56:50.995638 OK:      920:     -293 vs.     -500/    1100
12:56:50.995815 OK:      926:       -7 vs.    -1000/    1000
12:56:50.995860 OK:      932:   -14600 vs.   -30000/   10000
12:56:50.995901 OK:      938:     6000 vs.   -10000/   30000

Β 

Any help appreciated.

Β 

Thanks,

Β 

Marc.Β 

5 replies
Resolved