Lost runt high-bandwidth isochronous IN transfers | Cypress Semiconductor
Lost runt high-bandwidth isochronous IN transfers
Our application is streaming video to the host via USB 2.0. The host has a Intel 82801I UHCI controller.
We have observed that when the video streaming endpoint is configured for high-bandwidth operation (multiple transaction opportunites per microframe), "runt" microframes with less than one packet of data never make it to the host. This leads to a black segment at the bottom right of each video frame.
I have traced the data flow in this case and as far as I can tell, the runt buffer is being committed to the USB socket properly. The DMA descriptors for that socket buffer are consistent with what I would expect, including the EOP flag.
Since this problem seems to be limited to cases where there is less than one packet of data committed, I am suspecting a hardware issue in the DATA PID sequencing required by USB 2.0 section 5.9.2.
Unfortunately I don't have access to a bus analyzer to see what is going over the wire. Has anyone encountered similar issues, or seen this case work in FX2 or FX3? Is it possible I'm doing something wrong in the firmware?