I am trying to calibrate my BNO055 sensor but I am getting some strage results. My code first sends a reset signal to the sensor and then waits 1 second before sending a command over I2C to put it into NDOF mode. Then I try to read the CALIB_STAT register until I receive 0xFF as a response. If I send the command to enter NDOF mode just once at the beginning of my code, I just read 0 from the CALIB_STAT register no matter how much I mode the sensor around. If I send the command for NDOF mode continuously in the same loop that I try to read the CALIB_STAT register, I will read 0x3F sporadically for about 1-2 seconds and then the register will read 0 again. I'm not sure if my assumption that I should be getting 0xFF back is correct but even if I only need to read 0x3F, I can only seem to get that status for a couple of seconds at a time. Any suggestions would be much appreciated.
The correct way to do sensor calibration is as following:
1. power on the BNO055 sensor
2. set to the NDoF mode
3. keep board in still for few mini-seconds
4. move the boards along to positive and negative position of each axis
5. then trying to keep reading the CALIB_STAT register, then you will get 0xFF value in the end
It will take a few seconds to get all calibration done. but normally, you just make sure system calibration, gyro calibration and magnetic calibration goes to 3, then your output is good enough. acc calibration will go to 3 during your usage.