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.

EDMA with C couner bigger than

Hi,

I use EDMA3 to move information from address 0x90000000 to 0x80000000 on EVB for c6670 (EDMA inst =1, Chanal =0  PAR_SET_NR=32). My EDMA works fine, but if I use the C-counter bigger than 32768, the data transfer does not work (though I get the interrupt that the EDMA transfer was finished). 

Has the C counter the maxim value of 32768 (size of short) for C6670?

myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_EN, \
CSL_EDMA3_TCCH_DIS, \
CSL_EDMA3_ITCINT_DIS, \
CSL_EDMA3_TCINT_EN, \
0, \
CSL_EDMA3_TCC_NORMAL, \
CSL_EDMA3_FIFOWIDTH_NONE, \
CSL_EDMA3_STATIC_DIS, \
CSL_EDMA3_SYNC_AB, \
CSL_EDMA3_ADDRMODE_INCR, \
CSL_EDMA3_ADDRMODE_INCR );
myParamSetup.srcAddr = (Uint32)pSourceAdd;
myParamSetup.aCntbCnt = CSL_EDMA3_CNT_MAKE(4,4); 
myParamSetup.dstAddr = ((Uint32)pDestinitionAdd);
myParamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(4,4);
// myParamSetup.linkBcntrld= CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPong,0); //not used
myParamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(16,16); 
myParamSetup.cCnt = 32768;  //C_countr> 32768 does not work

  • Hi Alexander,

    from the EDMA3 User's Guide:

    CCNT is a 16-bit unsigned value that specifies the number of frames in a block. Valid
    values for CCNT are between 1 and 65 535. Therefore, the maximum number of frames
    in a block is 65 535 (64K - 1 frames). A transfer with CCNT equal to 0 is considered
    either a null or dummy transfer.

    Kind regards,

    one and zero