Help generating a camera signal with the Zedboard and AN75779 example

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

cross mob
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

Hi. I'm having trouble getting a UVC video using the Zedboard and the AN75779 example project. The Zedboard is connected to the GPIF using a FMC Interconnect Board. I want to generate a video stream on the Zedborad to my computer. I've tried to disable I2C communication between the boards. Right now there is a black image when I open my webcam software on my computer. Can anyone help me understand what's going wrong?

On the FX3 side

  • I have changed the GPIF bus to 16 bits.
  • I've commented out sensor.c/SensorInit() and I've changed sensor.c/SensorI2cBusTest() to auto pass. See attached sensor.c

On the Zedboard

  • I have 16 bit vector of incrementing data (I don't currently care what the image output looks like). The data is connected from DQ0 to DQ15.
  • I'm making a 640x480 image. LV is high for 640 pixel cycles and low for 160 bits pixel cycle. FV is high for 480 lines (of 800 pixels) and low for 45 lines
  • LV is connected to DQ28 and FV is connected to DQ29. As in the GPIF designer
  • The pixel clock is 25.175 MHz. FV is every 60 Hz
  • Reset is currently a constant high

On the Computer connected to the FX3

  • The computer reconsigns the FX3 as a webcam
  • The FX3 is producing a black image when opened in a webcam program
0 Likes
1 Solution
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

Hi,

Please ensure the following:

1) The contents of the cyfxgpif2config.h file is replaced with the contents of the cyfxgpif2config_16bits.h file

2) If you have a USB 3.0 connection, make sure the Super Speed frame and format descriptors in the cyfxuvcdscr.c file and the glProbeCtrl in the uvc.c are modified according to your resolution and frame rate.

If you are playing in USB 2.0, the descriptors and glProbeCtrl20 support 640 x 480 resolution already. Just modify the frame rate fields in these. (Your frame rate is 60 fps as per your description)

3) In your host application, make sure the proper resolution is selected.

4) enable DEBUG_PRINT_FRAME_COUNT macro in uvc,h file for debug purpose. This will give you a count of the frames as they are being transferred.

5) Make sure the image sensor is functional as expected by probing the signal lines using an oscilloscope.

6) Also, print the number of bytes in each frame.

To do this, please do the modifications as in the attached uvc.c file.

(Search for the text "mady" in the file where the changes are included to print the number of bytes in a frame.

Regards,

- Madhu Sudhan

View solution in original post

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

Hi,

Please ensure the following:

1) The contents of the cyfxgpif2config.h file is replaced with the contents of the cyfxgpif2config_16bits.h file

2) If you have a USB 3.0 connection, make sure the Super Speed frame and format descriptors in the cyfxuvcdscr.c file and the glProbeCtrl in the uvc.c are modified according to your resolution and frame rate.

If you are playing in USB 2.0, the descriptors and glProbeCtrl20 support 640 x 480 resolution already. Just modify the frame rate fields in these. (Your frame rate is 60 fps as per your description)

3) In your host application, make sure the proper resolution is selected.

4) enable DEBUG_PRINT_FRAME_COUNT macro in uvc,h file for debug purpose. This will give you a count of the frames as they are being transferred.

5) Make sure the image sensor is functional as expected by probing the signal lines using an oscilloscope.

6) Also, print the number of bytes in each frame.

To do this, please do the modifications as in the attached uvc.c file.

(Search for the text "mady" in the file where the changes are included to print the number of bytes in a frame.

Regards,

- Madhu Sudhan

0 Likes