Skip to main content
Visitor II
January 13, 2021
Question

Lsm6ds3: I'm working on Fifo functionality of Lsm6ds3 for z-axis but when i retrieve values I'm getting higher g values of 2g at steady state. Can somebody explain why such higher values are generated.

  • January 13, 2021
  • 1 reply
  • 806 views

I'm using FIFO in continuous mode and when i read from LSM6DS3_ACC_GYRO_FIFO_DATA_OUT_H register most of the times I'm getting constant value of 0x0F from this register at steady state. The values generated at steady state are 2g always.

    This topic has been closed for replies.

    1 reply

    ST Employee
    January 13, 2021

    Hi @Community member​ ,

    are you facing the same issue also in reading the data-out registers in polling mode (bypassing the FIFO)?

    And is the issue related only to accelerometer z-axis or also to the gyroscope)? And for each FIFO batch or randomly distributed?

    I would suggest you to check:

    A. Whether you are correctly converting the data out:

    float_t lsm6ds3_from_fs2g_to_mg(int16_t lsb)
    {
     return ((float_t)lsb * 61.0f / 1000.0f);
    }

    B. Whether you are correctly setting the LSM6DS3 FIFO configuration and the correspondent reading of the samples batches from the FIFO memory. I suggest you to check the examples available on Github, such as the lsm6ds3_multi_read_fifo.c or the lsm6ds3_multi_read_fifo_simple.c.

    [If the other two suggestion failed --> C. Whether you set the BDU bit of the CTRL3_C (12h) register: this would prevent the output registers to be updated until MSB and LSB have been read]

    Please let me know if I misunderstood the point and / or if you are able to make some progression.

    -Eleon