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.

关于28335PWM生成死区设置问题



在HVMotorCtrl+PfcKit_v2.0的HVACI_Sensorless_2833x中死区时间的设置有程序 

pwm1.Deadband  = 2.0*SYSTEM_FREQUENCY;          // 120 counts -> 2.0 usec for TBCLK = SYSCLK/1      

 

 /* Init Dead-Band Generator for EPWM1-EPWM3*/      \         

 (*ePWM[ch1]).DBFED = v.Deadband;         \         

(*ePWM[ch1]).DBRED = v.Deadband;         \        

  (*ePWM[ch2]).DBFED = v.Deadband;         \        

  (*ePWM[ch2]).DBRED = v.Deadband;         \         

 (*ePWM[ch3]).DBFED = v.Deadband;         \         

 (*ePWM[ch3]).DBRED = v.Deadband; 

请问算出来的结果pwm1.Deadband即DBFED、DBRED不是应该是300吗?这样的话根据文档TMS320x2833x, 2823x Enhanced Pulse Width Modulator (ePWM) Reference Guide sprug04a里的Dead-Band Delay Values in μS as a Function of DBFED and DBRED不是应该是3μS吗?为什么注释是120 counts  2μS?

还有如果DBFED、DBRED设置的最大值就是1000,不能超过1000?

另外根据程序死区的寄存器设置,极性选择为AHC模式,并且Dead-band is fully enabled for both rising-edge delay on output EPWMxA and falling-edge delay on output EPWMxB,DBRED是上升沿延迟,DBFED是下降沿延迟,但是在图中AHC模式中下降沿延迟并没有看到啊,在这个模式中EPWMxB上升沿延迟了,请问这是怎么回事?

 

  • 楼主你好,

    pwm1.Deadband  = 2.0*SYSTEM_FREQUENCY;          // 120 counts -> 2.0 usec for TBCLK = SYSCLK/1  

    注释应该是笔误,因为程序从F2803X移植过来,对于F2803X来说120对应为2.0us.

    如果是F2833X的话,同样原理设置2*150=300.

    关于DBRED和DBFED,因为是高有效互补输出,因此BDRED作用在EPWMA的上升沿,而DBFED作用在EPWMB的上升沿,这个是正确的。DBRED和DBFED是针对原始波形来看就分别是上升缘和下降沿

  • Johnson Chen1,您好,按照您说的F2833X设置是2*150=300的话,根据文档上Dead-Band Delay Values in μS as a Function of DBFED and DBRED的对应关系,在跑在150MHZ、DBFED, DBRED是300的情况下,延迟时间应该是3us,但是为什么我用示波器看到的是2us???

  • 楼主不需要纠结这个问题,

    简单的算法如下:

    pwm1.Deadband  = x*SYSTEM_FREQUENCY   // X单位为us.

    如果F28335设置SYSTEM_FREQUENCY为150MHz,那么2.0*150=300,就是2us.

    因此你的测试结果是正确的。上面公式你可以自己推导一下。

  • 不大懂啊,300怎么会对应2us呢?