BMI270 - Interrupts not working, INTERNAL_ERROR long processing time

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?

1
3 replies