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.
... View more