static inline void HAL_writePwmData(HAL_Handle handle,HAL_PwmData_t *pPwmData)
{
uint_least8_t cnt;
HAL_Obj *obj = (HAL_Obj *)handle;
PWM_Obj *pwm;
_iq period;
_iq pwmData_neg;
_iq pwmData_sat;
_iq pwmData_sat_dc;
_iq value;
uint16_t value_sat;
for(cnt=0;cnt<3;cnt++)
{
pwm = (PWM_Obj *)obj->pwmHandle[cnt];
period = (_iq)pwm->TBPRD;
pwmData_neg = _IQmpy(pPwmData->Tabc.value[cnt],_IQ(-1.0));
pwmData_sat = _IQsat(pwmData_neg,_IQ(0.5),_IQ(-0.5)); //_IQsat(A, long P, long N)//IQ数值的限幅函数 把A限制到[N P]之间
pwmData_sat_dc = pwmData_sat + _IQ(0.5);
value = _IQmpy(pwmData_sat_dc, period);
value_sat = (uint16_t)_IQsat(value, period, _IQ(0.0));
// write the PWM data
PWM_write_CmpA(obj->pwmHandle[cnt],value_sat);
}
return;
} // end of HAL_writePwmData() function
pPwmData->Tabc.value[cnt]是由三项电压标幺值减去最大最小电压标幺值和的一半而得出的,作为PWM占空比来使用,但是电压标幺值是由实际电压除上USER_IQ_FULL_SCALE_VOLTAGE_V得到的,而占空比直接相关的是母线电压,如果母线电压与USER_IQ_FULL_SCALE_VOLTAGE_V相等,则比较容易理解。母线电压比USER_IQ_FULL_SCALE_VOLTAGE_V要小很多,所以直接把电压标幺值作为占空比,不会导致输出电压要小于实际所需电压吗?希望大神帮忙解答,谢谢