Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BMI270 Output data rate and interrupts

    BMI270 Output data rate and interrupts



    I'm using a BMI270 shuttle board, and I want to get the accelerometer and gyroscope values at the maximum ODR possible, that is 1600Hz.

    I'm using the board via the SPI bus, using the BMI270 API on github. I have set the registers for PWR_CTRL, ACC_CONF, GYR CONF and PWR_CONF for performance mode as said on page 20 of the datasheet.

    I have also setup a data ready interrupt on the INT1 pin, by modifying the registers: INT_MAP_DATA, INT_IO_CTRL, and INT_LATCH.

    The interrupts that I'm receiving on the microcontroller are always at 5ms interval (200 Hz) irrespective of the acc_odr values set in the ACC_CONF register for the accelerometer and correspondingly for gyroscope.

    Am I missing something? or some step.

    Please guide.

    P.S: I'm using TI's TM4C1294NCPDT based eval board.

    3 REPLIES 3

    Community Moderator
    Community Moderator

    Hello punitjain8695 ,

    If you used 1600 Hz ODR and data ready interrupt, an interrupt will be triggered every 625uS. This requires MCU to respond to interrupts very quickly. The interrupt service program is called very frequently, which increases the load of MCU. A better way is to read data with FIFO watermark interrupt.

    There was BMI270 FIFO watermark interrupt example code for your reference.

    625 us is fine for me. The problem right now is, I want it to happen. I'm checking the interrupts on an oscilloscope right now, and I'm not understanding why it's not happening.

    I'll take a look at the FIFO example. I want to do very fixed rate, synchronous measurements along with some other sensors in the system, and thus, I think maybe reading individual samples is better than the FIFO thing.

    Edit 1: Can you please let me know why I'm not getting data ready interrupt at 625us even when I configure it to be. Also, it's staying at 5ms interval no matter what ODR I program it for. even lower ODR like 25Hz.

    Edit 2: Okay, I figured out the problem with the configuration bits. I'm now able to get interrupts properly. I still want to know if I could actually do it using the FIFO, but still have some sort of time stamps, and synchronize with the other sensors in time domain.

    I checked it with the microcontroller only reading the values without any interruption. The values are changing only after 5ms. I don't think the BMI270 has been configured correctly.

    Hello punitjain8695 ,

    Edit 1: You can use an oscilloscope to measure the interrupt signal instead of MCU;
    Edit 2: For your application, it's better to use FIFO watermark interrupt.
    "I checked it with the microcontroller only reading the values without any interruption", by the way, after you have configured, can you print out all the registers to check whether the configuration is correct?