cancel
Showing results for 
Search instead for 
Did you mean: 

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.

RK.6
Associate

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 discussion is locked. Please start a new topic to ask your question.
1 REPLY 1
Eleon BORLINI
ST Employee

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