Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BMA456 Data ready interrupt too late

    BMA456 Data ready interrupt too late


    Hello all!


    I have a question (or a challenge) regarding the data ready interrupt of the BMA456.

    My wish would be quite simple, to read out the unfiltered acceleration sensor values every 2,5ms.

    Therefore I operate the sensor with 400Hz and configure the sensor with ACC_Conf.acc_perf_mode = 1 and ACC_Conf.acc_bwp = 0x02 (normal mode)


    I observed that about 4 samples are missed after configuration before the first data-ready interrupt occurs. In other words: I'd expect the data ready interrupt about 2,5ms after configuration but actually the data ready interrupt is triggered 12ms after configuration. All interrupts after the first interrupt come with a frequency of 400Hz. See following image:




    If I change the configuration to ACC_Conf.acc_perf_mode = 0 and ACC_Conf.acc_bwp = 0x00 the sensor delivers the data as expected, see following image.

    How does the sensor behave when ACC_Conf.acc_perf_mode = 0 and PWR_CONF.adv_powersave = 0 are set at the same time?

    Unfortunately, this configuration is not described in chapter 4.3 of the BMA456 datasheet.



    I thought that the following configuration would be correct for this:

    ACC_Conf.acc_perf_mode = 1

    ACC_Conf.acc_bwp = 0x02 -> designated as "normal mode"

    But this configuration does not work as expected (as shown above).


    My key questions are:

    - How does the sensor behave when ACC_Conf.acc_perf_mode = 0 and PWR_CONF.adv_powersave = 0 are set at the same time?

    - Why are approx. 4 samples missing when I use the configuration ACC_Conf.acc_perf_mode = 1 and ACC_Conf.acc_bwp = 0x02 (normal mode)?

    3 REPLIES 3

    Community Moderator
    Community Moderator

    Hi Hoerz,

    I setup example code on STM32 with bma456_an sensor API. Haven't reproduce your feedback missing 4 samples.

    test result.png

    In addition, you have to use the configuration in the power configuration table.

    power mode.png

    Hello BSTRobin!

    Thank you for trying to reproduce the problem.
    I am currently wondering why you receive data ready interrupts before the initialization has been completed.


    At which point of time do you write to register (0x58) INT_MAP_DATA?
    Why is there such a long delay (more than 20ms) between writing to register 0x58 and init complete?

    Thank you very much in advance!


    Community Moderator
    Community Moderator

    Hi Hoerz,

    Data ready interrupt is usually mapped in the end of sensor configuration code, read the sensor data after the sensor configuration is completed.
    I upload my test code for your reference.