TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F2800157: PWM死区时间设置的问题

Part Number:TMS320F2800157

想在PWM的下降沿设置时区时间,设置PWM死区时间的代码如下

测试结果是,只在PWMB上看到了死区时间,但是在PWMA上没有看到死区时间(波形如下图),

请问是什么原因? 是我的代码有问题吗?

EPWM_setDeadBandCounterClock(PWM_BASE1,EPWM_DB_COUNTER_CLOCK_FULL_CYCLE);
        //EPWM_setRisingEdgeDelayCount(PWM_BASE1,pwm_dbred_ticks);
EPWM_setFallingEdgeDelayCount(PWM_BASE1,HBRIDGE_DEADBAND_PWM_COUNT);
EPWM_setDeadBandDelayMode(PWM_BASE1,EPWM_DB_RED,false);
EPWM_setDeadBandDelayMode(PWM_BASE1,EPWM_DB_FED,true);
       //EPWM_setRisingEdgeDeadBandDelayInput(PWM_BASE1,EPWM_DB_INPUT_EPWMA);
       //EPWM_setRisingEdgeDeadBandDelayInput(PWM_BASE1,EPWM_DB_INPUT_EPWMB);
EPWM_setFallingEdgeDeadBandDelayInput(PWM_BASE1,EPWM_DB_INPUT_EPWMA);
EPWM_setFallingEdgeDeadBandDelayInput(PWM_BASE1,EPWM_DB_INPUT_EPWMB);
       //EPWM_setDeadBandDelayPolarity(PWM_BASE1,EPWM_DB_RED,EPWM_DB_POLARITY_ACTIVE_HIGH);
EPWM_setDeadBandDelayPolarity(PWM_BASE1,EPWM_DB_FED,EPWM_DB_POLARITY_ACTIVE_HIGH);

John Pan:

我想要的效果是:

,

John Pan:

总结来说,就是PWMA和PWMB在下降沿时,死区时间都有效

,

Yale Li:

理解整个DB模块可能会更有帮助。

使用DB模块的时候,就看它的框图就可以了:

DB模块很简单,就是由两部分组成的,延时计数器和开关。

延时计数器用于检测上升(上面的)及下降沿(下面的)并通过延迟的方式增加死区;开关的作用是选择信号的路径,熟悉了之后会更加理解控制每个开关的寄存器名称的含义。

所以无论通过寄存器还是库函数的编程方式,本质就是控制这些开关以及延迟的时间。TRM中的各种名词反而把事情复杂化了。

结合本问题,两路是不可能同时使用下降沿延时的。实现的方式大致是A路输出使用A路输入、上升沿延时并反向,B路输出还是使用A路输入、下降沿延时:

也就是TRM P1367~1368中所说的Active Low Complementary (ALC):

https://www.ti.com.cn/cn/lit/ug/spruiy4a/spruiy4a.pdf 

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F2800157: PWM死区时间设置的问题
分享到: 更多 (0)