Hi Vincent,
Your observation is correct I do re-enter the NDOF-Fusion operation mode after reading/writing calibration status and calibration values registers, but I forgot to call a sub to enter Config_Mode before doing that. I made the corrections and I will recheck.
But... you do perform a reset in order to reload the calibration values. That works on my board too. I thought it isn't necessary to power off / on (reset) the BNO055 chip in order to write the calibration values registers ?!
The manual (page46) says:
Setting Calibration profile
It is important that the correct offsets and corresponding sensor radius are used. Incorrect
offsets may result in unreliable orientation data even at calibration accuracy level 3. To set
the calibration profile the following steps need to be taken
1. Select the operation mode to CONFIG_MODE
2. Write the corresponding sensor offsets and radius data
3. Change operation mode to fusion mode
And on the same page:
3.11.4 Reuse of Calibration Profile
Once the device is calibrated, the calibration profile can be reused to get the correct
(prior to going through the steps
mentioned in the above section). However, once the sensor enters the internal calibration
routine, the calibration profile is overwritten with the newly obtained sensor offsets and
sensor radius. Depending on the application, necessary steps had to be ensured for proper
calibration of the sensor.
So I guess the question is: Do I have to first reset the chip to reload the pre-saved calibration values (offset and radius values) ?
The calibration profile restore are expected when sensor is after soft reset or power on reset.
When sensor is working, the fusion lib is working properly, write to the calibration parameters are not recommed or even i will say not allowed because the offset value with current caculation will be broken by your write.
The calibration level drop during sensor run is expected if any distortion on magnetic field or offset change from sensor due to any reason will cause the calibration level drop from 3. And a recalibration process are running in background to bring it back to 3. No user interaction needed here on SW side. Just require some movement to calibrate the magnetic sensor here.