we encounter bulk transfer problems with the CYUSB3.0 when performed repeatedly for a long period of time - any help or input on this is very much appreciated.
Background: We want to use bulk in endpoint to do continuous data transfer. in our test stage,
we use slave fifo in the device, and software on pc is based on Cyapi.lib .
the code is just like the below,
pContext=pBulkEpIn->BeginDataXfer(pBulkBuf, nBulkLen, &oRdOvLap);
pBulkEpIn->FinishDataXfer(pBulkBuf, nBulkLen, &oRdOvLap, pContext);
and in slave fifo, test data is always ready , the fifo will be filled as soon as the fifo is empty.
when we start bulk in transfer, it goes well at first, but fails very soon.
sometimes, it can transfer 20G data before go down,
and sometimes only 50MB.
when fails, function WaitForXfer return true, but FinishDataXfer return false.
and it fails all the time after the first failure. unless we close the device and then open it again.
we have two environment, the first one is Win7 32-bit OS with internal USB3.0,
on this PC, the transfer is better than the other.
it can transfer more data, and can reopen after fails happen.
the second environment is winXP 32-bit OS, it has not internal USB3.0, so we use a USB3.0 adapter
on this PC, it fails very soon. after fail, can not reopen. the device seems lost.
we can not detect the device with Control Center.
we have to plug out it.
Thougts & Questions:
1. thread priority. some one said it maybe the reason. we tried this, high priority can do better,
but fail still occur
2.burst in transfer. other ones said bulk must be use in burst. so we tried the other things,
we use bulk out for trigger. each trigger transfer 2M data with bulk in. and after a few ms sleep,
start another trigger.
has anyone done this before ?
any help or input on this is very much appreciated.
Thank you in advance,