这篇文章给大家介绍一下RK新的一颗RK3562的camera资源以及MIPI的配置。
目录
(1)RK3562 camera资源
①RK3562 camera硬件框图
②MIPI-CSI资源
③VICAP资源
④ISP资源
⑤最多支持camera数量
(2)dts配置
(3)总结
(1)RK3562 camera资源
①RK3562 camera硬件框图
RK3562 camera 资源硬件如下所示,拥有2路DPHY,4路CSI HOST,一个vicap控制器,1个isp控制器。 其中2路DPHY可以分解成4x2lane的模式工作。
这边需要注意的是,RK3562不支持DVP接口。
②MIPI-CSI资源
RK3562的MIPI-CSI资源如下:
Type | MAX bandwidth | BUM | Mode | |
DPHY | DPHY-v1.2 | 2.5G/bps x 4lane | 2 | 4lane or 2x2lane |
RK3562有2个4lane的DPHY,DPHY可以拆分模式按照4个2lane进行工作,有4个CSI-HOST工作,总计可以接入4路MIPI camera。2lane最大带宽是5G。
③VICAP资源
接口 | 数量 | 输入 | 输出 |
VICAP | 1 | MIPI CSI 4路IDs虚拟通道 MIPI CSI RAW8/10/12/14, YUV422 MIPI DSI RGB888 | NV16/NV12/YUV400/YUYV 紧凑/非紧凑 RAW RGB888 |
④ISP资源
RK3562 的ISP属于RK ISP v3.2 lite版本,拥有1个ISP,最高处理13M30的数据量。
工作模式 | 吞吐率 | 最大分辨率 | 输入格式 |
单CIS | 13M@30fps | 4224x3136 | VICAP: raw8/raw10/raw12 |
多路camera的应用时,只要总计吞吐率小于13M@30即可。
⑤最多支持camera数量
根据上述,RK3562有4个MIPI-CSI接口,最多可以支持4路2lane的camera。4路camera的连接框图如下所示:
(2)dts配置
根据上述,RK3562至多可以同时接入4路 2lane的MIPI摄像头,这边先配置场景的2路camera前后摄切换的场景,2路双摄或者4路同时的配置,下篇文章再介绍。
两路前后摄切换配置如下:
ov13855 -> csi2_dphy0 -> mipi0_csi2 -> rkcif_mipi_lvds...->rkisp_vir0
gc8034 -> csi2_dphy4 -> mipi2_csi2 -> rkcif_mipi_lvds2...->rkisp_vir0
&csi2_dphy0 {status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;mipi_in_ucam0: endpoint@1 {reg = <1>;remote-endpoint = <&ov13855_out0>;data-lanes = <1 2 3 4>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;csidphy0_out: endpoint@0 {reg = <0>;remote-endpoint = <&mipi0_csi2_input>;data-lanes = <1 2 3 4>;};};};
};&csi2_dphy4 {status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;mipi_in_ucam1: endpoint@1 {reg = <1>;remote-endpoint = <&gc8034_out0>;data-lanes = <1 2>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;csidphy4_out: endpoint@0 {reg = <0>;remote-endpoint = <&mipi2_csi2_input>;data-lanes = <1 2>;};};};
};&i2c4 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&i2c4m0_xfer>;dw9763: dw9763@c {compatible = "dongwoon,dw9763";status = "okay";reg = <0x0c>;rockchip,vcm-max-current = <120>;rockchip,vcm-start-current = <20>;rockchip,vcm-rated-current = <90>;rockchip,vcm-step-mode = <3>;rockchip,vcm-t-src = <0x20>;rockchip,vcm-t-div = <1>;rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";};ov13855: ov13855@36 {status = "okay";compatible = "ovti,ov13855";reg = <0x36>;clocks = <&cru CLK_CAM0_OUT2IO>;clock-names = "xvclk";pwdn-gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_HIGH>;avdd-supply = <&vcc2v8_dvp>;dovdd-supply = <&vcc_mipipwr>;dvdd-supply = <&vcc1v2_dvp>;rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "KYT-10203-v1";rockchip,camera-module-lens-name = "default";lens-focus = <&dw9763>;port {ov13855_out0: endpoint {remote-endpoint = <&mipi_in_ucam0>;data-lanes = <1 2 3 4>;};};};gc8034: gc8034@37 {compatible = "galaxycore,gc8034";status = "okay";reg = <0x37>;clocks = <&cru CLK_CAM0_OUT2IO>;clock-names = "xvclk";pwdn-gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>;avdd-supply = <&vcc2v8_dvp>;dovdd-supply = <&vcc_mipipwr>;dvdd-supply = <&vcc1v2_dvp>;rockchip,camera-module-index = <1>;rockchip,camera-module-facing = "front";rockchip,camera-module-name = "KYT-10203-v1";rockchip,camera-module-lens-name = "default";port {gc8034_out0: endpoint {remote-endpoint = <&mipi_in_ucam1>;data-lanes = <1 2>;};};};
};&csi2_dphy0_hw {status = "okay";
};&csi2_dphy1_hw {status = "okay";
};&mipi0_csi2 {status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;mipi0_csi2_input: endpoint@1 {reg = <1>;remote-endpoint = <&csidphy0_out>;data-lanes = <1 2 3 4>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;mipi0_csi2_output: endpoint@0 {reg = <0>;remote-endpoint = <&cif_mipi_in>;data-lanes = <1 2 3 4>;};};};
};&mipi2_csi2 {status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;mipi2_csi2_input: endpoint@1 {reg = <1>;remote-endpoint = <&csidphy4_out>;data-lanes = <1 2>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;mipi2_csi2_output: endpoint@0 {reg = <0>;remote-endpoint = <&cif_mipi_in2>;data-lanes = <1 2>;};};};
};&rkcif {status = "okay";pinctrl-names = "default";pinctrl-0 = <&camm0_clk0_out>;
};&rkcif_mipi_lvds {status = "okay";port {cif_mipi_in: endpoint {remote-endpoint = <&mipi0_csi2_output>;};};
};&rkcif_mipi_lvds2 {status = "okay";port {cif_mipi_in2: endpoint {remote-endpoint = <&mipi2_csi2_output>;};};
};&rkcif_mipi_lvds_sditf {status = "okay";port {mipi_lvds_sditf: endpoint {remote-endpoint = <&isp_vir0_in0>;};};
};&rkcif_mipi_lvds2_sditf {status = "okay";port {mipi_lvds2_sditf: endpoint {remote-endpoint = <&isp_vir0_in1>;};};
};&rkcif_mmu {status = "okay";
};&rkisp {status = "okay";
};&rkisp_mmu {status = "okay";
};&rkisp_vir0 {status = "okay";port {#address-cells = <1>;#size-cells = <0>;isp_vir0_in0: endpoint@0 {reg = <0>;remote-endpoint = <&mipi_lvds_sditf>;};isp_vir0_in1: endpoint@1 {reg = <1>;remote-endpoint = <&mipi_lvds2_sditf>;};};
};&pinctrl {cam {mipicam_pwr: mipicam-pwr {rockchip,pins =/* camera power en */<3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;};};
};
(3)总结
RK3562只有MIPI接口,配置起来比较简单,只需要注意4lane的使用和2x2lane 的使用区别,下次再讲一下RK3562多摄的配置。