DMA channel abort/reset/destroy go hung-up

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
TaKu_282151
Level 2
Level 2

Hi,

   

I'm using GPIF-II and Bulk-IN transfer with auto-type DMA, infinite size, like this:

   

CyU3PDmaChannelCreate (&DmaChannel, CY_U3P_DMA_TYPE_AUTO, &DMACfg);

   

CyU3PDmaChannelSetXfer(&DmaChannel, 0);

   

Then, when I stop DMA with CyU3PDmaChannelAbort(), CyU3PDmaChannelReset(), or CyU3PDmaChannelDestroy(),

   

sometimes these APIs hung up, not return from function.

   

(It occurs in SuperSpeed only, I have looked...)

   

 

   

How can I stop DMA safely?

0 Likes
2 Replies
Anonymous
Not applicable

 You can stop DMA safely using 

   

CyU3PDmaChannelReset() and CyU3PDmaChannelDestroy().

   

Also if you want to flush the EP then you need to use CyU3PUsbFlushEp.

   

This is what we have used so far and it is working fine for us.

   

Thanks,

   

sai krishna.

0 Likes
Anonymous
Not applicable

 If it is not working still then please create a Technical support case by attaching your project code.

   

Our guys will look into it.

   

Thanks,

   

sai krishna.

0 Likes