Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    Reading only the header from FIFO (BMA400)

    Reading only the header from FIFO (BMA400)

    Established Member

    I have been working with the BMA400 accelerometer. I am attempting to read from the FIFO, I can get the header for the FIFO of 0x9E in my buffer along with the FIFO length of 1022. But the accelerometer data fields are all zero. Any help would be appreicated.


    3 REPLIES 3

    Community Moderator
    Community Moderator

    Did you mean your FIFO content like following:

    0x9E 0x00 0x00 0x00 0x00 0x00 0x00

    0x9E 0x00 0x00 0x00 0x00 0x00 0x00


    If it is the case,  then sensor is not working correctly. 

    Please share your sensor settings including the FIFO setings here?  (better to have a register dump of all register value)

    Established Member

    Hi Vincent, thank you for replying to my question.

    Below are configurations for the BMA400 that I am using;


    ACC_CONFIG0 => 0x01

    Set to low power on start.

    power_mode_conf = In low power (0x01)

    osr_lp = 0x00

    filt1_bw = High (0x00)


    ACC_CONFIG1 => 0x5B

    Use 800Hz data output rate, low power/low accuracy for OSR, and 4g range.

    acc_odr = 800Hz (0x0B)

    osr = osr setting 1 (0x01)

    acc_range = +/-4g (0x01)


    ACC_CONFIG2 => 0x00

    Select filter1

    data_src_reg = acc_filt1 (variable ODR filter)


    FIFO_CONFIG0 => 0xE6

    Enable x/y/z axis, disable 8bit mode, select filter1 (variable data rate), enable sensortime, stop writing on FIFO full, and no FIFO flush on power mode change.

    fifo_z_en / fifo_y_en / fifo_x_en = enable all (0x01)

    fifo_8bit_en = disable (0x00)

    fifo_data_src=acc_filt1 (0x00)

    fifo_time_en = enable (0x01)

    fifo_stop_on_full = stop writing (0x01)



    Watermark int is disabled, but these registers are both 0x00 when read



    fifo_read_disable = set to 0 when reading, set to 1 when not reading


    Application notes:

    The BMA400 starts in low power; if movement is detected it switches to normal mode. It is intended to write to the FIFO when in normal mode and read from the FIFO when it switches back to low power mode.


    Let me know if you need anything else, and thanks again!

    Community Moderator
    Community Moderator

    FIFO data store is only supported in normal mode.   And support to read out FIFO in normal and low power mode. 

    You set sensor in low power mode means even you enable the FIFO, there is no data stored into.

    You can enable also the auto wake up feature,  then when there is motion of sensor,  sensor will switch to normal mode automatically, then start to store data into FIFO.