大家好,我遇到的问题是:使用EDMA3,对128*2k点的数据进行搬移,同时进行转置,用AB型传输,源地址与目标地址都在DDR3中。
但是测试结果显示,只有部分数据进行了转置。
关于EDMA3的配置如下:
uint32_t edma_ch_num = 1;
uint32_t edma_tcc_num = 1;
uint32_t edma_evtq_num = 0;
uint32_t aCnt = 4;
uint32_t bCnt = 128;
uint32_t cCnt = 2048;
EDMA3Init(CSL_EDMACC_1_REGS, 0);
EDMA3RequestChannel(CSL_EDMACC_1_REGS, EDMA3_CHANNEL_TYPE_DMA, edma_ch_num, edma_tcc_num, edma_evtq_num);
edmaParam.opt = 0x00900004u;
edmaParam.srcAddr = (uint32_t) (&Data);
edmaParam.destAddr = (uint32_t) (&Data_Twi);
edmaParam.aCnt = aCnt;
edmaParam.bCnt = bCnt;
edmaParam.cCnt = cCnt;
edmaParam.srcBIdx = aCnt; //源地址 二维 aCnt
edmaParam.srcCIdx = aCnt*bCnt; //源地址 三维 aCnt*bCnt
edmaParam.destBIdx = aCnt*cCnt; //目的地址 二维 aCnt*cCnt
edmaParam.destCIdx = aCnt; //目的地址 三维 aCnt
edmaParam.linkAddr = 0xFFFFu;
edmaParam.bCntReload = 0u;
EDMA3SetPaRAM(CSL_EDMACC_1_REGS, edma_ch_num, &edmaParam);
for (count = 0; count < 2048; count++)
{
Result = EDMA3EnableTransfer(CSL_EDMACC_1_REGS, 1, EDMA3_TRIG_MODE_MANUAL);
while (Result != 1) ;
}