BMI270 unable to get Data Ready Interrupt

I am using a BMI270 connected to an ESP32-S3 with I2C on a custom board. INT1 of the BMI270 is connected to IO8 on the ESP32.

I'm initializing the BMI270 with the config file from https://github.com/boschsensortec/BMI270_SensorAPI/blob/master/bmi270.c

I'm reading init_ok from INTERNAL_STATUS register (0x21) after initialization.

Next I configure the accelerometer and gyroscope to 100Hz data rate and enable the interrupt:

    //Enable accelerometer, gyroscope, and temperature sensors, disable aux interface
    i2c_write_register(I2C_NUM_1, BMI270_ADDR, 0x7D, 0x0E);
    i2c_write_register(I2C_NUM_1, BMI270_ADDR, 0x40, 0xA8);
    i2c_write_register(I2C_NUM_1, BMI270_ADDR, 0x42, 0xA8); 
    i2c_write_register(I2C_NUM_1, BMI270_ADDR, 0x7C, 0x02);
    //Enable INT1 interrupt pin, map to data ready interrupt
    i2c_write_register(I2C_NUM_1, BMI270_ADDR, 0x53, 0x0C);
    i2c_write_register(I2C_NUM_1, BMI270_ADDR, 0x58, 0x04);

 When I read the accelerometer and gyroscope data once a second it seems to be correct when I move the board around.

Reading the INT_STATUS_1 register, bit 6 & 7, gyroscope & accelerometer data ready interrupt bits are 1.

However, I'm not getting any change on the INT1 pin. The ESP32 pin is configured as an input and when I enable the internal pull-up INT1 is high. When I disable the pull-up the pin is low, indicating that the BMI270 is not driving the INT1 pin.

Any idea what I am doing wrong here? Any suggestions are greatly appreciated.

Thanks.

3 replies