3 Replies Latest reply on Jul 23, 2013 9:11 AM by prajith.cheerakkoda

    Can I send multiple transactions to EP0 per one Frame(1mSec)?

    davor.radisic

      - 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
       ZeroMemory(buf,buflen);

        UCHAR  *inContext = ept0->BeginDataXfer(buf,buflen,&inOvLap);
        ept0->WaitForXfer(&inOvLap,2000); 
        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.

      START
      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?