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

关于互补PWM程序的一点疑问

在TI官方给出的电源套件-TIDM-1001 LLC的PWM_HB_LLC_2PHIL_SR.c里面有关于互补PWM的初始化程序,我感觉有问题,向大家请教下,请不吝指教。

我只留下关键代码,其他的一些初始化代码略去

void PWM_HB_LLC_2PHIL_SR(int16 n, int16 m, int16 period)//这里用的是EPWM1A和1B,所以n=1
{

(*ePWM[n]).TBPRD = period/2;

(*ePWM[n]).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

// Counter Compare Submodule Registers
(*ePWM[n]).CMPA.bit.CMPA = 1; // Start with 50% duty (Avoid using CMP = 0)
(*ePWM[n]).CMPB.bit.CMPB = period/2 – 1; // Start with 50% duty (Avoid using CMP = PRD)

// Action Qualifier SubModule Registers//以下三行设定的是EPWM1A 50%占空比输出,没什么问题
(*ePWM[n]).AQCTLA.bit.ZRO = AQ_CLEAR;
(*ePWM[n]).AQCTLA.bit.CAU = AQ_SET;
(*ePWM[n]).AQCTLA.bit.PRD = AQ_CLEAR;
// xB AQ output is inverted by DB for RED on xB output//以下三行设定的是EPWM1B 50%占空比输出,我的问题就在这儿,感觉1B和1A同相位,而不是相位互补
(*ePWM[n]).AQCTLB.bit.PRD = AQ_SET;
(*ePWM[n]).AQCTLB.bit.CBD = AQ_CLEAR;
(*ePWM[n]).AQCTLB.bit.ZRO = AQ_SET;

}

按照代码里的Action Qualifier设置,我觉得波形应该如下图所示

这里是不是有什么问题,或者是我的理解错了

BIN YAO1:

是否有设置DBCTL中的POLSEL寄存器

在TI官方给出的电源套件-TIDM-1001 LLC的PWM_HB_LLC_2PHIL_SR.c里面有关于互补PWM的初始化程序,我感觉有问题,向大家请教下,请不吝指教。

我只留下关键代码,其他的一些初始化代码略去

void PWM_HB_LLC_2PHIL_SR(int16 n, int16 m, int16 period)//这里用的是EPWM1A和1B,所以n=1
{

(*ePWM[n]).TBPRD = period/2;

(*ePWM[n]).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

// Counter Compare Submodule Registers
(*ePWM[n]).CMPA.bit.CMPA = 1; // Start with 50% duty (Avoid using CMP = 0)
(*ePWM[n]).CMPB.bit.CMPB = period/2 – 1; // Start with 50% duty (Avoid using CMP = PRD)

// Action Qualifier SubModule Registers//以下三行设定的是EPWM1A 50%占空比输出,没什么问题
(*ePWM[n]).AQCTLA.bit.ZRO = AQ_CLEAR;
(*ePWM[n]).AQCTLA.bit.CAU = AQ_SET;
(*ePWM[n]).AQCTLA.bit.PRD = AQ_CLEAR;
// xB AQ output is inverted by DB for RED on xB output//以下三行设定的是EPWM1B 50%占空比输出,我的问题就在这儿,感觉1B和1A同相位,而不是相位互补
(*ePWM[n]).AQCTLB.bit.PRD = AQ_SET;
(*ePWM[n]).AQCTLB.bit.CBD = AQ_CLEAR;
(*ePWM[n]).AQCTLB.bit.ZRO = AQ_SET;

}

按照代码里的Action Qualifier设置,我觉得波形应该如下图所示

这里是不是有什么问题,或者是我的理解错了

hitaowei:

回复 BIN YAO1:

有(*ePWM[n]).DBCTL.bit.POLSEL = DB_ACTV_HIC;但是那个波形图是根据AQ画出来的,这里的DBCTL中的POLSEL寄存器有影响吗,感觉还是不是互补的

