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.

DM6446 - EDMA3 - 3d Transfer with DstElementIndex is negative does not work

 Hi.

I am using ACPY3 libarry to program matrix swap (of 16 bit words) using 3d Transfer.

The code looks like:

ACPY3_activate(Channel)

...

params2D2D.transferType   = ACPY3_2D2D;
params2D2D.elementSize  = 2;
params2D2D.numElements  = 100; // Amount of words per line
params2D2D.numFrames      = 100;
params2D2D.srcElementIndex = 2;
params2D2D.dstElementIndex = (-1)*2;
params2D2D.srcFrameIndex     = 2*100;
params2D2D.dstFrameIndex     = 2*100;
params2D2D.waitId   = 0;
params2D2D.srcAddr           = Src;
params2D2D.dstAddr           = (void*)((XDAS_UInt32)Dest+((100-1)*2));

ACPY3_configure(Channel, &params2D2D, 0);
ACPY3_start(Channel);

Unfotunately, I am observing thatony first frame is transferred.

In all examples the dstElementIndex is positive.

May be the problem is in negative dstElementIndex?

Thanks a lot for all suggestions! 

  • I do not believe this is a negative index issue; otherwise you would not get the first frame, which is made up of 100 elements of index -2. 

    I believe the issue may be that you appear to wanting to do 3D3D transfers (defining num of bytes in element, num of elements and num of frames) and I believe ACPY3 (which I am not too familiar with) only supports up to 2D2D transfers.  Hence ever frame marks the end of a 2D2D transfer and this probrably explains why you are only getting one frame.  Maybe someone more familiar with ACPY3 can comment on how you can setup automated back-to-back frame transfers (e.g. linked lists...) using ACPY3; of course you can always follow the non-automated approach and use a loop to transfer one frame (2D2D trasnfer) at a time....