4 Replies Latest reply on Aug 13, 2018 2:03 AM by KandlaguntaR_36

    FX3 suspeded during control transfer

      Dear Cypress Experts.



      backgrounds :

      Sometimes I lost fx3 control, during control transfer from host( Win7 ) to device( fx3 ) on USB3.0 port ( USB 2.0 port works well always )

      No devices captured in control center, so I have to unplug&plug USB cable again.

      I got referenced by your USBBulkSourceSink example.

      (before) (after)


      details :

      I want to send about 600KB data by Control transfer from PC Application to my device.

      After open file from PC, data size sliced to 64KB and then transfered sequentially.


      Next, in FX3, my thread get that packets by callback function ( registered by CyU3PUsbRegisterSetupCallback() ).

      After then, just get data ( by CyU3PUsbGetEP0Data() ), send those to device by I2C ( CyU3PI2cTransmitBytes() )


      1. Every returned values from functions are CY_U3P_SUCCESS, But sometimes FX3 doesn't answer me. ( like below, a few logs from device )

          Where am I have to debug from?

      2. In addition, I have no idea which part makes problems, so I'd like to see the status of FX3 firmware by pausing in Cypress IDE, but pause button is unable.

          Is there another way to know the firmware status with your IDE?

        • 1. Re: FX3 suspeded during control transfer

          Please share the firmware and log file for the debugging?


          In your case, have you successfully sent 600 KB at least once?

          • 2. Re: FX3 suspeded during control transfer

            I made while loop for XferData() with 600KB data.

            This sends 64KB every single time for my device's I2C data throughput limit.


            Sometimes freeze in while loop, sometimes abnormally exited by xferdata func timeout( I guess firmware suspended ).


            Which mail address do I have to send firmware and log file?

            Because of company secret policy, I can't share files on the forum.

            • 3. Re: FX3 suspeded during control transfer

              I can see that you have enabled many Debug Prints in the call back section. This may affect the performance when the device is operating at USB 3.0 mostly.


              1. I recommend you to remove the unnecessary debug prints in the call back section and check the behavior. Also increase the UART Baud Rate so that UART functions at higher speeds.


              2. Have you collected the logs for USB 2.0?

              If yes, what are your observations when you compare both the logs? How much amount of data that the device received successfully before it disappears from the control center (in USB 3.0 mode).


              3. We have an example firmware which does similar job as yours but write and read to/from I2C EEPROM in the SDK: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\serialif_examples

                 I hope that you have referred these example FWs. 

              4. When the device is operating in USB 3.0, the ep0_buffer size is 64 bytes. Why do not you increase it to 512 bytes to speed up the operation?


              5. You can check the device status after every write and read transfers using CyU3PI2cWaitForAck API. I can see that you have commented this API in your firmware.


              6. Have you tried to operate in DMA Mode instead of Register mode to increase the data transfer rate?

              • 4. Re: FX3 suspeded during control transfer

                This issue is solved by returning CyTrue for the setup requests handled in the USB SetUp Callback.


                Refer III in section 2.3 of Cypress EZ-USB FX3 SDK Troubleshooting Guide provided with the SDK: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\doc\firmware


                Attached with this interaction for quick reference.