01-24-2024 05:01 PM
Hardware
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
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
Hardware:
1. Any remarks to the described hardware-design?
2. Is the connection “BMM350-INT-A1 with BHI360-OCSB-10” correct/necessary?
Firmware:
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)?
General:
9. Beside the comments in the source-code on GitHub and the BHI360-datasheet, are there other sources of documentation available?
01-26-2024 07:59 AM
Hi MartinIOT,
BHI360's firmware needs to be used in conjunction with your hardware. Can you send out your hardware schematic for review first?
01-26-2024 08:26 AM
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.
01-26-2024 09:20 AM
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).
05-30-2024 10:06 AM
Hi MartinIOT,
After reviewing the schematic, it looks like there are no issues. There is no impact when you connect BMM350-INT-A1 with BHI360-OCSB-10 or not.
Ensure that the capacitor connected to the CRST pin is correct and that the BMM350 can function properly.
According your hardware design, BHI360_BMM350C.fw.h is the right firmware for you.
The configuration of virtual sensor ID 3, 12, and 31 is similar and not particularly special.
Just refer to the BHI360 sensor API and examples on GitHub.