请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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 寄存器的值。