Difference between revisions of "DIGILENT MIPI-CSI Camera Set"Voipac webshop

From Voipac Wiki
Jump to navigation Jump to search
 
(12 intermediate revisions by 2 users not shown)
Line 4: Line 4:
 
<div style="float:right">__TOC__</div>
 
<div style="float:right">__TOC__</div>
  
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.
 
<br />
 
 
[[image:Pcam-5C.png|800px]]<br />
 
[[image:Pcam-5C.png|800px]]<br />
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX8M Development Baseboard  
+
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX Development Baseboard  
<br />
+
 
+
 
 
== Kernel detection ==
 
== Kernel detection ==
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
root@imx8mq-voipac:~# dmesg | grep ov56
 
root@imx8mq-voipac:~# dmesg | grep ov56
[    2.398433] ov5640_mipi 1-003c: No pin available
+
[    2.383324] ov5640_mipi 1-003c: No pin available
[    2.403090] ov5640_mipi 1-003c: No sensor pwdn pin available
+
[    2.387976] ov5640_mipi 1-003c: No sensor pwdn pin available
[    2.408777] ov5640_mipi 1-003c: No sensor reset pin available
+
[    2.393683] ov5640_mipi 1-003c: No sensor reset pin available
[    2.414571] ov5640_regulator_enable: cannot get io voltage error - err:-517
+
[    2.399479] ov5640_regulator_enable: cannot get io voltage error - err:-517
[    2.539603] ov5640_mipi 2-003c: No pin available
+
[    3.018132] ov5640_mipi 1-003c: No pin available
[    2.549079] ov5640_mipi 2-003c: No sensor reset pin available
+
[    3.033972] ov5640_mipi 1-003c: No sensor pwdn pin available
[    2.554887] ov5640_regulator_enable: cannot get io voltage error - err:-517
+
[    3.046488] ov5640_mipi 1-003c: No sensor reset pin available
[    2.999855] ov5640_mipi 1-003c: No pin available
+
[    3.062091] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator
[    3.005558] ov5640_mipi 1-003c: No sensor reset pin available
+
[    3.072436] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator
[    3.012003] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator
+
[    4.325257] mxc-mipi-csi2_yav 30b60000.mipi_csi: Registered sensor subdevice: ov5640_mipi 1-003c
[    3.019785] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator
+
[    4.337288] ov5640_mipi 1-003c: Camera is found
[    3.039290] ov5640_mipi 1-003c: Read reg error: reg=300a
 
[    3.044691] ov5640_mipi 1-003c: Camera is not found
 
[    3.051918] ov5640_mipi 2-003c: No pin available
 
[    3.062814] ov5640_mipi 2-003c: No sensor reset pin available
 
[    3.069209] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator
 
[    3.076945] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator
 
[    4.291092] mxc-mipi-csi2_yav 30a70000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c
 
[    4.304334] ov5640_mipi 2-003c: Camera is found
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== I2C detection ==
 
== I2C detection ==
MINISASTOCSI  camera chip is connected via I2C3. The most important address for correct detection is 0x3c.
 
<syntaxhighlight lang="bash">
 
root@imx8mq-voipac:~# i2cdetect -y 2
 
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
 
10: UU UU UU UU -- -- -- -- -- -- -- -- -- -- -- --
 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
30: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --
 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
70: -- -- -- -- -- -- -- --
 
</syntaxhighlight>
 
 
MINISASTOCSI  camera can be also connected to I2C2 interface by moving 0R resistors. However second camera connected on CSI-2 interface have same address 0x3c as MINISASTOCSI  camera connected on CSI-1 interface.
 
[[image:CSI1-I2C2 and I2C3.png|800px]]
 
 
== Modules listing ==
 
=== Kernel 4.1 ===
 
<syntaxhighlight lang="bash">
 
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
 
 
</syntaxhighlight>
 
 
== Resolution setting ==
 
The camera support video streaming formats 1080p (at 30 frames per second) and 720p (at 60 frames per second)
 
=== 1280x960 ===
 
<syntaxhighlight lang="bash">
 
echo 0 > /sys/bus/i2c/devices/1-0036/ov5647_mode
 
</syntaxhighlight>
 
 
=== 1280x720 ===
 
<syntaxhighlight lang="bash">
 
echo 1 > /sys/bus/i2c/devices/1-0036/ov5647_mode
 
</syntaxhighlight>
 
 
=== 1920x1080 ===
 
