This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

instaspin_foc 电流电压ADC采样换算以及偏置

在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才对呀?有谁了解这一部分的换算的?求大神解惑呀?

  • IQ12使用32位来表示。QN格式对应数据类型为_iqN,表示使用N位来表示小数,其余32-N位表示整数。在_IQ12mpy(value,voltage_sf)中,12位的ADC采样值被当作IQ12的数据去做乘法,刚好是做了数值的归一化。