Hello,
It only works with the one particular camera model that could send data in such a low resolution to be suitable for both the VNC2 and the OLED display.
So, in this example code there is a deliberate dependency on the Logitech Webcam Pro 9000 camera for input. The output format, frames and resolution for the chosen camera and the OLED display are matched.
As for all UVC devices, the USB isochronous reads are matched exactly to the camera output agreed upon by the SET_CUR/GET_CUR during probe exchanges. The parameters requested in the SET_CUR probes are fixed (WebCamApp.c line 320) to what this camera supports and there is no verification in the code that this was accepted by the camera. If the chosen camera does not have a matching mode then it will respond with invalid values in the VProbeAndCom structure in the GET_CUR reply to the probe (line 332) request. You can check the response to the probe request for your cameras at this point before the commit is sent (line 348). The GET_MIN and GET_MAX requests can be used to query likely modes that cameras can support.
The VNC2 is a very mature IC and only operated at Full Speed USB which brings limitations.
Our sister company Bridgetek have an MCU with High Speed USB which is more suited to UVC cameras:
https://brtchip.com/ft900/The
FT9xx Modules (eg MM900EV3A) include an OmniVision OV9655 camera module (1 megapixel).
This uses raw images and doesn’t support compressed images which limits throughput.
FT90x UVC Webcam example includes support for an OmniVision OV5640 (5 megapixel) which is on the
CleO Camera module.
This supports compressed MPEG images (compressed) which allows for higher throughputs.
Note some hardware modifications are required to support this camera:
TPS76915DBVR (1.5V) for U17.
FT531GA (2.8V) for U16 and remove C109.
Also there are known issues with the FT90x UVC Webcam example code on our website. We are in the process of uploading a new working version (which can be downloaded on our FTP server for now:
AN_414_FT90x_USBD_UVC_Webcam rev 2131.zip).
The example code supports the following resolutions:
QVGA: 320 x 240
VGA: 640x480
SVGA: 800 x 600
Uncompressed at 30fps would only work for QVGA. Lowering the fps would allow for higher resolution.
Compressed at 30fps would work at SVGA.
Higher resolutions and frame rates can be achieved with a different senor and settings.
The
FT9xx Toolchain can be used to build, program and make changes to the example code.
Also please note that the MM900EV3A contains RevB silicon. The latest is RevC.
We only have MM900EV1B which contains RevC silicon but we don’t have any RevC hardware with a camera.
The RevB should be ok for test and evaluation purposes though.
You can refer to the following documents:
•
PCN BRT 005 •
BRT AN 019 Migration Guide Moving from FT90x Revision B to FT90x Revision C Best Regards,
FTDI Community