在TI官方给出的电源套件-TIDM-1001 LLC的PWM_HB_LLC_2PHIL_SR.c里面有关于互补PWM的初始化程序,我感觉有问题,向大家请教下,请不吝指教。

我只留下关键代码,其他的一些初始化代码略去

void PWM_HB_LLC_2PHIL_SR(int16 n, int16 m, int16 period)//这里用的是EPWM1A和1B,所以n=1
{

(*ePWM[n]).TBPRD = period/2;

(*ePWM[n]).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

// Counter Compare Submodule Registers
(*ePWM[n]).CMPA.bit.CMPA = 1; // Start with 50% duty (Avoid using CMP = 0)
(*ePWM[n]).CMPB.bit.CMPB = period/2 – 1; // Start with 50% duty (Avoid using CMP = PRD)

// Action Qualifier SubModule Registers//以下三行设定的是EPWM1A 50%占空比输出,没什么问题
(*ePWM[n]).AQCTLA.bit.ZRO = AQ_CLEAR;
(*ePWM[n]).AQCTLA.bit.CAU = AQ_SET;
(*ePWM[n]).AQCTLA.bit.PRD = AQ_CLEAR;
// xB AQ output is inverted by DB for RED on xB output//以下三行设定的是EPWM1B 50%占空比输出,我的问题就在这儿,感觉1B和1A同相位,而不是相位互补
(*ePWM[n]).AQCTLB.bit.PRD = AQ_SET;
(*ePWM[n]).AQCTLB.bit.CBD = AQ_CLEAR;
(*ePWM[n]).AQCTLB.bit.ZRO = AQ_SET;

}

按照代码里的Action Qualifier设置,我觉得波形应该如下图所示

这里是不是有什么问题,或者是我的理解错了

hitaowei:

回复 BIN YAO1:

好的,感谢你,我再去看看文档,做下实验

在TI官方给出的电源套件-TIDM-1001 LLC的PWM_HB_LLC_2PHIL_SR.c里面有关于互补PWM的初始化程序,我感觉有问题,向大家请教下,请不吝指教。

我只留下关键代码,其他的一些初始化代码略去

void PWM_HB_LLC_2PHIL_SR(int16 n, int16 m, int16 period)//这里用的是EPWM1A和1B,所以n=1
{

(*ePWM[n]).TBPRD = period/2;

(*ePWM[n]).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

// Counter Compare Submodule Registers
(*ePWM[n]).CMPA.bit.CMPA = 1; // Start with 50% duty (Avoid using CMP = 0)
(*ePWM[n]).CMPB.bit.CMPB = period/2 – 1; // Start with 50% duty (Avoid using CMP = PRD)

// Action Qualifier SubModule Registers//以下三行设定的是EPWM1A 50%占空比输出,没什么问题
(*ePWM[n]).AQCTLA.bit.ZRO = AQ_CLEAR;
(*ePWM[n]).AQCTLA.bit.CAU = AQ_SET;
(*ePWM[n]).AQCTLA.bit.PRD = AQ_CLEAR;
// xB AQ output is inverted by DB for RED on xB output//以下三行设定的是EPWM1B 50%占空比输出,我的问题就在这儿,感觉1B和1A同相位,而不是相位互补
(*ePWM[n]).AQCTLB.bit.PRD = AQ_SET;
(*ePWM[n]).AQCTLB.bit.CBD = AQ_CLEAR;
(*ePWM[n]).AQCTLB.bit.ZRO = AQ_SET;

}

按照代码里的Action Qualifier设置,我觉得波形应该如下图所示

这里是不是有什么问题,或者是我的理解错了

Weiwei Li2:

回复 BIN YAO1:

 但是手册里还有这样一句话:The waveforms for these typical cases are shown in Figure 14-34. Note that to generate equivalent waveforms to Figure 14-34, configure the action-qualifier submodule to generate the signal as shown for EPWMxA. 所谓的图14-34就是你给出的图形。能不能这样理解,只要设置了死区的POLSEL为ActiveHIC,那么对EPWMxB的设置就会被忽略,系统直接按照EPWMxA的波形进行互斥输出。

