Please share the firmware and log file for the debugging?
In your case, have you successfully sent 600 KB at least once?
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.
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?
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.