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.

What is the "atom" operation of EDMA?

Take assumption:

1. EDMA defualt burst size is 16Bytes.

2.EDMA ch0, ch1 event occured simultaneously.

3. ch0's edma config: acnt = 1024Bytes.

Question:

Is ch1 serviced after a delay 16bytes or  1024bytes?

  • use test code and oscillograph. I have found the answer:

    the next EDMA request will be delayed very long time.

    if you set OPT(ch) one dma event transfer all acnt * bcnt,

    only after all acnt * bcnt byte datas are transfered, the next EDMA reqest can just be executed.

     

    Is that true? I need confirm.

  • If both ch0 and ch1 are submitting requests to the same CC Queue, then yes if ch0 request gets in the queue first, then it will finish its entire transfer context (if it is 1024 bytes), prior to ch2 context.

    If you want better interleaving, you would need to submit the 2 channel transfers request on different CC Q's , most devices have 2 or more CC Queues.

    Regards

    Mukul

  • If you want ch0 and ch1 to execute simultaneously, you will need to do as Mukul has stated: assign the channels to different Transfer Controllers.

    If you want ch0 and ch1 to execute exclusively sequentially, with no interleaving, you will need to chain from ch0 to ch1 using Normal Mode for ch0's TCC_MODE.

    If you assign ch0 and ch1 to the same Transfer Controller and trigger them simultaneously, there may be some interleaving of ch0's writes with ch1's reads.

    To understand all the possible combinations and how the Transfer Controllers and Channel Controllers work, your best source of information is the EDMA3 User's Guide.

    Regards,
    RandyP