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.

C6657 DMA问题



调用DMA函数如下

EDMA3CCPaRAMEntry Edma3Param[4];
    uint32_t Edma3Param_chNum[4];
    uint32_t Edma3Param_tccNum[4];
    uint32_t Edma3Param_evtQNum[4];
    void Edma3Transfer_2(uint8_t num,uint32_t srcaddr,uint32_t dstaddr)
    {
        Edma3Param_chNum[num]   = num;
        Edma3Param_tccNum[num]  = num;
        Edma3Param_evtQNum[num] = num;

        Edma3Param[num].srcAddr  = srcaddr;
        Edma3Param[num].destAddr = dstaddr;
        Edma3Param[num].aCnt     = 16384;
        Edma3Param[num].bCnt     = 16;
        Edma3Param[num].cCnt     = 1;
        Edma3Param[num].srcBIdx  = 16384;
        Edma3Param[num].destBIdx = 16384;
        Edma3Param[num].srcCIdx  = 0;
        Edma3Param[num].destCIdx = 0;
        Edma3Param[num].linkAddr = 0xFFFF;
        EDMA3Init(0x02740000,Edma3Param_evtQNum[num]);
        EDMA3RequestChannel(0x02740000,EDMA3_CHANNEL_TYPE_DMA,Edma3Param_chNum[num],Edma3Param_tccNum[num],Edma3Param_evtQNum[num]);
        EDMA3SetPaRAM(0x02740000,Edma3Param_chNum[num],&Edma3Param[num]);
        EDMA3EnableTransfer(0x02740000,Edma3Param_chNum[num],EDMA3_TRIG_MODE_MANUAL);
    }


主函数中调用如下
HW_WR_REG32(0x02742070,0x00000008); //在每次传输前,手动清下TC标志位
    Edma3Transfer_2(3,0x80000000,0x10840000);//进行数据传输
    while((HW_RD_REG32(0x02742068) & 0x00000008) == 0x00000000);//等待数据传输完成

请问各位TI工程师,我在调试时DMA只传输了4096个数据,也就是只传输了一帧,这是为什么?