I have been reading that appnote and playing with the examples, and have read that thread. What I still don't understand is what triggers the DMA transfer in automatic mode. Is it just a call to USBFS_LoadInEP, with NULL in the second parameter? what is the advantage of that over just calling it with a buffer in the second parameters? It doesn't seem very automatic if i have to poll USBFS_GetEPState like in the example and then manually call LoadInEP when it is ready. Especially if I am streaming data from an ADC then I will probably have two buffers in a ping-pong setup so I can't just rely on the pointer passed in the first call to LoadInEP (?)
For ping-pong operation we recommend you to have a look at the project from the link:https://www.element14.com/community/thread/28830/l/psoc-4-pioneer-kit-community-project102-usb-audio-using-the-psoc-5lp . This is an old project might not directly work with the new version of Creator. However the DMA configuration can be adopted to your design.
Basically the DMA with Automatic memory management is suitable for the data transfer in which the buffer is not changing regularly. However you can also use it when buffer is changing to, but just note that it will take some extra time for configuring the DMA for the new source address.You can offload CPU from the data transfer activity.