BHI360 + BMM350 : No Mag data on custom board

Hello Bosch Sensortec community,

I am working on a custom board with a BHI360 and a BMM350 connected as an external sensor in I2C. I am writing my own library to communicate from my host CPU to the BHI360.

Here are some information about my setup:

- I followed the BHI360 datasheet (4.1.2) to connect the BMM350 (see my schematic below).

- I successfully flashed the "BHI360_BMM350C" firmware.

- My host CPU can read the BHI360 Acc and Gyro data without any issue. (Although the gyro sensor self-test reports an Error 7: Multiple Axis Failed or Single Test Failed.)

- The BMM350 self test returns 0: Test passed. However, when I try to use any virtual sensor using the BMM350 (such as the Magnetometer corrected or the rotation vector), I have the following errors for the Magnetometer: (0x24 Sensor Error: No Valid Data) and (0x25: Slow Sample Rate).

- The virtual sensor rate is set to 100 Hz. I am using the non-wake up FIFO.

- The Physical sensor information for the BMM350  are shown below, one strange thing is that its Master interface flag bits are "0b1010", which is not one of the possibilities of Table 65.

Here are my questions:

- Do you have any idea why I cannot get data from the BMM350 ? Do I have to do additionnal configuration steps besides loading your firmware and starting a virtual sensor to make it work ? Do I need to manually configure the BMM350 using the soft pass-through feature of the BHI360 (13.2.4) ?

- Is there something wrong with my schematic ? I didn't wire the interrupt pin of the BMM350, is it mandatory?

- What can I do about the Gyroscope self-test error ? The output data looks ok, it's not 0 when still, but the variations when I move the sensor around make sense.

Thank you very much for your help.

bmm350_sensor_info.PNG
8.71KB
bhi360_bmm_350_schematic.PNG
54.89KB
Best reply by FCO_VK

Here is an update. I purchased some BHI360 shuttle boards 3.0 to make some tests:

- I connected the shuttle board to my MCU I2C line, (the same line where my own BHI360 is connected). I put the shuttle board SDO pin to high to be able to use the 0x29 address to connect to the BHI360 (my own BHI360 is at 0x28). I finally connected the shuttle board to my board 1.8V power line.

- Running my own code and your BHI360_BMM350C firmware, I was able to use the magnetometer as expected (no errors, self-tests passing).

- I was able to reproduce my errors (0x24, 0x25) by unsoldering R17 from the shuttle board (hence cutting the INT line of the BMM350).

This confirms that in order to use the BMM350 with the BHI360, the INT line from the BMM350 must be connected to the BHI360 JTAG_DIO pin. This information is nowhere to be found in all the documentation available. This made us loose a lot of time and it would be appreciated if you could update the firmware and sensor documentation for future custommers.

Moreover,BSTRobin 's answer regarding the connection of the pin 4 (HIRQ) of BHI360 to the host MCU is factually wrong since I could make the shuttle board work fine without it using polling mode.

I still don't know why my BHI360 gyro self-test is not ok while the one of the shuttle board has no error, I'm looking into that.

View original
13 replies
Resolved