This is a call out for help regarding a high speed problem that I am experiencing with the EZ-USB FX3 Superspeed Explorer Kits, using a USB2 cable.
I programmed the FX3 I3C EEPROM with the unmodified Isochronous example Cypress\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxisolpmaninout (USBIsochLoopManualInOut.img).
Running USB Control Center confirms that the DEVICE FriendlyName is “Cypress FX3 USB Bulkloop Example Device”.
The Isoc in and out endpoints have ENDPOINT MaxPktSize values of “1024”.
When I select the “Isoc out endpoint” descriptor, and navigate to the “Data Transfers” tab, the “Bytes to transfer” value has defaulted to 8192 (which is 8*MaxPktSize). When I press the “Transfer Data-OUT” button it successfully transfers out the 8192 bytes – “ISOC OUT transfer completed”. All is well so far.
However, after I change the “Bytes to transfer” to 1024 (i.e. the MaxPktSize), the “Transfer Data-OUT” button always fails with “ISOC OUT transfer failed with Error Code:997”.
My questions are, why is this error occurring, and why can’t I transfer, using high speed, the number of bytes that is equal to the MaxPktSize?
P.S. Bizarrely, this error message is output for any “Bytes to transfer” value less than 7169 for this particular firmware example.
P.P.S. I have seen that forcing full speed makes this problem go away, so the problem seems to be specific to high speed.
In the case of an ISOC endpoint, the Host Controller allocates a bandwidth based on the MaxPktSize field of ISOC endpoint descriptor.
In this case the Host Controller reserves a bandwidth of 8KB for the ISOC endpoint.
Hence, you cannot request less than 8K (for example 1K) from the Host.