主题中讨论的其他器件:C2000WARE
大家好,我正在尝试使 DMA 正常工作,首先我要尝试从一个阵列传输到另一个阵列。 我可以看到 SRC_ADDR_ACTIVE 和 DST_ADDR_ACTIVE 递增、但我看不到这些值发生了变化。
如果以下代码中有任何问题、有人可以帮助我吗
下面是代码
初始化:
===========================
DMASSource =(volatile UINT16 *) dutyCyclPercentSine;
DMADest =(易失性 UINT16 *)结果;
EALLOW;
DMACTRL.bit.hardreset = 1;
_asm (" NOP");
DmaRegs.DEBUGCTRL.bit.FREE = 1;
DmaRegs.CH1.SRC_ADDR_SHADDASH =(uint32) DMASSOURCE;
DmaRegs.CH1.SRC_beg_ADDR_SHADDASH =(uint32) DMASource;
DmaRegs.CH1.dst_ADDR_SHADDow =(uint32) DMADest;
DmaRegs.CH1.dst_beg_ADDR_SHADD=(uint32) DMADest;
//通道1
DmaRegs.ch1.burse_size.all = 0;
DmaRegs.CH1.SRC_BURST_STEP = 1;
DmaRegs.CH1.dst_burst_step = 1;
DMARegs.CH1.TRANSF_SIZE = 9;
DMARegs.CH1.SRC_TRANSFER_STEP = 1;
DmaRegs.CH1.dst_transfer_step = 1;
DmaClaSrcSelRegs.DMACHSRCSEL1.bit.CH1 = 0;
DMARegs.CH1.MODE.BIT.PERINTSEL = 1;
DMaRegs.CH1.MODE.BIT.PERINTE = 1;
DMaRegs.CH1.MODE.BIT.CHINTE = 0;
DmaRegs.CH1.MODE.bit.OneShot = 0;
DMaRegs.CH1.MODE.BIT.Continous = 0;
DMARegs.CH1.MODE.BIT.DATASIZE = 0;
DMaRegs.CH1.MODE.BIT.CHINTMODE = 0;
DMaRegs.CH1.MODE.BIT.CHINTE = 0;
CpuSysRegs.SECMSEL.bit.PF2SEL = 1;
CpuSysRegs.SECMSEL.bit.PF1SEL = 1;
DmaRegs.ch1.control.bit.run = 1;
EDIS;
===========================
在 main.c 中
INT 计数= 0;
while (1)
{
count++;
if (count == 0xFFFF)
{
EALLOW;
DmaRegs.ch1.control.bit.PERINTFRC = 1;
// EPwm1Regs.CMPA.bit.CMPA = 1500;
EDIS;
计数= 0;
// RunSPWM();
}
}