- Please share the USB traffic between PC and FX3.
- In case your hardware has got access to the UART ports, please use debug statements to identify if there is any failure in API calls.
Please see the attached picture.
You can see 2 types of usb packets, the 32896-byte packet is the packet with 32KB video payload from FX3, while the 128-byte is the PC request to FX3.
You can see the last USB packet to FX3 is a 128-byte packet. Before it everything seems ok.
The FX3 stream halts here. No packets after that.
For the FX3 FW, auto DMA mode is used, so there's no API called during the streaming I guess.
There's no error message from the UART, too. Therefore the AbortHandler function is never called.
The PibCallBack is configed, but there's no error related to PIB_INTR_ERROR, too.
So how to see more debug messages? Thanks!
usb_pkt_last.png 42.0 K
Could you please try to use Manual DMA channel and then check the UART debug logs. This will give us some idea of the error. You mentioned that the slavefifo buffers are full when the stall condition arrives so I suspect that it might be facing CommitBuffer error.
Thanks & Regards
In fact I used Manual DMA channel before, but found no error in the UART output.
The DMA notification is set to CY_U3P_DMA_CB_PROD_EVENT.
In the DMA callback function, the callcack type is check.
If the type is CY_U3P_DMA_CB_PROD_EVENT, then CyU3PDmaChannelCommitBuffer is called. After the call, the call status is check, if it is not CY_U3P_SUCCESS, an error message will be printed out to UART by calling the CyU3PDebugPrint. But there's no error message from the UART when the video stream halts.
So I still don't know what's the problem.
Are you getting gpifCounter and frame counter values in debug logs? Is there any difference in frameCounter and GpifCounter values? Are you getting any debug logs over UART?
Thanks & Regards