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.

  • TI Thinks Resolved

RTOS/TMS320C6657: How to stop an EDMA3 memory to memory transfer?

Expert 2835 points

Part Number: TMS320C6657

Tool/software: TI-RTOS

Hi Steven Ji,

We are using EMIF16 to internal memory transfer with EDMA3.  It's audio data packets.

Sometime, the transfer gets out of sync.  To get back in sync, I need to stop last EDMA3 transfer. Then resubmit another transfer.

I use the following to start another transfer:

CSL_edma3HwChannelControl(EMIF16hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL);

Thank you.

Steve

  • The team is notified. They will post their feedback directly here.

    BR
    Tsvetolin Shulev
  • Expert 2835 points

    In reply to Cvetolin Shulev-XID:

    Hi Cvetolin,

    Also, I like to know how to setup the interrupt for EDMA3  memory to memory transfer completion.

    Thanks.

    Steve

  • In reply to SGQ:

    Hi,

    EDMA transfer once is submitted, you can't stop it. If the EDMA is out of the sync for some reason, you may re-do a transfer from the same source address to the same destination to overwrite the destination buffer again with:

    CSL_edma3HwChannelControl(EMIF16hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL);

    How to setup transfer completion interrupt, you may look at some materials:
    processors.wiki.ti.com/.../TTO_EDMA3_LLD.pdf
    processors.wiki.ti.com/.../Configuring_Interrupts_on_Keystone_Devices

    Regards, Eric
  • Expert 2835 points

    In reply to lding:

    Hi Eric,
    Thanks for the quick reply.
    Another question, How can I setup a EDMA3 completion interrupt?
    Thank you.
    Regards,
    Steve
  • In reply to SGQ:

    Hi,

    Most of the EDMA examples used the polling IPR bit for transfer completion. For the EDMA completion interrupt, you may looked at the Hyperlink example for C6657, under pdk_c665x_2_0_x\packages\ti\drv\hyplnk, search for hyplnk_edma_cb_isr1() to see how that was done.

    Regards, Eric
  • Expert 2835 points

    In reply to lding:

    Hi Eric,
    We are currently using pdk_C6657_1_1_2_6. It doesn't have hyplnk_edma_cb_isr1().
    Thanks.
    Steve
  • In reply to SGQ:

    Hi,

    Pdk 1.1.2.6 is part of mcsdk 2.1.2.6 and was already obsolete. You can refer to the C6657 Processor SDK RTOS code, this is just showing an example of EDMA interrupt callback. The download link is: software-dl.ti.com/.../index_FDS.html

    Another way is you can refer to the link processors.wiki.ti.com/.../Configuring_Interrupts_on_Keystone_Devices

    Regards, Eric

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.