2 Replies Latest reply on Dec 8, 2016 11:09 PM by userc_39361

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

      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



      • 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

        • 1. Re: FX3 CONTROL-GET & BULK-IN sometimes fails with USB2.0

          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?

          • 2. Re: FX3 CONTROL-GET & BULK-IN sometimes fails with USB2.0

            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.