Replies: 1 comment
-
|
app.overlay file prj.conf main.c |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Board: Arduino Nano 33 BLE Rev 2 (nRF52840)
OS: Zephyr v3.7.0
Drivers: bmi270, bmm150
Description
I am encountering a reproducible hard failure where the BMI270 (IMU) functions perfectly in isolation but immediately stops generating interrupts and returns 0.00 data the moment the BMM150 (Magnetometer) is initialized.
On this hardware revision, both sensors share:
The same I2C bus.
The same Power Rail (VDD_ENV controlled by P0.22).
Note: The BMM150 is connected directly to the main I2C bus, NOT via the BMI270's auxiliary interface.
Steps to Reproduce
Flash a Zephyr 3.7.0 application with standard overlays for the Nano 33 BLE Rev 2.
Instrument the code to defer BMM150 initialization until the BMI270 is up and streaming.
Observe valid data from BMI270 (Samples 0-63).
Trigger device_init(bmm150).
Expected Behavior:
Both sensors should stream data concurrently.
Actual Behavior:
BMM150 initializes.
BMI270 interrupts cease immediately.
BMI270 data output becomes flat (0.00).
Logs / Evidence
The following log capture shows the transition from valid operation to failure at Sample 64 (Mag Init):
[62] A:-0.02 4.28 8.74 | G:0.00 -0.00 -0.00
!
[63] A:-0.01 4.29 8.73 | G:0.00 -0.00 -0.00
! <-- Triggers stop here immediately after BMM150 Init
[65] A:0.00 0.00 0.00 | G:0.00 0.00 0.00 <-- BMI270 is dead.
Troubleshooting Attempts
I have spent significant time debugging this to rule out basic configuration errors:
[x] Priority Inversion: Tested initializing Mag first/IMU last, and vice versa. Result is identical: as soon as the second device touches the bus/rail, the system fails.
[x] Power Sequencing (SYS_INIT): Moved VDD_ENV (P0.22) power-up to POST_KERNEL priority 40 using a SYS_INIT macro. Added a 200ms delay to allow capacitors to charge before driver binding.
[x] Pin Configuration: Verified GPIO_PULL_DOWN vs GPIO_ACTIVE_HIGH on interrupt pins. The IMU works perfectly in isolation, confirming pin config is generally correct.
Question
Has anyone successfully run the BMI270 and BMM150 simultaneously on Zephyr 3.x with this specific topology (Shared I2C + Shared Power Rail)?
The "Invalid Trim Data" on the BMM150 combined with the BMI270 silence suggests a bus collision or a power dip resetting the I2C logic on the sensors, but standard delays and drive strength adjustments have failed to resolve it.
Beta Was this translation helpful? Give feedback.
All reactions