当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;
}

2.5MHz
10MHz
