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.

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