I suppose you are talking about one single Xfer, (not the entire loopback process). Asynchronous/synchronous/ bulkloop example should not cause any difference here. I suppose the USB interface which you have configured are all the same here, correct? You can only changing "what happens after the endpoint gets the data" (like loop it back or Asynchronous slave fifo). As you are sending only 16 Bytes, so I don't think the DMA buffer size can be the issue. Have you tested with Cypress provided examples? (FX3 SDK example firmware: Bulkloop/slave fifo or any other, you host application control center/Streamer and check). It will be good if you can provide a hardware protocol trace to see what is happening on the USB bus. If we have this trace we can minutely analyze all the timings and the host-device communication. Also, can you try to send lager data (equal to your DMA buffer size and report the observation)?
Good afternoon Nishant,
Thank you for your inquries. Yes. I have tested with the examples provided by cypress.
I will try to get back to you as soon as I have results. However, I have solved the problem with the large amount of time in performing a single bulk out.
Upon endpoint initialization on my PC application, I performed an TimeOut = 16 and XferSize = 16. Afterwards, I reset the endpoints.
I just performed an Endpoint Reset at the method that performs a bulk out. As a result, the PC application measured 50 us - 101 us with a single bulk out. However I will perform a test with larger amounts of data like 16kb.