Why is CYUSB3KIT-003 isoc failing to write out two messages in quick succession (about 0.1 seconds apart) when using full speed

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

cross mob
Anonymous
Not applicable

This is a call out for help regarding an (easily reproducible) full speed problem that I am experiencing with the EZ-USB FX3 Superspeed Explorer Kits, using a USB2 cable.

   

Our project requires full speed. We found no existing full speed Isochronous example, so we modified the source of Isochronous example Cypress\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxisolpmaninout to force it to be full speed (rather than high speed) when used with a USB2 cable. We also changed the producer and consumer endpoint descriptor Max packet size values from decimal 1024 to decimal 64.

   

I have attached the two source files (cyfxisolpmaninout.c and cyfxisolpdscr.c - renamed to *.txt to facilitate the upload) of SDK example cyfxisolpmaninout that we modified. (I have also summarised these file changes at the end of this post.)

   

I programmed the FX3 I3C EEPROM with this modified (to force full speed) Isochronous example (USBIsochLoopManualInOut.img).

   

Running a program that tests CCyUSBDevice object member nHighSpeed and bSuperSpeed reveal that neither is true, therefore it would appear that full speed has been achieved.

   

 Running USB Control Center confirms that the Isoc in and out endpoints have ENDPOINT MaxPktSize values of “64”.

   

When I select the “Isoc out endpoint” descriptor, and navigate to the “Data Transfers” tab, the “Bytes to transfer” value has defaulted to 512 (which is 8*MaxPktSize). I change this to 64, which is the MaxPktSize. When I singularly press the “Transfer Data-OUT” button it successfully transfers out the 64 bytes – “ISOC OUT transfer completed”. All is well so far.

   

However, if I press the the “Transfer Data-OUT” button rapidly twice in succession (faster than approximately 0.2 seconds apart), the first write succeeds, but the second write always fails with “Zero-length data transfer completed”.

   

My questions are - why is this error occurring for full speed, and why can’t I perform two writes quickly with full speed? Is there anything wrong with the methods in which we went about forcing full speed?

   

P.S. The unmodified Isochronous example Cypress\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxisolpmaninout, which runs at high speed using a USB2 cable, does not exhibit this problem.

   

P.P.S Details of this modification to force SDK example cyfxisolpmaninout  to full speed were as follows:

   

Source file cyfxisolpmaninout.c had ‘Super speed configuration descriptor’ commented out, and was change to call CyU3PUsbForeceFullSpeed(CyTrue) and CyU3PConnectState(CyTrue, CyFalse).

   

Source file cyfxisolpdscr.c had ‘Standard device descriptor for USB 3.0’ ‘Standard super speed configuration descriptor’ and ‘SuperSpeed device capability’ commented out, and the length of the ‘Binary device object store descriptor’, ‘Endpoint descriptor for producer EP’ and ‘Endpoint descriptor for consumer EP’ were updated to be consistent with these changes.

   

In addition, the Max packet sizes of the Isoc in and out endpoints had been changed from decimal 1024 to decimal 64 in file cyfxisolpdscr.c.

0 Likes
3 Replies
Anonymous
Not applicable

Hi,

   

We tested this internally and we were unable to reproduce the issue.

   

When you pressed the buttons in a slow fashion were you able to see this issue?

   

Regards,

   

- Madhu Sudhan

0 Likes
Anonymous
Not applicable

Hi,

   

No the issue is not seen when the “Transfer Data-OUT” button is pressed in a slow fashion (more than approx. 0.2 seconds between clicks).

   

But the issue is always seen when the “Transfer Data-OUT” button is pressed rapidly twice in succession (less than approx. 0.2 seconds between clicks).

   

Steven

0 Likes
Anonymous
Not applicable

Hi,

   

I reproduced the issue on a second Windows 7 Pro (64 bit) PC by installing FX3_SDK_Windows_v1.3.3.exe, connected the FX3 USB Device (containing the aforementioned full speed firmware) using a USB2 cable, and installed the device driver from location C:\Program Files\Cypress\1.3\driver\bin\winxp\x64 folder. I have two FX3 USB Devices and both exhibit the problem. I must admit that I don't have all the latest Windows 7 updates.

0 Likes