DIGILENT MIPI-CSI Camera Set

From Voipac Wiki
Jump to navigation Jump to search

This example uses Digilent Pcam 5C is a MIPI-CSI interface camera (built on OV5640 MIPI sensor) as a test device for CSI Interface. On this page OV5640 sensor integration, settings and usage on i.MX8M processors are shown.
Pcam-5C.png
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard

Kernel detection

root@imx8mq-voipac:~# dmesg | grep ov56
[    2.410383] ov5640_mipi 1-003c: No pin available
[    2.415040] ov5640_mipi 1-003c: No sensor pwdn pin available
[    2.420726] ov5640_mipi 1-003c: No sensor reset pin available
[    2.426512] ov5640_regulator_enable: cannot get io voltage error - err:-517
[    2.555690] ov5640_mipi 2-003c: No pin available
[    2.562074] ov5640_mipi 2-003c: No sensor reset pin available
[    2.567861] ov5640_regulator_enable: cannot get io voltage error - err:-517
[    2.948998] ov5640_mipi 1-003c: No pin available
[    2.959199] ov5640_mipi 1-003c: No sensor reset pin available
[    2.970608] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator
[    2.983356] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator
[    4.190794] mxc-mipi-csi2_yav 30b60000.mipi_csi: Registered sensor subdevice: ov5640_mipi 1-003c
[    4.204863] ov5640_mipi 1-003c: Camera is found
[    4.209719] ov5640_mipi 2-003c: No pin available
[    4.214385] ov5640_mipi 2-003c: Failed to set power pin
[    4.219626] ov5640_mipi 2-003c: retval=-16
[    4.223747] ov5640_mipi: probe of 2-003c failed with error -16
root@imx8mq-voipac:~#

I2C detection

DIGILENT Pcam 5C camera chip is connected via I2C2. The most important address for correct detection is 0x3c.

root@imx8mq-voipac:~# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- UU -- -- -- UU -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- UU 3d -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- UU -- UU -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Modules listing

Kernel 4.1 ???????????

root@imx6-openrex:~# lsmod ????????????????
Module                  Size  Used by
mxc_v4l2_capture       27624  2
ipu_bg_overlay_sdc      5385  1 mxc_v4l2_capture
ipu_still               2331  1 mxc_v4l2_capture
ipu_prp_enc             5903  1 mxc_v4l2_capture
ipu_csi_enc             3904  1 mxc_v4l2_capture
ipu_fg_overlay_sdc      6130  1 mxc_v4l2_capture
ov5647_camera_mipi_int    30566  0
adv7610_video           6373  0
v4l2_int_device         2872  4 ov5647_camera_mipi_int,adv7610_video,ipu_csi_enc,mxc_v4l2_capture
mxc_dcic                6528  0



root@imx8mq-voipac:~# lsmod
Module                  Size  Used by
crct10dif_ce           16384  1
mwifiex_pcie           45056  0
mwifiex               294912  1 mwifiex_pcie
galcore               610304  2

Resolution setting

The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)

1280x960

echo 0 > /sys/bus/i2c/devices/1-0036/ov5647_mode

1280x720

echo 1 > /sys/bus/i2c/devices/1-0036/ov5647_mode

1920x1080

echo 2 > /sys/bus/i2c/devices/1-0036/ov5647_mode

640x480

echo 3 > /sys/bus/i2c/devices/1-0036/ov5647_mode

1024x768 (default)

echo 4 > /sys/bus/i2c/devices/1-0036/ov5647_mode

960x720

echo 5 > /sys/bus/i2c/devices/1-0036/ov5647_mode

640x480 (narrow angle of view)

echo 6 > /sys/bus/i2c/devices/1-0036/ov5647_mode

Gstreamer

Capture single JPEG picture

root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
../git/libs/gst/base/gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Execution ended after 0:00:00.000309960
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
root@imx8mq-voipac:~# ls
sample_image.jp

The image stored in local media with name sample_image.jpeg

Video preview

root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut
ovideosink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.842776580   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0623c0 (GstVideoMeta) of size 112
0:00:00.842935198   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062440 (GstVideoMeta) of size 112
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112
0:00:00.843338584   469 0xaaaadc001c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc062540 (GstVideoMeta) of size 112
[ 1416.119964] skip frame 1

The video stream from camera can be displayed on display/monitor