1. Camera 使用

  • 接口效果图

_images/usage_camera_mipicsi.jpg

1.1. PHY 介绍

RK3576 芯片有 1 个 DCPHY 和 2 个 DPHY, 两个 DPHY 可以工作在两个模式: full mode 和 split mode。DCPHY 则只有 full mode。

简单点来讲,如果用单目摄像头我们可以配置 full mode,若使用双目摄像头我们可以配置 split mode。

1.2. Full Mode 配置

AIO-3576JD4 有 3 个摄像头接口,他们的配置链路如下:

MIPI-CSI0: csi2_dphy0 --> mipi1_csi2 --> rkcif_mipi_lvds1
MIPI-CSI1: csi2_dphy3 --> mipi3_csi2 --> rkcif_mipi_lvds3
MIPI-CSI2: csi2_dcphy0 --> mipi0_csi2 --> rkcif_mipi_lvds

详情参考设备树:

rk3576-firefly-aio-3576jd4-cam0-8ms1m.dtsi
rk3576-firefly-aio-3576jd4-cam1-8ms1m.dtsi
rk3576-firefly-aio-3576jd4-cam2-8ms1m.dtsi

其中 CAM0 和 CAM1 不能同时使用,需要做切换,见 rk3576-firefly-aio-3576jd4.dts 中

#define CAM1_OR_CAM0 0 /* 1 = CAM1, 0 = CAM0 */

1.3. Camera底层调试

使用v4l2-ctl抓取camera数据帧

v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080 --stream-to=/data/out.yuv

把out.yuv文件拷贝出来通过ubuntu去查看

ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 out.yuv

1.4. Android 系统使用 Camera 应用

除了官方默认支持的摄像头外,Android系统使用camera的apk打开摄像头都需要配置camera3_profiles*.xml,具体可参考Android SDK hardware/rockchip/camera/etc/camera目录下的文件

1.5. Linux 系统预览摄像头

Ubuntu 固件可以使用如下脚本进行预览。

#!/bin/bash

export DISPLAY=:0.0
export XDG_RUNTIME_DIR=/run/user/1000
echo "Start MIPI CSI Camera Preview!"

gst-launch-1.0 v4l2src device=/dev/video0 ! queue ! video/x-raw,width=800,height=600 ! videoconvert ! xvimagesink