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.

TMS320F28335: Epwm波形随着频率变高越来越不正常

Part Number: TMS320F28335


当pwm波形频率为2.5Mhz时

当pwm波形频率为10Mhz

当pwm波形频率为25Mhz时,这个时候每个pwm波形都没有形成一个完整的波形。占空比的变化是使用DMA不断传输值来改变的,DMA触发信号是SOC信号,时钟都没有分频。

我感觉可能是随着pwm频率的增大,产生的SOC信号速度也变快,DMA触发的速度也变快,导致一个占空比刚传输进pwm后,还没有形成一个完整的波形,下一个占空比又来了,才导致这种结果。所以该怎么办呢,降低DMA传输速度吗。

这是epwm的配置代码

void Epwm1_Init(PRD)
{
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
    SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1;  // 开启ePWM1外设时钟
    EDIS;

    InitEPwm1Gpio();




    EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;//禁止同步信号输出



    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁止装载相位
    EPwm1Regs.TBPHS.half.TBPHS = 0;//设置相位为0
    EPwm1Regs.TBCTR=0X0000;//设置计数器为0
    EPwm1Regs.TBPRD=PRD;//由用户传入
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//选择向上计数

    EPwm1Regs.TBCTL.bit.HSPCLKDIV=TB_DIV1;//不分频
    EPwm1Regs.TBCTL.bit.CLKDIV=TB_DIV1;//不分频


    EPwm1Regs.CMPA.half.CMPA=30;//分配比较值
    EPwm1Regs.CMPA.half.CMPAHR =0;


    EPwm1Regs.AQCTLA.bit.CAU=2;         //向上记数时,时基计数器与CMPA相等时ePWMA输出高电平
    EPwm1Regs.AQCTLA.bit.PRD=1;



    EPwm1Regs.ETSEL.bit.SOCAEN=1;
    EPwm1Regs.ETSEL.bit.SOCASEL=2;      //当CTR=PRD时触发soca信号
    EPwm1Regs.ETPS.bit.SOCAPRD=1;
    EPwm1Regs.ETFLG.bit.SOCA=1;






    EALLOW;
    EPwm1Regs.HRCNFG.all = 0x0;
    EPwm1Regs.HRCNFG.bit.HRLOAD  = 1;       //在TBCTR=TBPRD时加载
    EPwm1Regs.HRCNFG.bit.CTLMODE = 0;       //占空比控制模式
    EPwm1Regs.HRCNFG.bit.EDGMODE = 2;      // 下降沿控制
    EDIS;

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




}