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.

DM365 ACPY3_start does not complete

Hello,

I am trying to use ACPY3 and DMAN3 to do some DMA transfers.  However, the ACPY3_start() function seems to be hanging and I cannot figure out why.  As far as I can tell it is properly setup.

Here is a portion of the initializations code:

 

/* Initialize ACPY3 */

dmaTab.numTransfers = 1;

dmaTab.numWaits = 1;

dmaTab.priority = IDMA3_PRIORITY_MEDIUM;

dmaTab.protocol = &ACPY3_PROTOCOL;

dmaTab.persistent = FALSE;


DMAN3_init();

ACPY3_init();


dmaStatus = DMAN3_createChannels(0, &dmaTab, 1);

memHandle = dmaTab.handle;


if (dmaStatus == DMAN3_SOK) {

   ACPY3_activate(memHandle);

   printf( "ACPY3 activated. \n" );

} else {

   printf( "Channel create failed. Status: %d\n", dmaStatus);

}


acpyPaRam.transferType = ACPY3_1D1D;

acpyPaRam.numElements = 1;

acpyPaRam.numFrames = 1;

acpyPaRam.waitId = 1;


 

And later I define the function Dcpy:

 

void Dcpy(void * destination, void * source, int length) {

/* Wait for previous copy to finish. */

if ( ACPY3_complete(memHandle) == 0 )

ACPY3_wait(memHandle);

printf( "Wait Complete.\n" ); // For debug


/* Setup next DMA copy */

acpyPaRam.srcAddr = source;

acpyPaRam.dstAddr = destination;

acpyPaRam.elementSize = length;


/* Configure ACPY3 */

ACPY3_configure(memHandle, &acpyPaRam, 0);

printf( "ACPY3 Configured.\n" ); // For debug


/* Start ACPY3 memory transfer */

ACPY3_start(memHandle);

printf( "ACPY3 Started.\n" ); // For debug

}

 

 

Any help as to why the transfer will not start?

 

-Nate

 

EDIT: I realized this should be in a different forum... I reposted it here.