<syntaxhighlight lang="bash">
 
echo 2 > /sys/bus/i2c/devices/1-0036/ov5647_mode
 
</syntaxhighlight>
 
 
=== 640x480 ===
 
<syntaxhighlight lang="bash">
 
echo 3 > /sys/bus/i2c/devices/1-0036/ov5647_mode
 
</syntaxhighlight>
 
 
=== 1024x768 (default) ===
 
<syntaxhighlight lang="bash">
 
echo 4 > /sys/bus/i2c/devices/1-0036/ov5647_mode
 
</syntaxhighlight>
 
 
=== 960x720 ===
 
<syntaxhighlight lang="bash">
 
echo 5 > /sys/bus/i2c/devices/1-0036/ov5647_mode
 
</syntaxhighlight>
 
 
=== 640x480 (narrow angle of view) ===
 
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
echo 6 > /sys/bus/i2c/devices/1-0036/ov5647_mode
+
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 UU -- --
 +
        40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 +
        50: -- UU -- UU -- -- -- -- -- -- -- -- -- -- -- --
 +
        60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 +
        70: -- -- -- -- -- -- -- --
 +
        root@imx8mq-voipac:~#
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Gstreamer ==
+
==Gstreamer==
=== Capture single JPEG picture ===
+
===Capture single JPEG picture===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jp
+
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video1 ! jpegenc ! filesink location=sample_image_digi.jpeg
eg
 
 
Setting pipeline to PAUSED ...
 
Setting pipeline to PAUSED ...
 
Pipeline is live and does not need PREROLL ...
 
Pipeline is live and does not need PREROLL ...
 
Setting pipeline to PLAYING ...
 
Setting pipeline to PLAYING ...
 
New clock: GstSystemClock
 
New clock: GstSystemClock
[ 1301.273334] ov5640_mipi 2-003c: s_stream: 1
+
[ 1023.907274] ov5640_mipi 1-003c: s_stream: 1
Got EOS from element "pipeline0".[ 1303.353181] ov5640_mipi 2-003c: s_stream: 0
+
[ 1024.609769] skip frame 1
 +
Got EOS from element "pipeline0".[ 1026.497200] ov5640_mipi 1-003c: s_stream: 0
  
Execution ended after 0:00:02.649996154
+
Execution ended after 0:00:03.075026264
 
Setting pipeline to PAUSED ...
 
Setting pipeline to PAUSED ...
 
Setting pipeline to READY ...
 
Setting pipeline to READY ...
 
Setting pipeline to NULL ...
 
Setting pipeline to NULL ...
 
Freeing pipeline ...
 
Freeing pipeline ...
root@imx8mq-voipac:~# ls
 
sample_image.jpeg
 
root@imx8mq-voipac:~#
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
The image stored in local media with name sample_image.jpeg
+
The image stored in local media with name sample_image_digi.jpeg
  
=== Video preview ===
+
===Video preview===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! aut
+
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,framerate=30/1' ! autovideosink
ovideosink
 
 
Setting pipeline to PAUSED ...
 
Setting pipeline to PAUSED ...
 
Pipeline is live and does not need PREROLL ...
 
Pipeline is live and does not need PREROLL ...
 
Setting pipeline to PLAYING ...
 
Setting pipeline to PLAYING ...
 
