Hello, we are using the BMP384 sensor in one of our products. We observed that about 16% of the 100-200 barometers failed. Every failed sensor has the same behaviour: No matter which register is accessed; the MISO line always outputs a very weak signal which seems to be correlated with the SCK signal (driven by the MCU).
The firmware is the same on all the devices and it uses the “bmp3-sensor-api” driver to access the device. In addition to BMP384, the SPI bus also hosts another sensor (an IMU made by ST) which is not affected by the failure, so we can exclude a connection problem.
This is the code(pseudo) that we use for initializing the barometer:
delay(2); // 2ms
bmp3_init(); // -> Fails, chip_id value is 255
We have previously used BMP390L where we have not observed any problems and have only later switched to BMP384, benefiting from the same footprint and software compatibility. After we observed this alarming failure rate, we looked out for differences of the sensors. One measure we took was covering the sensor port with Kapton tape and to not wash the sensors during assembly (without any effect). We checked as well that the behavior of the CSB line to make sure that the sensor goes into SPI-Mode and verified the SPI timings.
We would like to know what the potential causes for a failure like this are. Are we doing something wrong with the soldering or is there something wrong with the signals being given to the sensor or are there any other timings (e.g. for power up) that are critical? or something else?
Thanks for your inquiry.
BMP384 is water resistant pressure sensor which means that you don't need to cover the vent hole before soldering. The API works for BMP390L should also work for BMP384. Most likely the issue comes from your soldering which means that the SPI communication is not working.
You may purchase a BMP384 shuttle board from https://www.digikey.com/en/products/detail/bosch-sensortec/SHUTTLE-BOARD-3-0-BMP384/14617510 and then hook some wires from your MCU to the shutle board. If you get the SPI communicaiton working, then it means your code is fine and the issue is from your PCB soldering.