cancel
Showing results for 
Search instead for 
Did you mean: 

Fluctuation of gyro angular velocity data of LSM6DSL motion sensor

BWu.4
Associate II

First of all, I apologize for my unprofessional English!

In the process of using STM32 board to collect data from lsm6dsl module, the angular velocity data of gyroscope can be output stably, but there are jumps in the angular velocity of three directions.

0693W000007ZJUXQA4.pngIn the high performance mode I set, the range of the gyroscope is 250dps, the frequency is 52hz, and the peak value of the jump is 2.2dps (the peak value is stable, and it feels like being limited).0693W000007ZJUwQAO.pngAccording to the gyroscope digital chain:0693W000007ZJVBQA4.pngI have opened digital LP filter (lpf2), digital high pass filter (HPF) and digital low pass filter (lpf1), but I have not improved the jump.

0693W000007ZJVGQA4.pngDo you know what the problem is ?

1 ACCEPTED SOLUTION

Accepted Solutions
Eleon BORLINI
ST Employee

Hi @BWu.4​ ,

do the screens you posted refer to a scope measure or they are already processed, as it would seem? Is the data processing routine validated?

Supposing it is a device-related issue (from configuration or from the device itself), how are you acquiring the data? I mean are you in polling mode or in interrupt mode? In both cases, but especially in polling mode, I suggest you to check if you have enabled the BDU bit of the CTRL3_C (12h) register: this to prevent to read MSB and LSB from different data frames. Check also if you are passing through the FIFO...

I suggest you also to check your configuration code with the examples on Github, such as the lsm6dsl_read_data_polling.c.

-Eleon

View solution in original post

4 REPLIES 4
Ozone
Lead

Writing your question in Chinese language drastically limits the number of possible responders.

Thank you for your advice.

Eleon BORLINI
ST Employee

Hi @BWu.4​ ,

do the screens you posted refer to a scope measure or they are already processed, as it would seem? Is the data processing routine validated?

Supposing it is a device-related issue (from configuration or from the device itself), how are you acquiring the data? I mean are you in polling mode or in interrupt mode? In both cases, but especially in polling mode, I suggest you to check if you have enabled the BDU bit of the CTRL3_C (12h) register: this to prevent to read MSB and LSB from different data frames. Check also if you are passing through the FIFO...

I suggest you also to check your configuration code with the examples on Github, such as the lsm6dsl_read_data_polling.c.

-Eleon

Thanks for your advice;

I solved the problem by referring to the routine.