uint16_t RN8302_CalibratePx_PHSL(uint8_t phase)
{
uint8_t regbuf[5],i;
uint32_t regtemp[5],regtotal=0;
float err = 0;
const uint16_t regGPx[]={0x0131,0x0132,0x0133};
const uint16_t regGQx[]={0x0134,0x0135,0x0136};
const uint16_t regArry[]={0x0014,0x0015,0x0016};
uint32_t pGain;
uint32_t data;
RN7302_Read(regArry[phase],regbuf);
printf("Arry_Reg=%02x%02x%02x%02x \r\n",regbuf[0],regbuf[1],regbuf[2],regbuf[3]);
regtotal = regbuf[0]<<24|regbuf[1]<<16|regbuf[2]<<8|regbuf[3];
data = regtotal*1.0;
printf("data=%f\n",data);
//err = (data-9179115)*1.0/9179115;
err = (data-19669533)*1.0/19669533;
printf("err1=%f\n",err);
err = -err/1.732;
printf("err2=%f\n",err);
if(err > 0){
pGain = (uint16_t)(err*32768);
}
else{
pGain = (uint16_t)(err*32768+65536);
}
StDef_RN8302Para_Reg.Cst_Px_PHSL[phase] = pGain;
StDef_RN8302Para_Reg.Cst_Qx_PHSL[phase] = pGain;
printf("pGain=%d\r\n",pGain);
printf("Cst_Px[phase]=%d\r\n",StDef_RN8302Para_Reg.Cst_Px_PHSL[phase]);
return pGain;
}
|