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.

TDA3LA: Which events can abort an ongoing EDMA3 transfer and/or how to confirm successful transfer properly?

Part Number: TDA3LA

Dear Experts,

could You please help with a clarification on EDMA3 transfer completion indication, which is manually triggered and used in a non-interrupt fashion --> polling.

Basically the question is, whether it is enough to use the "EDMA3_DRV_checkAndClearTcc()" function as confirmation, that EDMA3 transfer was successful?

Maybe there are other events, interrupts, arbitrations, which could abort an on-going EDMA3 transfer impacting IPRH bit and thus it seems, that transfer is complete, while actually there was an error or similar ...

I assume enabling and handling the error interrupts and error status registers mentioned in the KeyStone Architecture EDMA3 Controller Users Guide in addition to above "EDMA3_DRV_checkAndClearTcc()" function should be enough or are there any other conditions/situations to consider?

Many thanks and best regards,

Gregor

  • Hi,

    Calling the EDMA3_DRV_waitAndClearTcc should be enough.

    IPR/IPRH sets the transfer completion event.
    For every trnasfer there will be one tcc associated and you need to call the above api with the corresponding tcc.
    In the IPR/IPRH registers, the api checks if the bit number "tcc" is set and returns the status.

    For the error interrupts the status is set in registers EMR/EMRH, QMER and CCERR.

    Please refer the edma polled example for referance.
    <edma3 lld install dir>\examples\edma3_driver\src\dma_poll_test.c

    Regards,
    Prasad

  • Hi Prasad,

    thank You for Your reply. If I understand You correctly, then just using either

    "EDMA3_DRV_waitAndClearTcc" (blocking) or

    "EDMA3_DRV_checkAndClearTcc" (non-blocking) in a loop

    is enough to make sure, that a transfer has completed successfully.

    So it is even not necessary to check/monitor the error status registers, correct?

    Thanks and best regards,

    Gregor

  • hi Gregor,

    Yes, any of the above methods is sufficient.

    Regards,
    Prasad

  • Hi,

    I haven't heard back from you, I'm assuming you were able to resolve your issue.
    If not, just post a reply below (or create a new thread if the thread has locked due to time-out).

    Regards,
    Rishabh