Multiple_Read_QMC5883(BUF);
magx=BUF[1] << 8 | BUF[0]; //Combine MSB and LSB of X Data output register 最高有效位
magy=BUF[3] << 8 | BUF[2]; //Combine MSB and LSB of Y Data output register
magz=BUF[5] << 8 | BUF[4]; //Combine MSB and LSB of Z Data output register
if(magx>0x7fff)magx-=0xffff;
if(magy>0x7fff)magy-=0xffff;
if(magz>0x7fff)magz-=0xffff;
magx=magx-offsetX;magy=magy-offsetY;magz=magz-offsetZ;
當然這還是不夠的,因為磁場便宜,或當地磁場問題會造成,xyz擬合的時候出現橢圓,所以要修正;
Multiple_Read_QMC5883(BUF); //連續讀出數據,存儲在BUF中
X=BUF[1] << 8 | BUF[0]; //Combine MSB and LSB of X Data output register 最高有效位
Y=BUF[3] << 8 | BUF[2]; //Combine MSB and LSB of Y Data output register
Z=BUF[5] << 8 | BUF[4]; //Combine MSB and LSB of Z Data output register
if(X>0x7fff)X-=0xffff;
if(Y>0x7fff)Y-=0xffff;
if(Z>0x7fff)Z-=0xffff;