Is there any way to control the USB data transfer consume time for real time application using FX2 USB controller? | Cypress Semiconductor
Is there any way to control the USB data transfer consume time for real time application using FX2 USB controller?
We have a project need to use USB controller to realize real time data transfer. The user application need to transfer 10K byte data to hareware every 5ms, and the transfer needs to complete in 1~2ms every time. Can it realize using CY7C68013A-56LTXC?
Our Plan refers the AN61345. USB controller using CY7C68013A-56LTXC, GPIF clock frequency is set to 20MHz, uses a 16-bit bandwidth.The work mode is Slave FIFO mode, GPIF connection is Spartan 6 FPGA. The driver is cyusb3.inf&cyusb3.sys and the API is CyAPI.h&CyAPI.lib, the function used to tranfer data is USBDevice->BulkOutEndPt->XferData(buf, length), the last two parameter use default value.
The user application on Windows XP write 10KByte data to USB pipe 2 every 10ms, and tests 10,000 times. The following is the time required to complete the transfer for each test:
95% less than 1ms
about 4% 1ms~ 3ms
less 1% longer than 3ms, the maximum time is 10+ms, or 20+ms, or 30+ms...
The test result indicates that to complete the 10KByte data write transfer, the minimum time is 470us, the ransfer speed is almost 20MB/s(the GPIF clock is 20MHz, 16bits, this is almost the maximum speed of CY7C68013A). But also there is the maximum time need is 10ms ~30ms, the time is too long.
Is there any to control the 10K byte data transfer complete in 2ms using FX2 USB controller?