Can I send multiple transactions to EP0 per one Frame(1mSec)? | Cypress Semiconductor
Can I send multiple transactions to EP0 per one Frame(1mSec)?
- TEST Condition -
Deive : CY7C63310, Low Speed USB device.
PSoC Designer 5.2 for device Firmware.
CYUSB.SYS for driver.
CYUSB.lib for Windows Application.
My question is about EP0 Transaction schedule of CYUSB.SYS.
I just need a 26Kbyte/Sec data rate on Low Speed USB.
So, I deciede to use a control enpoint.
(because interrupt endpoint has 1KB/Sec rate)
-- My code in VC with CYUSB.lib --
ept0 = USBDevice->ControlEndPt;
ept0->Target = TGT_DEVICE;
ept0->ReqType = REQ_VENDOR;
ept0->Direction = DIR_TO_DEVICE;
ept0->ReqCode = 0x01; // <= there is my service code.
ept0->Value = 0x0000;
ept0->Index = 0x00;
buflen = 256; // <= it means 32 transaction (32*8). 8 = maxpacket size of EP0 of CY7C63310
UCHAR *inContext = ept0->BeginDataXfer(buf,buflen,&inOvLap);
// ept0->Read(buf,buflen); // this has same result with BeginDataXfer
And it works with my specific firmware.
However, above code takes 35mSec to transfer like next.
1st Frame has one Setup transaction.(8byte)
2nd Frame has only one DATA1 transaction.(8byte) // = buf
3rd Frame has only one DATA0 transaction.(8byte) // = buf
4th Frame has only one DATA1 transaction.(8byte) // = buf
It looks like CYUSB.SYS reuqest only one transaction per Frame.(So data rate is 8KB/Sec)
And I test with other USB driver(not free), I can take about 56KB/Sec(90% bandwidth) with same device and firmware.
So, it is not a USB specific impact.
Can I send multiple transactions to EP0 per one Frame(1mSec) with CYUSB.SYS?