Hi,
I have problems getting the BMI270 to run with interrupts configured on INT1 pin.
I have configured everything according to the datasheet and as it is done in https://github.com/boschsensortec/BMI270_SensorAPI.
This means especially:
PWR_CONF: 0b00000001
INT1_IO_CTRL: 0b00001010
INT_MAP_DATA: 0b00000100
INT_LATCH: 0b00000000
PWR_CTRL: 0b00000110
Acc Configuration: ODR 200Hz, BWP NormAvg4, filter_perf performance optimized
Gyr Configuration: 0DR 200Hz, BWP Normal, Noise Perf Performance Optimized, Filter Perf Performance Optimized
However, I see no changes in the INT1 pin. I am using the Shuttle Board 3.0 and have verified this with an oscilloscope directly on P1.6.
I have debugged this quite extensively already, here is what I have found:
The firmware/config file gets loaded correctly in two bursts, as my platform doesn't allow a single burst with 8193 bytes (including register byte). For reference, I am loading this firmware blob, which I guess is the most feature-complete one:
https://github.com/boschsensortec/BMI270_SensorAPI/blob/4f0b6990dfa24130052d1713147c6f35a5d3a1da/bmi270.c#L51
This works as intended, after writing I read back the INIT_DATA register and compare it to the config file, and they are identical.
Afterwards, I wait for 20ms and check Bit 3...0 of Register (0x21) INTERNAL_STATUS, which is 0x1 (init_ok), so the upload was successful.
However, after waiting these 20ms, Bit 1 (int_err_1) of Register (0x5F) INTERNAL_ERROR is set to 1, meaning: Internal error flag - long processing time, processing halted.
This Bit is not set directly after a soft reset or even directly after loading the config file, it only gets set after a certain delay, so likely after the initialization of the ASIC was attempted.
Register (0x02) ERR_REG is always 0x00, even when int_err_1 in (0x21) INTERNAL_STATUS is 1.
Here is what I am reading from this:
The ASIC, which I guess is responsible for interrupt assertion, hangs.
I have no clue how to debug this further or what to do next.
Does anybody in here have a suggestion on possible issues or next debugging steps?