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.

EDMA3 进行数据转置时,只有部分数据成功转置。



大家好,我遇到的问题是:使用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) ;
        }