cancel
Showing results for 
Search instead for 
Did you mean: 

USB Low-Full-High Speed Peripherals

Anonymous
Not applicable

Dear all,

   

This is a puzzling question we can't figure out.

   

We use FX2LP family (CY7C68013A) since a long time (10 years) in BULK mode to transfer blocks of 2048 bytes in Hi Speed and I never had big problems while computers were evolving. During the last months I am having a lot of problems with laptops because it seems that transfer is often unsuccessful.

   

To be precise, I had the chance to observe this problem on two different pc ASUS with these specs: controller usb Intel xHCI, s.o. Windows 10, processor Intel i3

   

The data to transfer are took from a FIFO using the GPIF interface according to a typical mechanism of "clock and read, clock and read...".

   

The weird thing is that it GPIF waveform has a strange behavior (see attached files) when the transfer is unsuccessful. The attached file are the two waveforms of a same "flag output" that I use to trace when the GPIF starts reading (flag goes high) and when it finishes reading (flag goes low). As you can see when the transfer is unsuccessful there is a longer reading cycle in the middle (sometimes are more than one).

   

Additional information about the driver: we have used WinDriver (Jungo) for many years and now we tried WinUSB (Microsoft).

   

Here is the configuration of the endpoints. I have tried to configure them also both 512x4 and both 1024x2 but same result.

;; Endpoint Descriptor
      db   DSCR_ENDPNT_LEN      ;; Length of this descriptor = 7 bytes
      db   DSCR_ENDPNT         ;; Descriptor type = Endpoint
      db   01H               ;; Endpoint number, and direction (01H = EP1, out)
      db   ET_BULK             ;; Endpoint type
      db   40H               ;; Maximun packet size (LSB)
      db   00H               ;; Max packect size (MSB) --> 64 bytes
      db   00H               ;; Polling interval (in # of frames. Ignored for Bulk and Control EPs)
;; Endpoint Descriptor
      db   DSCR_ENDPNT_LEN      ;; Length of this descriptor = 7 bytes
      db   DSCR_ENDPNT         ;; Descriptor type = Endpoint
      db   81H               ;; Endpoint number, and direction (81H = EP1, in)
      db   ET_BULK             ;; Endpoint type
      db   40H               ;; Maximun packet size (LSB)
      db   00H               ;; Max packect size (MSB) --> 64 bytes
      db   00H               ;; Polling interval (in # of frames. Ignored for Bulk and Control EPs)

   



SYNCDELAY;
EP2CFG = 0xAA; // b7=1 (valid)
// b6=0 (dir OUT: PC -> Periph)
// b5=1 (BULK)
// b4=0 (BULK)
// b3=1 (size 1024)
// b2=0
// b1=1 (buffering 2x)
// b0=0 (buffering 2x)
SYNCDELAY;
EP6CFG = 0xE0; // b7=1 (valid)
// b6=1 (dir IN: PC <- Periph)
// b5=1 (BULK)
// b4=0 (BULK)
// b3=0 (size 512)
// b2=0
// b1=0 (buffering 4x)
// b0=0 (buffering 4x)

   

Thank you

1 Solution
Moderator
Moderator

Hello,

In the endpoint descriptors, the maximum packet size of the endpoints is reported as 64 bytes. But, the device endpoints are configured for 512 bytes and 1024 bytes. Please change the maximum packet size of the endpoint descriptors to be 512 bytes.

Also, update the driver to the latest version 1.2.3.20 which supports till Win 10 RS3. This driver can be obtained from the FX3 SDK.

http://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kit

Best regards,

Srinath S

View solution in original post

0 Likes
Reply
2 Replies
Anonymous
Not applicable

I am curious to see if your problem has similar symptoms to mine.

Are your faulty bulk transfers happening in 512 byte packets?

Does your device have the same USB bus address after re-enumeration as before?

See my post: CY7C68013A Bulk interrupt packet size

Thanks,

-- Conor

0 Likes
Reply
Moderator
Moderator

Hello,

In the endpoint descriptors, the maximum packet size of the endpoints is reported as 64 bytes. But, the device endpoints are configured for 512 bytes and 1024 bytes. Please change the maximum packet size of the endpoint descriptors to be 512 bytes.

Also, update the driver to the latest version 1.2.3.20 which supports till Win 10 RS3. This driver can be obtained from the FX3 SDK.

http://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kit

Best regards,

Srinath S

View solution in original post

0 Likes
Reply