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.

EDMA3 linked transfer

Hello,

I am using linked transfer in EDMA3. The datasheet says that when BCNT==1 && CCNT==1, the last TR(transfer request) is submitted and the param set should be updated with the linked param set. However, in my case, the last TR is submitted and param set is updated when BCNT==0 and CCNT==1, resulting in an extra TR. 

Does anyone know why my BCNT count decrements till 0 and later the update occurs?

  • Welcome to the TI E2E forum. I hope you will find many good answers here and in the TI.com documents and in the TI Wiki Pages (for processor issues). Be sure to search those for helpful information and to browse for the questions others may have asked on similar topics (e2e.ti.com). Please read all the links below my signature.

    Please provide DSP part used. Thank you for your patience.

  • Hi,

    I use the OMAP138 DSP+ARM processor, TMS320C674x megamodule DSP

    thanks in advance
  • Hi,

    I think, for the firs transfer, you'll need to have transfer completion chaining enabled (TCCHEN) and see Channel Option Parameters (OPT field) of the PaRAM set for details in the EDMA UG. Also, note that you would require this on the 2nd transfer which will let you know that the chain is complete, not on the first transfer in the chain.

    The EDMA UG should give you all the information needed to be able to program various EDMA setups, along with the example code which you can try as referred below:

    http://www.ti.com/lit/ug/sprugp9b/sprugp9b.pdf

    Kindly refer section 2.3.7 for details on linking transfers from the above user guide.

    Thanks & regards,

    Sivaraj K

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.

    -------------------------------------------------------------------------------------------------------

  • Hi,

    I use manual triggering and hence not enabled TCCHEN but TCINTEN.
    These are my param set values:

    Source Address Mode = Increment
    Destination Address Mode= Increment
    Transfer Sychronization Dimension = A Synchronized
    Param Set = not static
    FWID = 0
    TCCMODE= Normal
    TCC = 3
    TCINTEN = Enable
    ITCINTEN = enable
    TCCHEN = Disable
    ITCCHEN= Disable
    Source address = A
    Destination address = B
    ACNT = Sourcedata.size
    BCNT = 8
    CCNT =2
    BCNTRLD = 8
    SRCBIDX=0
    DSTBIDX=Sourcedata.size
    SRCCIDX=0
    DSTCIDX=Sourcedata.size
    Link address = C

    I have set the linked param set with similar values. My question is, the link update should occur once BCNT==1 and CCNT==1, but in my case, the link update occurs when BCNT==0 and CCNT==1, hence an extra TR is submitted. Why is this unusual behaviour in my case?


    Thanks
  • Hi Irin,
    Moved this thread over OMAP-L1x device forum.

    Thank you.
  • Hi,

    Thanks for your update.

    After link update, the EDMA3 linking reloads the current channel PaRAM set with the linked PaRAM set and in your case, do you see the new PaRAM set  associated with a channel is a NULL set ? Usually, upon termination, the link would be associated to a NULL set and any future events on the same channel would be ignored by the EDMA3CC. I guess, this should also happened in your case which would have caused an unusual behaviour. I mean, the expected link termination wouldn't have occured in your case due to which an extra TR is submitted and there results an unusual behaviour. Kindly validate the same.

    Please ensure the set interrupts are cleared in interrupt pending register (IPR/IPRH) before exiting the transfer completion ISR.  

    Kindly check the transfer completion code returns from the PaRAM set assoicated with the requested channel is the same which has been set for DMA Region Access registers (DRAE/DRAEH) for the case of shadow region completion interrupt.

    Also Please check whether TCINTEN =1 is enabled in the OPT of the associated PaRAM set  as well appropriate IER/IERH's are enabled in the EDMA CC and the corresponding interrupts are enabled in the device interupt controller.

    Thanks & regards,

    Sivaraj K

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question.

    -------------------------------------------------------------------------------------------------------

  • Hi,

    Thanks for the reply. Yes, you are right. Upon termination, the link should be associated to a NULL set. But, in my case, the transfer is not terminated and the param set is updated to the linked param set( which is not NULL set). I can see the update only after BCNT==0 && CCNT==1. Ideally, the link update should occcur after BCNT==1 && CCNT==1 which is not happening in my case.

    I clear the set IPR registers using ICR before every transfer (I now use manual triggering).

    I do not work with the shadow registers but the global registers, so I have not  done anything with the DRAE.

    TCINTEN=1 always in the OPT register. IER is also enabled.

    Even now, EDMA3CC submits an extra TR (transfer request). Do you know what is still wrong in my implementation?

    Thank you.
    Irin