I am developing an application for data process based on the GPIF SlaveFifo sample. We divide a big data buf into small packets which the packet size equals the size of the DMA buffer size. we call xferdata() in our middleware to realize the requirement. But the same code gets different results. It runs normally on USB2.0 but fails on USB3.0. The Lasterror is 0XC0000120, UsbdStatusString is "state=STALLED, status=UNKNOWN". Furthermore when I send only one short packet, the result is correct.I had tried some ways to fix this problem, but I hadn't found any clue,Can anybody give me some advices to solve this problem?
You can refer the CYUSB.NET pdf in the FX3 sdk which demonstrate how to queue the transfers. We have very little info here, we need to see what the host is asking and how the device is responding (if you have a hardware protocol trace). Else you can refer Cypress Control center application and the Cypress steamer to develop your application. We have tested these 2 C# application thoroughly for both USB 2.0 and USB 3.0