You are here

Data loss in continuous data transfer | Cypress Semiconductor

Data loss in continuous data transfer

Summary: 3 Replies, Latest post by KIKI on 11 Mar 2013 12:13 AM PDT
Verified Answers: 1
Last post
Log in to post new comments.
KIKI's picture
7 posts


I'm now working on a FX3 firmware to implement  continuous data transfer.My FX3 device was interfaced to a FPGA in GPIF slave mode .The data was transfered from the FPGA to FX3 device then to my computer.

In my firmware,I created one thread and one DMA channel.The DMA channel was an AUTO_MANY_TO_ONE channel between  the producer (two GPIF sockets) and consumer(a USB endpoint).The firmware is attached below

In my application,I use the APIs in cyapi.lib to implement data read They are :BeginDataXfer() ,WaitForXfer(), FinishDataXfer()

When I test the whole project ,there is always data loss. I don't know why

KIKI's picture
7 posts

 can't see the attachment,upload again

NIKL's picture
Cypress Employee
283 posts


The data loss could be because the host application isn't fast enough to keep up with the data rate.

Please have a look at the streamer application source code available in the following path after FX3 SDK installation:

C# version :C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.2\application\c_sharp\streamer

CPP version: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.2\application\cpp\streamer

You could also try and use the same streamer application to read data from FX3 and see if there is a data loss occuring.

Add the VID/PID in the source code of streamer to detect the FX3 running your firmware.




KIKI's picture
7 posts


I've checked several times.When I set the data rate to 20MByte/s,there's still data loss.

I set  the burst length to 16 (16KB per burst),and  found that the data lost in a discipline of every 16KB.

I followed the example of  AN75779 .I created  a DMA_TYPE_AUTO_MANY_TO_ONE channel .In this channel , the GPIF switch sockets(threads) via the data counter in GPIF state machine. The data counter was set to 8191(16KB,GPIF data bus is 16bit) as descriped in AN75779. It seemed that  the data loss happened at buffer boundry.Can you give some advices about this phenomenon.



Log in to post new comments.