Connecting CSI and DSI

It is told in Hardware Manual that there are 4L-MIPI DSI, 2L-MIPI CSI and 4L-MIPI CSI interfaces onboard.

Does this mean that I can take any of 4-lane CSI camera, connect it to the board and it could just work? The same about DSI display.

Hi,
I would like to design and build a new camera. I will need an interface for 12kx12 sensor and 18bits/pixel (native). So I am looking for a DMA input of nearly 0.4GB per image and around 40MB/s.
CSI would be OK if there are drivers available to read image data. But another normal parallel GPIO-port (8 or 16bit wide with DMA) would be my favourite.
I hope someone can help.
Best regards
Frank

Hi isdubkov:

The MIPI-CSI specification specifies the voltage levels of the signals, and the formats of the packets. It does not specify a mechanical connector (if any), this is left up to the system designer, hence: every camera out there has a different mechanical pin-out. The actual cameras also differ in the data in the packets. the length of a packet is one scan line which could be anything from 480 pixels (for a 640x480 camera) to 5k pixels (or more) for 1 12megaPixel camera. The MIPI-CSI allows for this. Additionally the format of the pixels can vary (Bayer pattern or YUV, 8 bits per colour or 14bits (or more) per colour). Finally even if you have drivers for a specific sensor die, the lens system in front of the sensor creates distortion and needs tuning to correct the distortion, every lens design is different. Some camera modules have built-in electronics to correct the lens effects.

As you can see if you just “connect” a MIPI-CSI camera it won’t work. You need to put a huge effort into writing a device driver and applying the optical corrections necessary. The ‘quick and dirty’ way (for now) to get a camera operating with the 410c is to plug in a USB camera.

Don’t despair, there are at least two companies I know about working on MIPI-CSI cameras, but as you can see it is a huge amount of work and it will be a while before they are ready.

Hi Frank:

40MBytes per second is very difficult with parallel GPIOs. Simply getting the data aligned at all the pins at the same time is tricky, you have a 25ns window for each byte. There are no parallel ports in the 410, and your SW would need to sample the 8 GPIO pins every 25nS. I’m not sure this is possible.

MIPI-CSI can easily transfer this much data into the SOC but as noted above it would require quite some effort to create the software drivers to read the data. You would have to convert your data from whatever format you have to MIPI-CSI and converter chips are rather few and far between, fortunately the FPGA companies can drive MIPI-CSI so you can put the conversion logic into an FPGA. Of course you need to design the FPGA and the PCB to route the FPGA output to the High speed connector, so this is not a task for the feint of heart.

Dear isdubkov,

Thank you so much for your explanations.

  1. I know about parallel high speed io. I have designed many interfaces and pcb in the past.
    That’s not my problem.
    And conversion of parallel to CSI and back isn’t a problem too.
    I have had the hope that there is a simple universal driver which can tarnsfer N words via MIPI-CSI and write/read the contents of a I2C Register of device with address A.
    Then I would be able to adapt to nearly unlimited number of sensors within minutes - ok - within a day.
    Data shuffling can be done in user software.

Perhaps there is sourecode for a driver for a simple Aptina imager available (e.g. written in GCC).
Then it could be modified to an universal one.

I tried similar steps with RaspberryPI, but the source isn’t open there. By this way they sell only one camera for the CSI interface (written by an ex-employee of the chip manufacturer).

Best regards

Frank

ljking, thanks for explaination!

You need to put a huge effort into writing a device driver and applying the optical corrections necessary.

However, is it possible to write driver by myself (theoretically) or there are stumbling blocks such as proprietary tools and lack of documentation etc? Do I have to buy something from Qualcomm or make a contract with them or aquire a documentation and sign NDA?

Hi,

The guideline for adding camera on 96boards (only on hardware perspective) through MIPI-CSI was released.

https://github.com/96boards/documentation/raw/master/Addenda/96BoardsCESpecification-CameraModuleInterfaceAddendum.pdf

Thanks,

Dear ldts-atsuka,

that fine and easy to understand.

Now there is only one missing link. We need the lowest layer of kernel routines, for accessing the GPIO, I2C and DMA-Block-read (block of specified size). With this fundamental work most programmers (including me) will be able to add a MIPI sensor to the board and supporting it by user space software (e.g. from Aptina or Omnivision or my camera (under development)).

If someone can do this low level programming job, then I will make an Open Source PCB for such a sensor including user interface software support.

Best regards

Frank