Close

A log entry

A project log for A CSI to USB converter

A CSI to USB converter using the CYUSB306x chip.

matyayMatYay 01/28/2021 at 19:310 Comments

Hi all,

Unfortinately I haven't made any progress with this project so far. Mostly beacuse I personally do not have any use of such a device for now and I'm occupied by other stuff related to my job. This is the reason why I created this project some time ago and added the board design to it. I'm hoping that if not me then somebody will make the board and start playing with it. I'm currently not planning to do that in the nearest future.

The things to do are:
 - make and assemble the board
 - write some firmware or port the existing demo from Cypress

My original idea for this device was for it to work as a USB camera (UVC device class) but with the ability to program the image sensor registers from a host PC. Though I've discovered a major issue with this approach: a UVC device must have video resolution(s) and frame rate(s) stored in its USB descriptor upfront. That kinda rules out any "dynamic" reprogramming of the sensor during runtime. At least not without USB re-enumeration.

I've been thinking of some other options like:

1. "minidrivers" - For a specific image sensor you write a driver-like piece of code (a.k.a. minidriver) that gets compiled/linked together with the firmware. The driver would bridge together the device-side UVC requests and the sensor. A major drawback is that this makes the firmware sensor-specific and does not allow low-level sensor reconfiguration.

2. Custom USB requests for resolution and frame rate setting - The idea is to provide a mechanism to configure resolution(s) and frame rate(s) from a host PC and store them in a non-volatile memory of the device. Then also provide a way to acces sensor registers from the PC. This way parameters of the video stream would be decoupled from the sensor configuration. This is very flexible.

3. Custom USB protocol - Instead of UVC class implement a custom UVC device that would allow to stream data from the sensor. The drawback here is the need of a custom driver on the PC side as well. This is more work and makes the whole thing non-universal.

Discussions