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: How to correctly configure DMA

Part Number: TMS320F28335

Dear everyone:

My goal is to trigger DMA to transfer one data at a time and, on the next trigger, transfer the next data. However, I have encountered a problem.

The SOCA signal generated by EPWM can continuously occur, and DMA interrupts can also occur. I have also configured the  transfer step for DMA. However, the DMA data transfer only transfers the first data from the source,I feel that after transferring one data, the source address is not incremented, so it keeps transferring the first data. But I have set the step, which doesn't make sense.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
volatile Uint16 DMABuf1[25]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25};
volatile Uint16 DMABuf2[1];
DMACH1AddrConfig(DMABuf2,DMABuf1);
DMACH1BurstConfig(0,0,0);
DMACH1TransferConfig(0,1,0);
DMACH1WrapConfig(25,0,1,0);
DMACH1ModeConfig(0x12,PERINT_ENABLE,ONESHOT_ENABLE,CONT_ENABLE,SYNC_DISABLE,SYNC_SRC,OVRFLOW_DISABLE,SIXTEEN_BIT,CHINT_END,CHINT_ENABLE);
interrupt void local_DINTCH1_ISR(void) // DMA Channel 1
{
i++;
EPwm1Regs.ETCLR.bit.SOCA=1;
PieCtrlRegs.PIEACK.bit.ACK7 = 1;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX