If you go through your firmware, you will notice that the firmware is using a timer- Cx3ResetTimer. In the DMA callback, whenever you get a producer event, you are starting the timer, and whenever you get a consumer event then the timer is being stopped and being reinitialized.
Producer event is triggered when CX3 receives data from the sensor, and consumer event is triggered with PC reads the data from the CX3.
If after the producer event, the PC does not read the data. Then the consumer event will not be triggered and the timer will expire upon completing the period. If you look at the timer callback function, you will notice that it will set CX3_DMA_RESET_EVENT. This is the current scenario. If the host is not asking the data continuously, then the timer will expire and you will get a CX3_DMA_RESET_EVENT triggered. Please check on USb3.0 to check, probably you wont because the host will ask the data more fast. If so, then you can probably increase the period of the timer to avoid this.
I don't have any USB 3.0 port, but I increased the period of the timer.
But Still, I have DMA_RESET, because of below condition. (always go to "if (status != CY_U3P_SUCCESS)")
Is there any point to check?
/* Commit Buffer to USB*/
status = CyU3PDmaMultiChannelCommitBuffer (chHandle, (dmaBuffer.count + 12), 0);
if (status != CY_U3P_SUCCESS)
1) You can add the PIB callback in your firmware. using CyU3PPibRegisterCallback
API. If you do not get any overfolw on the PIB side, then you can remove the reset timer related component. The reset timer is included for error handling when the host is not asking data fast but the sensor sends at a higher speed.
2) The host application, does it support RAW10 display? When you put your hand, and the data changes, that makes sense (You may not be able to see the correct video because the host application may not support RAW10)
3) We have provided a sample firmware to stream RAW video using vendor class implementation. Please have a look: http://www.cypress.com/forum/usb-known-problems-and-solutions/fx3-cx3-firmware-streaming-raw-image-data-using-cypress
Have you slove the problem? Can you kindly share it with me? Thanks!