hi all, i am doing some time-critical data transfer on EZ-USB FX2LP(cy68013a)
I use the isochronous mode, maxPacketSize = 1024, 1 transaction per uframe( 1/8 ms);
now i want to transfer data every ms, so i should set the xfer size = 8KB
that is the outlen = 8*1024.
If it works as i think, i should get the 8KB data in 1ms, but it costs about 5ms to do that.
and if i setup to get 1024KB data in 128ms, it costs about 132 ms.
Since what i am doing is time-critical, i have to find out the reason. Have you guys any idea about it?
Here is the code:
QueryPerformanceCounter(&lPerformanceCount_Start);
UCHAR *inContext = dlg->USBDevice->IsocInEndPt->BeginDataXfer(inData,inlen,&inOvLap);
if(!dlg->USBDevice->IsocInEndPt->WaitForXfer(&inOvLap,150))
{
AfxMessageBox("Time out!");
dlg->USBDevice->IsocInEndPt->Abort();
WaitForSingleObject(inOvLap.hEvent,INFINITE);
}
success = dlg->USBDevice->IsocInEndPt->FinishDataXfer(inData, inlen, &inOvLap,inContext,
isoPktInfos);
QueryPerformanceCounter(&lPerformanceCount_End);
|