chwf491701687 发表于 2017-4-11 11:03:36

STM32电机库的问题

在ST的PMSM的电机库里,在 SVPWM_3ShuntCalcDutyCycles
这个子程序里,是计算PWM的占空比的,有这么一段:


switch(bSector)
{
    case SECTOR_1:
                hTimePhA = (T/8) + ((((T + wX) - wZ)/2)/131072);
    hTimePhB = hTimePhA + wZ/131072;
    hTimePhC = hTimePhB - wX/131072;
               
                // ADC Syncronization setting value            
                if ((u16)(PWM_PERIOD-hTimePhA) > TW_AFTER)
                {
                  hTimePhD = PWM_PERIOD - 1;
                }
                else
                {
                  hDeltaDuty = (u16)(hTimePhA - hTimePhB);
                  
      // Definition of crossing point
                  if (hDeltaDuty > (u16)(PWM_PERIOD-hTimePhA)*2)
                  {
                      hTimePhD = hTimePhA - TW_BEFORE; // Ts before Phase A
                  }
                  else
                  {
                      hTimePhD = hTimePhA + TW_AFTER; // DT + Tn after Phase A
                     
                  if (hTimePhD >= PWM_PERIOD)
                  {
                      // Trigger of ADC at Falling Edge PWM4
                      // OCR update
                     
                      //Set Polarity of CC4 Low
                      PWM4Direction=PWM1_MODE;
                     
                      hTimePhD = (2 * PWM_PERIOD) - hTimePhD-1;
                  }
                  }
请问这里的131017是哪里来的数据,是干什么用的?

feixiang20 发表于 2017-6-28 12:54:35

是分母。估计是一个 周期或某个 范围的数据。

wuchunyang1992 发表于 2017-6-28 16:43:14

楼主这个库,怎么找到的,可以传一份给我吗?1137502123:'(:'(:'(:'(:'(

子曰好人 发表于 2017-6-29 11:52:36

131072是2^17,除以131072的意思是可以理解为把数据左移17位。抢个地板:lol

dzzwoaizi 发表于 2017-8-4 08:53:40

本帖最后由 dzzwoaizi 于 2017-8-15 10:03 编辑

其实这里转化的就是 (T/8)-((wZ-wY)/65536);
至于为啥,你要结合上面的公式和中心对称模式的技术模式来计算的。你可以看看TI的和Microchipde的文档,或这看这个,不知道ST怎么想的,非要吧DQ搞反一下,很让人无语。
页: [1]
查看完整版本: STM32电机库的问题