3 Replies Latest reply on Jul 23, 2013 9:11 AM by prajithc_

    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->FinishDataXfer(buf,buflen, &inOvLap,inContext);

      // 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[0]
      3rd Frame has only one  DATA0 transaction.(8byte)   //  = buf[1]
      4th Frame has only one  DATA1 transaction.(8byte)   //  = buf[2]

      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?