MIPI-CSI是一种在嵌入式系统或移动设备中常见的摄像头接口,能够实现高速的图像数据传输。飞凌嵌入式最新推出的OK3576-C开发板拥有丰富的资源接口,其中支持5个CSI-2接口,意味着最多可同时支持5路摄像头的输入。
本篇内容就通过OK3576-C开发板为大家介绍一下RK3576处理器的Camera通路,以及如何配置MIPI-CSI摄像头的不同输出格式。
一、RK3576的camera通路
如果只有一个摄像头接入,则只开rkispx_vir0 。需要注意的是:
1. vicap和isp并没有对应关系;
2. 各个vir0/vir1这种关系本质是同一个硬件分时复用,效果等同。多个的时候尽量使用0,1,2 ... 去配置。
硬件通路框图如下:
有一个dcphy接口和两个dphy接口,接入路径如下:
单摄(接第一个dphy)
sensor0->csi2_dphy0->mipi1_csi2->rkcif_mipi_lvds1(sditf)->rkisp_vir0
双摄(接两个dphy)
sensor0->csi2_dphy0->mipi1_csi2->rkcif_mipi_lvds1(sditf)->rkisp_vir0
sensor1->csi2_dphy3->mipi3_csi2->rkcif_mipi_lvds3(sditf)->rkisp_vir1
三摄(接dcphy和2个dphy)
sensor0->csi2_dcphy0->mipi0_csi2->rkcif_mipi_lvds(sditf)->rkisp_vir0
sensor1->csi2_dphy0->mipi1_csi2->rkcif_mipi_lvds1(sditf)->rkisp_vir1
sensor2->csi2_dphy3->mipi3_csi2->rkcif_mipi_lvds3(sditf)->rkisp_vir2
五摄(接dcphy,将2个dphy拆分)
sensor0->csi2_dcphy0->mipi0_csi2->rkcif_mipi_lvds(sditf)->rkisp_vir0
sensor1->csi2_dphy1->mipi1_csi2->rkcif_mipi_lvds1(sditf)->rkisp_vir1
sensor2->csi2_dphy2->mipi2_csi2->rkcif_mipi_lvds2(sditf)->rkisp_vir2
sensor3->csi2_dphy4->mipi3_csi2->rkcif_mipi_lvds3(sditf)->rkisp_vir3
sensor4->csi2_dphy5->mipi4_csi2->rkcif_mipi_lvds4(sditf)->rkisp_vir4
下图是camera各个通路的连接情况:
(注:如果是RGB数据输入后面还需要跟rkisp_virx)
二、不同平台的sensor链路情况
yuv422/rgb888输入
对于yuv422/rgb888输入的情况,常见的有三种情况:
1、自带isp的或者客户外接isp的摄像头。输入yuv422格式;
2、hdmi转mipi csi输入。一般如rk628d/f,lt6911xxx等芯片,常见的是转换成yuv422,也可以rgb888格式;
3、多路ahd,serdes。这种一个mipi口,最多可以支持4个虚拟通道,对于这几种情况,是不需要走isp的,只需要到cif即可,所以链路为 :
sensor->csi2_dphyX->mipiX_csi2->rkcif_mipi_lvdsX rkcif_mipi_lvdsx_sditf
以及isp节点有可以disabled掉,里面的X根据不同平台不同硬件的接法而定。
抓图使用的节点为rkcif_mipi_lvdsX对应的第一个video节点,这个可以通过media-ctl看拓扑得到,比如OK3576-C开发板上的OV5645摄像头,挂载在media1节点。
root@ok3576-buildroot:/# media-ctl -p -d /dev/media1 Media controller API version 6.1.57 driver rkcif model rkcif-mipi-lvds1 serial bus info platform:r