FX3 CONTROL-GET & BULK-IN sometimes fails with USB2.0

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

cross mob
Anonymous
Not applicable

In our system FX3-CYUSB3014 + SDK 1.3.3 we use the following transfers at the same time:

   

BULK-OUT: to write data from the PC to the device-TFT-display with DMA
BULK-IN:  to read data from a camera to the PC with DMA
CONTROL-GET: to read cyclical a touchpad on our device

   

If the connection is USB2.0 we found the following issue:
(analysis with an USB bus analyzer)

   
        
  • The system is running well for a while
  •     
  • suddenly a CONTROL-GET fails with "Turnaround Timeout Error" and "BAD CRC"
  •     
  • The PC makes a second try to read the data and get the data with correct CRC but with the first 4 bytes wrong
  •     
  • After the first occurrence of this error all of the following transfers CONTROL-GET and BULK-IN!!! have 4 wrong bytes at the start of each data record
  •    
   

The BULK-OUT to the TFT is further running well
To reset the error we have to restart the complete system

   

questions:

   
        
  • any idea what happens or how to further investigate the problem?
  •     
  • it seems the error is not in the firmware but in the hardware (USB20-SIE, USB20-TP) because it occurs in CONTROL-GET (firmware) and BULK-IN (hardware-DMA) at the same time in different pipes (EP0 and EP3). Is there a possibility to reset the SIE and/or the TP with out reset the entire system
  •     
  • it is possible to detect by the firmware such a hardware error and how to react correctly. At the moment I send data and do not detect the problem in the firmware, only on the PC side
  •    
   

The error was observed until now only with USB2.0 (not USB3.0)  
The error was observed only on some PC's (WIN10)

   

Thanks for any help

0 Likes
2 Replies
KandlaguntaR_36
Moderator
Moderator
Moderator
25 solutions authored 10 solutions authored 5 solutions authored

Did you try your application with any Cypress's DVK (CYUSB3KIT-001/003)? If not, is it possible for you to try with any of the DVK and update the same? did you perform any compliance test on the custom board?

0 Likes
Anonymous
Not applicable

It's a costumer board, and it is difficult to bring it on a DVK, because the error only occurs with our special application which requires our complete hardware (FPGA, sensor...)

   

With help of the CYPRESS technical support we found that if the error appears there is an USB-UNDERRUN-event on EP0-IN (0x80). It seems the error is only on USB2.0 and only at some special (slower??) laptops

   

We can detect the error in the USBevent Callback and handle this in the main thread loop as follows:

   
        
  • Set NAK on EP0
  •     
  • Flush EP0
  •     
  • Reset EP0
  •     
  • Reset Endpoint Memories
  •     
  • Set no NAK on EP0
  •    
   

 After that following communication is o.k.

0 Likes