I am developing CX3 Firmware for streaming 12 bit Raw Image using UVC but I am facing flow control issue. The DMA buffer overflows if the host delays in reading from device, causing the streaming of data to stall. I followed the solution suggested on page 12 of FX3 troubleshooting guide http://www.cypress.com/system/files/document/files/FX3_SDK_TroubleShooting_Guide_0.pdf. I restart the streaming by calling Stop subroutine having sensor specific stop commands followed by calling Start subroutine having sensor specific start commands.
This has helped resolve stall issue, but corrupted frames are received after the device recovers from DMA buffer overflow issue.
I assume this is because the host is not acknowledged about streaming restart, and hence continues to buffer the new frame along with previous frame data.
Any help is appreciated.
Are you calling the CyU3PUsbSetEpNak API to set a NAK on the video streaming endpoint, before restarting the flow? You need to remove the NAK using the same API once you have restarted the channel. This should be enough for the host to know that the streaming has restarted.
- Madhu Sudhan