在ISR的函数HAL_readAdcData(halHandle,&gAdcData)中,如下
// convert voltage A
value = (_iq)ADC_readResult(obj->adcHandle,ADC_ResultNumber_4);
value = _IQ12mpy(value,voltage_sf) – obj->adcBias.V.value[0]; // divide by 2^numAdcBits = 2^12
pAdcData->V.value[0] = value;
在无感FOC用户指南中看到,理想的bias=0.5VOLTAGE_SF,理想bias时,根据上算法pAdcData->V.value[0]=ADCRESULT[4]*VOLTAGE_SF—0.5*VOLTAGE_SF
=(ADCRESULT[4]—0.5)*VOLTAGE_SF=(ADCRESULT[4]—2048/4096)*VOLTAGE_SF,这是怎么就表示实际电压的PU值了呀?按我的理解实际电压的PU值应该为(ADCRESULT[4]—2048)/4096*VOLTAGE_SF才对呀?有谁了解这一部分的换算的?求大神解惑呀?
Young Hu:IQ12使用32位来表示。QN格式对应数据类型为_iqN,表示使用N位来表示小数,其余32-N位表示整数。在_IQ12mpy(value,voltage_sf)中,12位的ADC采样值被当作IQ12的数据去做乘法,刚好是做了数值的归一化。