Hello Miyamoto,
I hope all is great with you.
The measured acceleration data is stored in the OUT_X_MSB, OUT_X_LSB, OUT_Y_MSB, OUT_Y_LSB, OUT_Z_MSB, and OUT_Z_LSB registers as 2’s complement 10-bit numbers. The most significant 8-bits of each axis are stored in OUT_X (Y, Z)_MSB, so applications needing only 8-bit results can use these three registers and ignore OUT_X,Y, Z_LSB. To do this, the F_READ bit in CTRL_REG1 must be set. When the F_READ bit is cleared, the fast read mode is disabled.
Having said that, I would like to proceed with your questions below:
1.Is the calibration function available even for data is 8bit?
In the MMA845 1, 2, 3Q there are three 8-bit (volatile) offset registers for storing the calibration values, at one register per axis. When the offsets are stored in the OFF_X, OFF_Y and OFF_Z registers the values will be added to the X, Y, and Z output of the device automatically until the device is powered off.
So, the calibration procedure is available in either 10-bit or 8-bit output resolution.
2.Is the wait needed after setting OFF_X, OFF_Y and OFF_Z?
You can add a simple delay, but not necessarily. As mentioned, when the offsets are stored in these registers the values will be added to the X, Y, and Z output of the device automatically until the device is powered off.
3.Is the below understanding correct?
If the calibration is correctly set (as described in AN4069), the read-out data is calibrated into 0 for X,Y. And the read-out data for Z will be 1g.
Indeed, if the calibration procedure is elaborated correctly, the output will tend to 0g(X,Y)/1g(Z) as long as the device is static as the image below:
4. Could you show me how to calibrate the values as over the 0.5G into 0 when using 10bit?
I recommend reviewing the example project from here, in which a simple offset calibration procedure is shown.
For further information, please review the application note AN4069.
I hope this information will be useful for you.
Regards,
David