Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BMM350 connected to BHI360 – hardware and firmware

    BMM350 connected to BHI360 – hardware and firmware



    BMM350 via I2C directly connected with BHI360:
    BMM350-SDA-A2 with BHI360-ASDX-2 and 4,7KOhm pull-up-resistor
    BMM350-SCK-A3 with BHI360-ASCX-3 and 4,7Kohm pull-up-resistor
    BMM350-INT-A1 with BHI360-OCSB-10
    BMM350-ADSEL-B2 to GND.
    Source: chapter 4.1.2 of BHI360-datasheet and “BHI360 Shuttle board 3.0 flyer”


    Firmware from GitHub „BHI360_BMM350C.fw.h“

    Actual situation

    The BHI360 itself works as expected (connected via I2C to an ESP32-S3-WROOM-1):
    Firmware loads and boots without errors.
    The self-tests of the physical sensors 1 (Accelerometer), 3 (Gyroscope) and 5 (Magnetometer) return “ok”.
    The virtual sensors which use the physical sensors 1 and 3 (like 3 (Accel uncalibrated) and 12 (Gyro uncalibrated)) work correctly.

    But all virtual sensors which also use the physical sensor 5 (like 21 (Magneto uncalibrated) and 43 (Orientation)) do not report anything, even not any error message; the physical sensor 5 (like 1 and 3) shows “Power mode: 7-Active”, but no data, no error message.

    I also tried
    “BHI360_Aux_BMM150” which returns after booting the error “0x21 - Sensor Init Failed: Unexpected Device ID”, and
    “BHI360_BMM150” which returns after booting the error “0x22 - Sensor Init Failed: No Response from Device”.

    Doubts and questions

    1. Any remarks to the described hardware-design?
    2. Is the connection “BMM350-INT-A1 with BHI360-OCSB-10” correct/necessary?

    3. Is „BHI360_BMM350C.fw.h“ the correct firmware for this hardware-design?
    4. What does the “C” stand for in “BHI360_BMM350C”?
    5. What is the difference between “BHI360_Aux_BMM150” and “BHI360_BMM150”?

    Software (supposing that „BHI360_BMM350C.fw.h“ is the correct firmware):
    6. Would the self-test of physical sensor 5 detect a failure in the I2C-connection to BMM350?
    7. Are there other possibilities to test the I2C-connection BHI360-BMM350 by software?
    8. Is there anything different in the configuration of virtual sensors 3 and 12 (which work and use physical sensors 1 and 3) and virtual sensor 21 (which does not work and use physical sensor 5)?

    9. Beside the comments in the source-code on GitHub and the BHI360-datasheet, are there other sources of documentation available?

    3 REPLIES 3

    Community Moderator
    Community Moderator

    Hi MartinIOT,

    BHI360's firmware needs to be used in conjunction with your hardware. Can you send out your hardware schematic for review first?

    Hello Robin,

    Thank you for your quick reply.

    As mentioned the communication ESP32-BHI360 works without problems. Therefore I just attach the schematics for the part BHI360-BMM350.
    My doubt is if it is a design-problem, a faulty prototype-implementation (unfortunately my second prototype is unavailable for an other reaseon to double-check that), or if it is "just" a problem of my software-implementatin.

    Additional remarks:

    With firmware „BHI360_BMM350“ the self-test of physical sensor 5 returns “ok”.

    With firmware “BHI360_Aux_BMM150” booting returns error “0x21 - Sensor Init Failed: Unexpected Device ID” and with firmware “BHI360_BMM150” error “0x22 - Sensor Init Failed: No Response from Device”.

    My conclusion of these three results would be that the BMM350 is detected and/or even works correctly (depending on what exactly is covered by the self-test of sensor 5).