1、 数据读取
X_QMC=BUF[1]<< 8 | BUF[0]; //Combine MSB and LSB of X Data output register 最高有效位
Y_QMC=BUF[3]<< 8 | BUF[2]; //Combine MSB and LSB of Y Data output register
Z_QMC=BUF[5]<< 8 | BUF[4]; //Combine MSB and LSB of Z Data output register
2、 水平校准:把椭圆修到正圆,一、修偏心,二、修半径。
a)、选定中心点,以固定半径R水平旋转,找出x和y的最大最小值x_max、x_min、y_max 、y_min。
b)、于是,x的偏移: Xoffset= (x_max + x_min) / 2;
c)、x的比例取:x_gain=1
d)、y的偏移:Yoffset =(y_max + y_min) / 2;
e)、y的比例:y_gain=(x_max – x_min) / (y_max – y_min);
X_QMC = Xgain *(X_QMC -Xoffset);
Y_QMC = Ygain * (Y_QMC -Yoffset);
3、空间校准:把椭球修到正球
a)、空间旋转芯片,找出xyz的最大最小值xmax、xmin、ymax 、ymin、zmax 、zmin。
b)、于是,x的偏移: Xoffset= (xmax + xmin) / 2;
c)、x的比例取:x_gain=1
d)、y的偏移:Yoffset =(ymax + ymin) / 2;
e)、y的比例:y_gain=(xmax – xmin) / (y_max -y_min);
f)、 z的偏移:Zoffset =(zmax + zmin) / 2;
g)、z的比例:z_gain=(xmax – xmin) / (z_max -z_min);
X_QMC = QMC_Xgain *(X_QMC – QMC_Xoffset);
Y_QMC = QMC_Ygain * (Y_QMC – QMC_Yoffset);
Z_QMC = QMC_Zgain * (Z_QMC- QMC_Zoffset);