FX2LP CY7C68013A Hi Speed Bulk problem on latest generation laptops

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
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
SrinathS_16
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

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
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
SrinathS_16
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

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

0 Likes