关于DRV8301演示板

Other Parts Discussed in Thread: DRV8301

  在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三个变量是做什么用的?

 

我看貌似是跟占空比有关,这里面有个什么理论依据,为什么是这样算的?