New clock: GstSystemClock
 
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.817426914   433 0xaaaacb3d5c00 DEBUG            GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaacb4873c0 (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.817551951   433 0xaaaacb3d5c00 DEBUG            GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaacb487440 (GstVideoMeta) of size 112
0:00:00.843278592   469 0xaaaadc001c00 DEB[ 1415.898001] ov5640_mipi 2-003c: s_stream: 1
+
0:00:00.817603069   4[ 1575.384649] ov5640_mipi 1-003c: s_stream: 1
UG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaadc0624c0 (GstVideoMeta) of size 112
+
33 0xaaaacb3d5c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaacb4874c0 (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
+
0:00:00.817651068   433 0xaaaacb3d5c00 DEBUG            GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaacb487540 (GstVideoMeta) of size 112
[ 1416.119964] skip frame 1
+
[ 1576.002044] skip frame 1
 +
 
 +
CAPTURE INTERRUPTION:
 +
 
 +
[ 1582.847027] ov5640_mipi 1-003c: s_stream: 0
 +
 
 +
Execution ended after 0:00:08.249177743
 +
Setting pipeline to PAUSED ...
 +
Setting pipeline to READY ...
 +
0:00:08.326703325  433 0xaaaacb468180 DEBUG            GST_BUFFER gstbuffer.c:1448:gst_buffer_is_memory_range_writable: idx 0, length -1
 +
0:00:08.326764524  433 0xaaaacb468180 DEBUG            GST_BUFFER gstbuffer.c:1448:gst_buffer_is_memory_range_writable: idx 0, length -1
 +
0:00:08.326792003  433 0xaaaacb468180 DEBUG            GST_BUFFER gstbuffer.c:1448:gst_buffer_is_memory_range_writable: idx 0, length -1
 +
Setting pipeline to NULL ...
 +
Total showed frames (78), playing for (0:00:08.249372377), fps (9.455).
 +
Freeing pipeline ...
 +
 
 
</syntaxhighlight>
 
</syntaxhighlight>
The video stream from camera can be displayed on display/monitor
+
 
 +
Video should be displayed on video output (hdmi or lvds display)

Latest revision as of 18:06, 18 February 2025

Pcam-5C.png
Digilent Pcam 5C is a MIPI-CSI interface, 5 MP Fixed-Focus color camera connected to iMX Development Baseboard


Kernel detection

root@imx8mq-voipac:~# dmesg | grep ov56
[    2.383324] ov5640_mipi 1-003c: No pin available
[    2.387976] ov5640_mipi 1-003c: No sensor pwdn pin available
[    2.393683] ov5640_mipi 1-003c: No sensor reset pin available
[    2.399479] ov5640_regulator_enable: cannot get io voltage error - err:-517
[    3.018132] ov5640_mipi 1-003c: No pin available
[    3.033972] ov5640_mipi 1-003c: No sensor pwdn pin available
[    3.046488] ov5640_mipi 1-003c: No sensor reset pin available
[    3.062091] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator
[    3.072436] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator
[    4.325257] mxc-mipi-csi2_yav 30b60000.mipi_csi: Registered sensor subdevice: ov5640_mipi 1-003c
[    4.337288] ov5640_mipi 1-003c: Camera is found

I2C detection

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 UU -- --
        40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
        50: -- UU -- UU -- -- -- -- -- -- -- -- -- -- -- --
        60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
        70: -- -- -- -- -- -- -- --
        root@imx8mq-voipac:~#

Gstreamer

Capture single JPEG picture

root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 device=/dev/video1 ! jpegenc ! filesink location=sample_image_digi.jpeg
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[ 1023.907274] ov5640_mipi 1-003c: s_stream: 1
[ 1024.609769] skip frame 1
Got EOS from element "pipeline0".[ 1026.497200] ov5640_mipi 1-003c: s_stream: 0

Execution ended after 0:00:03.075026264
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

The image stored in local media with name sample_image_digi.jpeg

Video preview

root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src device=/dev/video1 ! 'video/x-raw,framerate=30/1' ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.817426914   433 0xaaaacb3d5c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaacb4873c0 (GstVideoMeta) of size 112
0:00:00.817551951   433 0xaaaacb3d5c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaacb487440 (GstVideoMeta) of size 112
0:00:00.817603069   4[ 1575.384649] ov5640_mipi 1-003c: s_stream: 1
33 0xaaaacb3d5c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaacb4874c0 (GstVideoMeta) of size 112
0:00:00.817651068   433 0xaaaacb3d5c00 DEBUG             GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaaacb487540 (GstVideoMeta) of size 112
[ 1576.002044] skip frame 1

CAPTURE INTERRUPTION:

[ 1582.847027] ov5640_mipi 1-003c: s_stream: 0

Execution ended after 0:00:08.249177743
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
0:00:08.326703325   433 0xaaaacb468180 DEBUG             GST_BUFFER gstbuffer.c:1448:gst_buffer_is_memory_range_writable: idx 0, length -1
0:00:08.326764524   433 0xaaaacb468180 DEBUG             GST_BUFFER gstbuffer.c:1448:gst_buffer_is_memory_range_writable: idx 0, length -1
0:00:08.326792003   433 0xaaaacb468180 DEBUG             GST_BUFFER gstbuffer.c:1448:gst_buffer_is_memory_range_writable: idx 0, length -1
Setting pipeline to NULL ...
Total showed frames (78), playing for (0:00:08.249372377), fps (9.455).
Freeing pipeline ...

Video should be displayed on video output (hdmi or lvds display)