- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
can't see the attachment,upload again
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi KIKI
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.
Thanks
Nikhil
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,Nikhil
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 http://www.cypress.com/?rID=62824 .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.
Thanks!
KIKI