1 of 1 people found this helpful
When CyU3PUsbStart() API is called, two internal DMA channels are setup; CPU PROD->EP0 IN and EP0 OUT-> CPU CONS. Since, the same socket cannot be used in two DMA channels (except for CPU sockets), you cannot create a DMA channel from EP0 to PIB socket.
You can create a DMA channel from BULK IN EP to PIB socket 0. You can create another DMA channel from CPU Producer to PIB socket 1. You need to use CyU3PUsbGetEP0Data() API to fetch the data sent on EP0 OUT into a buffer. Then, you need to copy this buffer content onto a DMA buffer corresponding to the DMA chanel : CPU PROD->PIB socket 1