Hi, I am new with DM3730 EDMA, now I have some trouble when it receives data from McBSP.
My configuration is like the following:
//basic definition
#define ONE_FRAME_SYM_NUM (UINT32)1250
#define PER_EDMA_PARAM_CHANNEL1_BASEADDR (0x01C04020)
#define PER_EDMA_PARAM_CHANNEL1_LINK_BASEADDR (0x01C04000+(0x20*73))
typedef struct T_PER_EDMAReg2_Tag
{
volatile unsigned int TPCC_OPT;
volatile unsigned int TPCC_SRC;
volatile unsigned int TPCC_ABCNT;
volatile unsigned int TPCC_DST;
volatile unsigned int TPCC_BIDX;
volatile unsigned int TPCC_LNK;
volatile unsigned int TPCC_CIDX;
volatile unsigned int TPCC_CCNT;
}T_PER_EDMAReg2;
//progarmme
T_PER_EDMAReg2 *gptPEREDMAReg2CH1 = (T_PER_EDMAReg2 *)PER_EDMA_PARAM_CHANNEL1_BASEADDR;
T_PER_EDMAReg2 *gptEDMALinkToCH1 = (T_PER_EDMAReg2 *)PER_EDMA_PARAM_CHANNEL1_LINK_BASEADDR;
gptPEREDMAReg2CH1 ->TPCC_OPT = 0x00001200;
gptPEREDMAReg2CH1 ->TPCC_SRC = (UINT32)MCBSP_DRR_ADDR(1);//DRR address of McBSP1
gptPEREDMAReg2CH1 ->TPCC_ABCNT = (UINT32)(0x00000004 | (UINT32)(ONE_FRAME_SYM_NUM <<16));
gptPEREDMAReg2CH1 ->TPCC_DST = (UINT32)&IQBuff[0];//a buffer,the address is 0x800C1DD0
gptPEREDMAReg2CH1 ->TPCC_BIDX = 0x00040000;
gptPEREDMAReg2CH1 ->TPCC_LNK = ((UINT32)(ONE_FRAME_SYM_NUM <<16) | 0x4E40);
gptPEREDMAReg2CH1 ->TPCC_CIDX = 0x0;
gptPEREDMAReg2CH1 ->TPCC_CCNT = 0x1;
gptEDMALinkToCH1 ->TPCC_OPT = 0x00201200;
gptEDMALinkToCH1 ->TPCC_SRC = (UINT32)MCBSP_DRR_ADDR(1);
gptEDMALinkToCH1 ->TPCC_ABCNT = (UINT32)(0x00000004 | (UINT32)(ONE_FRAME_SYM_NUM <<16));
gptEDMALinkToCH1 ->TPCC_DST = (UINT32)&IQBuff[0];
gptEDMALinkToCH1 ->TPCC_BIDX = 0x00040000;
gptEDMALinkToCH1 ->TPCC_LNK = ((UINT32)(ONE_FRAME_SYM_NUM << 16) | 0x4E40);
gptEDMALinkToCH1 ->TPCC_CIDX = 0x0;
gptEDMALinkToCH1 ->TPCC_CCNT = 0x1;
After the programme is executed, check the memory of IQBuff,
For the first time, EDMA transfers data 0x00000000~0x0000009D from DRR of McBSP;
For the second time, EDMA transfers data 0x00000001(highlight)~0x0000009C from DRR of McBSP;
Now, I want the data which EDMA transfers the second time to overwrite the data which EDMA transfers the first time ,what should I do?
Thanks