It looks like there should be a delay between Xferdata calls.
Since USB 3.0 streams the data at higher rate, there is possibility that the device is sending more NAK.
You may capture the USB trace with Wireshark and see the difference.
Thanks for the reply.
Sorry that I am not very clear about USB protocol, what may happen if the device is sending more NAK?
When the host send IN_REQUEST for data from the device, the device responds with the data, if it has. Otherwise, it will send NAK (No data to send).
So.. how can I avoid this problem?
The specific situation is:
We are sending data from FPGA to PC through XferData(*), but the function returns TIMEOUT.
However, on the FPGA side, we received LOW on FLAGA and FLAGB which indicates FIFO full.
Is this possible?
>> We are sending data from FPGA to PC through XferData(*), but the function returns TIMEOUT.
It means the FX3 is not sending the data.
>> However, on the FPGA side, we received LOW on FLAGA and FLAGB which indicates FIFO full.
>> Is this possible?
It means FX3 has the data.
Can you please use default Streamer application provided with the SDK and check?
(C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\application\c_sharp\streamer)
You can also add a counter in the dmacallback and check whether the FX3 has received the data from the FPGA.
Sorry for the very late reply and update. We finally found that if we disable low power mode through CyU3PUsbLPMDisable(), the bulk transfer through SuperSpeed doesn't stuck anymore. Thanks for your support !