Dear everyone:
这里预期生成一个f=100khz,T=10us的sin函数波形,一个T用25个Epwm波形来表示,经过低通滤波后产生波形,经过计算Epwm波形设置f=2.5Mhz,T=0.4us。dsp时钟不分频,向上计数,得出prd为60。设置完成后显示波形,但是示波器上生成的波形周期却不对了,多了7us。我想是不是因为我在DMA中断里操作源地址指针产生的影响。
占空比数据
volatile Uint16 DMABuf1[25]={30, 38, 45, 50, 54, 56, 57, 56, 54, 50, 45, 38, 30, 22, 15, 10, 6, 4, 3, 4, 6, 10, 15, 22,30};
volatile Uint16 *BufAdd =DMABuf1;
DMA中断
interrupt void local_DINTCH1_ISR(void) // DMA Channel 1
{
i++;
if(i<24)
BufAdd++;
else
{
BufAdd = DMABuf1;
i=-1;
}
DMACH1AddrConfig(CMPA,BufAdd);
EPwm1Regs.ETCLR.bit.SOCA = 1;
// DmaRegs.CH1.CONTROL.bit.HALT=1;
DmaRegs.CH1.CONTROL.bit.RUN=1;
PieCtrlRegs.PIEACK.bit.ACK7 = 1;
}

9.22补充:
在查看还未滤波的方波信号时发现一个周期有竟然有50个左右的方波信号产生,再仔细查看占空比发现要产生两个波形才会改变一次占空比。

于是尝试降低pwm波形的频率后发现一个周期就会产生25个波形了,所以现在的问题定位到dma传输的速度没有跟上pwm波形产生的速度,我觉得可能是dma中断里造成的影响,但不知道如何更改。
