在DRV8301演示版的BLDC源程序中,有一个驱动宏单元不是很明白,请教一下各位高手!
f2803xpwm_cntl_8301.h中的PWM_CNTL_MACRO宏单元,其中开始有几个代码,每太明白,如下:
iqPosDuty = _IQmpy(v.Duty, _IQ(0.5)) + _IQ(0.5); \
uiPosDuty = (Uint16) ((_IQ18mpy((_iq)v.PWMprd<<18, _IQtoIQ18(iqPosDuty))) >> 18); \
uiNegDuty = v.PWMprd - uiPosDuty; \
EPwm1Regs.CMPB = (uiPosDuty + uiNegDuty)>>1;
……
这个iqPosDuty、uiPosDuty、uiNegDuty三个变量是做什么用的?
我看貌似是跟占空比有关,这里面有个什么理论依据,为什么是这样算的?