I tried modifying the SuperSpeed Design Examples V1.2.1 CollectData program and changing:
// Start with modest buffering 8 x 8 x 16KB = 1MB
// Can go up to 256 x 64 x 16KB = 256MB but this will mask some effects
#define PACKETS_PER_TRANSFER 8 // 256
#define NUM_TRANSFER_PER_TRANSACTION 8 // 64
#define PACKETS_PER_TRANSFER 256 // 256 * 64 * 16KB = 256MB
#define NUM_TRANSFER_PER_TRANSACTION 64
The FX3 is continually streaming ~200MB/s of data. The above change worked well on my computer, but on another computer it silently dropped packets after about 512MB of received data.
What are good settings for the above two values that should work on any computer for a 200MB/s transfer rate? Also, is the CollectData example source code missing something that would show dropped packet errors?
So, according to my understanding if the code works well on your computer then there must not be any problem with the code. Can you please show where the failure is seen?
The CollectData program doesn't generate any errors, so that's why I feel a bit stuck. The only way I noticed a problem was by analyzing the logged file. The file should be a continuous 16-bit counter, but after about 512MB of data there are some gaps in the counter in the file. The Windows 10 USB driver version on my computer (where everything is fine) is the same as on the 2nd computer (where there are gaps).
Is there some error condition that CollectData is not checking for? Or does the Cypress USB library just not support such large buffers?
P.S. The CollectData source code seems to be mirrored on github here:https://github.com/haizzus/SuperSpeed-Design-Examples-V1.2/blob/master/Visual%20Studio%20Projects/Co... ) if you need the source code.
Can you share your modified code with me, I will check on my side.