Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 Fusion Data Spike

    BNO055 Fusion Data Spike


    Hardware : Gravity: BNO055+BMP280 intelligent 10DOF AHRS from DFRobot  & STM32F407VGT Discovery

    Method: Reading Euler angles using I2C

    Problem: There are spikes in reading data.


    1- Tried with another IMU (L3G4200D and LSM303DLHC) and I2C working perfectly fine. This means STM32F407VGT Discovery is OK.

    2- Tried other fusion outputs (Quaternion and Linear Acc) and reading spikes. So the problem is not about Euler registers.

    3- There is no vibration at all just using my hand to rotate very slowly sometimes faster. Speed doesn't change the results. I have always reading spikes.

    Files added:

    1- Excel table for my reading logs. (Obtained from STM Studio)

    2- 1 PNG images from STM Studio that show spikes.

    3- 1 PNG image from Excel table where spike can clearly observable.


    1- Is it a problem that occurs in any BNO055 or my BNO055 is damaged?

    2- What is the probable cause and how to avoid it?

    3- My goal is to use this IMU in Quadcopter. Any advice about using another model? I am not good with filters like Kalman so I have to have an IMU that calculates angles for me.

    This is my second post. The first one never answered. Please I need some answers.


    4 REPLIES 4

    Community Moderator
    Community Moderator

    Yes, sorry for copying the post. When there was no answer I want to declare the problem more clearly. Waiting for your solutions. Thank you.


    Hello Emer,

    Email from Emer


    I have added a zip file. In this file, there is 1 raw txt log and 1 excel file for the log.

    You can see 3 spikes in PNG files. They have named with data name and timestamp so you can look from excel.

    For example:

    spike1_euler(2)_t_7481ms = First spike, in bno055_euler[2] with timestamp 7481 ms.

    So go to log.xlsx and see row number 3949. In the time of 7483.93'th ms bno055_euler[2], jump 0 to -16 degree.After that, it comes back to -0.25 degree.


    To see better I only have Euler data in the graph. But all measurements are in the log files.


    The I2C reading time (elapsed time) labeled with elapsed_time (in ms).


    I also added my code snipped for main init and while loop. And I2C related functions.

    My hardware is STM32F407VGT Discovery. It is a very basic developer board.

    I use STM32CubeIDE to program my board.

    I have tested with the same pins, same code (Of course different I2C address) with another IMU and I have 1-2 ms elapsed time max.

    I am using fast mode (400kHz). I have tested with normal mode (100kHz) but the result was worse as expected.



    thanks for your update of the data log and better description of your issue. 

    I have tried to reproduce your issue with one BNO055 in my hand, but I cant reproduce.

    I have checked your code and data. It appears to me the problem comes from the setup of I2C. Can you please capture the oscillogram with an oscilloscope and check and then we can have a look at the what really happened about the spike.


    Community Moderator
    Community Moderator

    Hello canpinaremre,

    After we took phone call with you, could you give further feedback?