在TI官方给出的电源套件-TIDM-1001 LLC的PWM_HB_LLC_2PHIL_SR.c里面有关于互补PWM的初始化程序,我感觉有问题,向大家请教下,请不吝指教。

我只留下关键代码,其他的一些初始化代码略去

void PWM_HB_LLC_2PHIL_SR(int16 n, int16 m, int16 period)//这里用的是EPWM1A和1B,所以n=1
{

(*ePWM[n]).TBPRD = period/2;

(*ePWM[n]).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

// Counter Compare Submodule Registers
(*ePWM[n]).CMPA.bit.CMPA = 1; // Start with 50% duty (Avoid using CMP = 0)
(*ePWM[n]).CMPB.bit.CMPB = period/2 – 1; // Start with 50% duty (Avoid using CMP = PRD)

// Action Qualifier SubModule Registers//以下三行设定的是EPWM1A 50%占空比输出,没什么问题
(*ePWM[n]).AQCTLA.bit.ZRO = AQ_CLEAR;
(*ePWM[n]).AQCTLA.bit.CAU = AQ_SET;
(*ePWM[n]).AQCTLA.bit.PRD = AQ_CLEAR;
// xB AQ output is inverted by DB for RED on xB output//以下三行设定的是EPWM1B 50%占空比输出,我的问题就在这儿,感觉1B和1A同相位,而不是相位互补
(*ePWM[n]).AQCTLB.bit.PRD = AQ_SET;
(*ePWM[n]).AQCTLB.bit.CBD = AQ_CLEAR;
(*ePWM[n]).AQCTLB.bit.ZRO = AQ_SET;

}

按照代码里的Action Qualifier设置,我觉得波形应该如下图所示

这里是不是有什么问题,或者是我的理解错了

BIN YAO1:

回复 Weiwei Li2:

是的,在这个情况下,EPWMxB不用配置也可以的,会直接按照EPWMxA的波形进行互斥输出

在TI官方给出的电源套件-TIDM-1001 LLC的PWM_HB_LLC_2PHIL_SR.c里面有关于互补PWM的初始化程序,我感觉有问题,向大家请教下,请不吝指教。

我只留下关键代码,其他的一些初始化代码略去

void PWM_HB_LLC_2PHIL_SR(int16 n, int16 m, int16 period)//这里用的是EPWM1A和1B,所以n=1
{

(*ePWM[n]).TBPRD = period/2;

(*ePWM[n]).TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;

// Counter Compare Submodule Registers
(*ePWM[n]).CMPA.bit.CMPA = 1; // Start with 50% duty (Avoid using CMP = 0)
(*ePWM[n]).CMPB.bit.CMPB = period/2 – 1; // Start with 50% duty (Avoid using CMP = PRD)

// Action Qualifier SubModule Registers//以下三行设定的是EPWM1A 50%占空比输出,没什么问题
(*ePWM[n]).AQCTLA.bit.ZRO = AQ_CLEAR;
(*ePWM[n]).AQCTLA.bit.CAU = AQ_SET;
(*ePWM[n]).AQCTLA.bit.PRD = AQ_CLEAR;
// xB AQ output is inverted by DB for RED on xB output//以下三行设定的是EPWM1B 50%占空比输出,我的问题就在这儿,感觉1B和1A同相位,而不是相位互补
(*ePWM[n]).AQCTLB.bit.PRD = AQ_SET;
(*ePWM[n]).AQCTLB.bit.CBD = AQ_CLEAR;
(*ePWM[n]).AQCTLB.bit.ZRO = AQ_SET;

}

按照代码里的Action Qualifier设置,我觉得波形应该如下图所示

这里是不是有什么问题,或者是我的理解错了

Jun Zhang10:

回复 BIN YAO1:

重点是最后输出到引脚的信号逻辑关系,epwm文档里面有个信号逻辑图的,SPRUGE9E page 54

赞(0)
未经允许不得转载:TI中文支持网 » 关于互补PWM程序的一点疑问
分享到: 更多 (0)