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.

[参考译文] TMS320F28069:正确的 PWM 输出例程

Guru**** 2589265 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/907780/tms320f28069-correct-pwm-output-routine

器件型号:TMS320F28069

您好!

          我希望在 Pendamic 和 HPE 的这段时间内、每个人都能安全、表现良好、在接下来的几天里、一切都将会很好。

我在配置 PWM 例程时遇到了一些两难问题。

//
//包含的文件
//
#include "F2806x_Device.h"// F2806x 头文件
#include "F2806x_examples.h" // F2806x 示例头文件
#include "F2806X_ePWM_defines.h"//初始化的有用定义

//
函数原型
//
void HRPWM1_Config (UINT16);
void HRPWM2_Config (UINT16);




//
Main
//
void main (void)
{

InitSysCtrl();

InitEPwm1Gpio();
InitEPwm2Gpio();
InitEPwm3Gpio();
InitEPwm4Gpio();

Dint;

InitPieCtrl();

IER = 0x0000;
IFR = 0x0000;

InitPieVectTable();


EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
EDIS;

EPwm1Regs.TBPRD = 2000;//周期= 2´600 TBCLK 计数

//EPwm1Regs.TBPHS = 0;//将相位寄存器设置为零
EPwm1Regs.TBCTR = 0;//清除 TB 计数器
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//对称
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// TBCLK = SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwm1Regs.AQCTLB.bit.CBD = AQ_SET;
//运行时间
//==== ===== ===== ===== ====
//初始化时间
//==== ===== ===== ===== ====
EPwm2Regs.TBPRD = 2000;//周期= 2´600 TBCLK 计数

// EPwm2Regs.TBPHS = 0;//将相位寄存器设置为零
EPwm2Regs.TBCTR = 0;//清除 TB 计数器
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//对称
EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// TBCLK = SYSCLKOUT
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm2Regs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwm2Regs.AQCTLB.bit.CBD = AQ_SET;

EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
EDIS;


EPwm1Regs.CMPA.half.CMPA = 100;//调整输出 EPWM1A 的占空比
EPwm1Regs.CMPB = 0;//调整输出 EPWM1B 的占空比

EPwm2Regs.CMPA.half.CMPA = 100;//调整输出 EPWM1A 的占空比
EPwm2Regs.CMPB = 0;//调整输出 EPWM1B 的占空比

while (1)
{

}

}

在上述代码中、我已将频率设置为22kHz、但在将变量设置为输出时有点困惑。

EPwm1Regs.CMPA.half.CMPA = 0;//调整输出 EPWM1A 的占空比
EPwm1Regs.CMPB = 0;//调整输出 EPWM1B 的占空比

EPwm2Regs.CMPA.half.CMPA = 0;//调整输出 EPWM1A 的占空比
EPwm2Regs.CMPB = 0;//调整输出 EPWM1B 的占空比 
情况一

A--高侧 MOSFET (CMPA.half.CMPA = 100)->|****** |<---- 高侧 MOSFET (CMPA.half.CMPA = 0----- C
| |
| IR2110. |
| MOSFET |
| |
D--LowSide MOSFET (CMPB = 0)--- >|******** |<-- 低侧 MOSFET (CMPB = 100)-------------- B



情况2

A--高侧 MOSFET (CMPA.half.CMPA = 0)--- ||**** |<-- 高侧 MOSFET (CMPA.half.CMPA = 100--- C
| |
| IR2110. |
| MOSFET |
| |
D--LowSide MOSFET (CMPB = 100)--- >|******** |<-- 低侧 MOSFET (CMPB = 0)-------------- B

如上所示、H 桥在反向和正向工作的两种情况、因此我需要知道如何正确分配 EPwm1Reg 和 EPwm2Regs 寄存器的值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、不清楚您遇到的困难是什么... 如果您希望调整可使用 TBPRD 完成的周期。  

    如果您想调整占空比、可以调整 CMPA 和 CMPB。 它们的操作是可配置的、并且针对计数器方向以及每个 PWM 通道(ePWMxA 和 ePWMxB)是不同的。

    如果您在动态更改值、请务必使用影子加载。

    Regadrs、
    Cody  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实际上、我想更改 PWM1 CMPA 输出和 CMPB 输出的相位、使它们彼此同相运行。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果你保持一个零的恒定相位、你可以使用 TBCLKSYNC 来同步所有 PWM。 如果您需要一个可变相位或零相位、请按照 PWM 章节的时基子模块部分所述启用同步链。

    此致、
    Cody