fx3 streaming problem in isoc

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
JiKi_2103446
Level 1
Level 1
First like received

Hi,

I'm working with AN75779 UVC sample code for streaming video data using isoc transfer mode, not bulk mode.
After correcting the desciptor and end point configuration, I confirmed normal recongition(enumeration) in isoc mode.


But, when I streaming video via AMCAP, it fails always. ("This graph cannot preview" message window occurs)
In bulk mode, it works normally well.

Using the UART log, I reviewed the difference part between bulk and isoc mode log.
And I discovered that the commit control is not issued on video streaming request sequence in isoc mode.
As I know, after a correct streaming parameters has been obtained by probe control,
commit control is generated after that.

In UVC.c file, I added a log as below.

static void UVCHandleVideoStreamingRqts (void)
{
    CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
    uint16_t readCount;
dbg(4, " UVCHandleVideoStreamingRqts : %d %d \r\n", wValue, bRequest);
~~~~~~~~~
}
But, I could't find a log that wValue equals to 0x0200(=commit control).
I don't know why commit contorl has not issed.

Please let me know if I'm missing something or if you need additional information.

Thanks in advance.

0 Likes
3 Replies
Anonymous
Not applicable

Hi!,

Are you facing the issue on Win7 or Win10?

If it's on Win7 can you try setting the burst length field in the ISOC endpoint descriptor to 1?

0 Likes

Thanks for your inform.

I'm using Win8.1, so burst length also set to 1.

Anyway..after modifying some functions in UVC.c, I succeed in streaming start.

But video output is only black screen.

As a result of the packet analysis program(Wire shark), it seems that only 1575 bytes are being transmitted.fail.PNG

I think that actual frame data seems to be not being transmitted.

The endpoint configuration is as follows.

.isoPkts = 1 .burstlen = 1 .pcktSize = 0x400

and the dma channel setting is the same as the original example one.

I did not make any modifications.

Is it necessary to have different frame processing in isoc mode than in bulk mode?

Please let me know which part needs to be fixed.

Thanks in advance.

0 Likes
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

Hi,

Can you use the attached code to compare your code. You can uncomment "USE_ISOCHRONOUS_ENDPOINT" in cyfx3_uvc.h and check. This firmware has two parts UVC/USB and FX3's CPU. GPIF, I2C, SPI, etc. blocks are not used and hence it is the simplest form of FX3 UVC firmware. The CPU fills the buffers with a predefined color and commits it to the USB.

In the attached firmware we can get 1 burst packet and 3 such bursts in a micro frame on a Window 7, 8.1 PC. With Win10 PC, we can get upto 15 burst packets and 3 such bursts in a micro frame. But the firmware needs to be modified.

Regards,

Savan

0 Likes