完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
MIPI CSI用法
RK3568平台仅有一个标准物理mipi csi2 dphy,可以工作在full mode 和split mode两个模式, 拆分为csi2_dphy0/csi2_dphy1/csi2_dphy2三个逻辑dphy(参见rk3568.dtsi) 简单点来讲,如果用单目摄像头配置为full mode,若使用双目摄像头配置为split mode Full Mode
Split Mode
Full Mode设备树配置要点 根据板子原理图的MIPI CSI接口找到sensor是挂在哪路I2C总线上,然后在对应的I2C节点配置camera节点,正确配置camera模组的I2C设备地址、引脚等属性。如下ROC-RK3568-PC的xc7160配置: &i2c4 { status = "okay"; gc8034: gc8034@37 { compatible = "galaxycore,gc8034"; status = "disabled"; reg = <0x37>; clocks = <&cru 214>; clock-names = "xvclk"; pinctrl-names = "default"; pinctrl-0 = <&cif_clk>; reset-gpios = <&gpio3 14 1>; pwdn-gpios = <&gpio4 12 1>; rockchip,grf = <&grf>; power-domains = <&power 8>; rockchip,camera-module-index = <0>; rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "RK-CMK-8M-2-v1"; rockchip,camera-module-lens-name = "CK8401"; port { gc8034_out: endpoint { remote-endpoint = <&mipi_in_ucam1>; data-lanes = <1 2 3 4>; }; }; }; }; csi2_dphy0相关配置 csi2_dphy0与csi2_dphy1/csi2_dphy2互斥,不可同时使用。另外需要使能csi2_dphy_hw节点 &csi2_dphy0 { status = "okay"; /* * dphy0 only used for full mode, * full mode and split mode are mutually exclusive */ ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; ... mipi_in_ucam4: endpoint@5 { reg = <5>; remote-endpoint = <&xc7160_out>; data-lanes = <1 2 3 4>; }; }; port@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; csidphy_out: endpoint@0 { reg = <0>; remote-endpoint = <&isp0_in>; }; }; }; }; &csi2_dphy_hw { status = "okay"; }; &csi2_dphy1 { status = "disabled"; }; &csi2_dphy2 { status = "disabled"; }; isp相关配置 &rkisp { status = "okay"; }; &rkisp_mmu { status = "okay"; }; &rkisp_vir0 { status = "okay"; port { #address-cells = <1>; #size-cells = <0>; isp0_in: endpoint@0 { reg = <0>; remote-endpoint = <&csidphy_out>; }; }; }; Split Mode设备树配置要点 我们需要根据板子原理图的MIPI CSI接口找到两个sensor是挂在哪个I2C总线上,然后在对应的I2C节点配置两个camera节点,正确配置camera模组的I2C设备地址、引脚等属性。如下ROC-RK3568-PC的ov02k10/ov9281配置: &i2c4 { status = "okay"; ov02k10: ov02k10@6c { status = "okay"; compatible = "ovti,ov02k10"; reg = <0x6c>; avdd-supply = <&vcc_camera>; power-domains = <&power 8>; clock-names = "xvclk"; pinctrl-names = "default"; clocks = <&pmucru 28>; pinctrl-0 = <&refclk_pins>; power-gpios = <&gpio0 29 0>; pwdn-gpios = <&gpio4 13 1>; firefly,clkout-enabled-index = <1>; rockchip,camera-module-index = <0>; rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "YT-RV1109-2-V1"; rockchip,camera-module-lens-name = "40IR-2MP-F20"; port { ov02k10_out: endpoint { remote-endpoint = <&dphy1_in>; data-lanes = <1 2>; }; }; }; ov9281: ov9281@c0{ status = "okay"; compatible = "ovti,ov9281"; reg = <0xc0>; avdd-supply = <&vcc_camera>; power-domains = <&power 8>; clock-names = "xvclk"; pinctrl-names = "default"; flash-leds = <&flash_led>; pwdn-gpios = <&gpio4 12 0>; firefly,clkout-enabled-index = <0>; rockchip,camera-module-index = <1>; rockchip,camera-module-facing = "back"; rockchip,camera-module-name = "YT-RV1109-2-V1"; rockchip,camera-module-lens-name = "40IR-2MP-F20"; port { ov9281_out: endpoint { remote-endpoint = <&dphy2_in>; data-lanes = <1 2>; }; }; }; }; csi2_dphy1/csi2_dphy2相关配置 &csi2_dphy0 { status = "disabled"; }; &csi2_dphy1 { status = "okay"; /* * dphy1 only used for split mode, * can be used concurrently with dphy2 * full mode and split mode are mutually exclusive */ ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; dphy1_in: endpoint@1 { reg = <1>; remote-endpoint = <&gc2053_out>; data-lanes = <1 2>; }; }; port@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; dphy1_out: endpoint@1 { reg = <1>; remote-endpoint = <&isp0_in>; }; }; }; }; &csi2_dphy2 { status = "okay"; /* * dphy2 only used for split mode, * can be used concurrently with dphy1 * full mode and split mode are mutually exclusive */ ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; dphy2_in: endpoint@1 { reg = <1>; remote-endpoint = <&gc2093_out>; data-lanes = <1 2>; }; }; port@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; dphy2_out: endpoint@1 { reg = <1>; remote-endpoint = <&mipi_csi2_input>; }; }; }; }; &csi2_dphy_hw { status = "okay"; }; &mipi_csi2 { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; mipi_csi2_input: endpoint@1 { reg = <1>; remote-endpoint = <&dphy2_out>; data-lanes = <1 2>; }; }; port@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; mipi_csi2_output: endpoint@0 { reg = <0>; remote-endpoint = <&cif_mipi_in>; data-lanes = <1 2>; }; }; }; }; &rkcif_mipi_lvds { status = "okay"; port { cif_mipi_in: endpoint { remote-endpoint = <&mipi_csi2_output>; data-lanes = <1 2>; }; }; }; &rkcif_mipi_lvds_sditf { status = "okay"; port { mipi_lvds_sditf: endpoint { remote-endpoint = <&isp1_in>; data-lanes = <1 2>; }; }; }; isp相关配置 &rkisp { status = "okay"; }; &rkisp_mmu { status = "okay"; }; &rkisp_vir0 { status = "okay"; port { #address-cells = <1>; #size-cells = <0>; isp0_in: endpoint@0 { reg = <0>; remote-endpoint = <&dphy1_out>; }; }; }; &rkisp_vir1 { status = "okay"; port { reg = <0>; #address-cells = <1>; #size-cells = <0>; isp1_in: endpoint@0 { reg = <0>; remote-endpoint = <&mipi_lvds_sditf>; }; }; }; &rkcif_mmu { status = "okay"; }; &rkcif { status = "okay"; }; IQ文件 raw摄像头支持的iq文件路径external/camera_engine_rkaiq/iqfiles/isp21, 与以前不一样的地方是iq文件不再采用.xml的方式,而是采用.json的方式。虽有提供xml转json的工具, 但isp20的xml配置转换后也不适用isp21。 若使用raw摄像头sensor,请留意isp21目录所支持的iq文件 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
1760 浏览 0 评论
2096 浏览 1 评论
1771 浏览 1 评论
3106 浏览 1 评论
4025 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-11 19:38 , Processed in 0.414681 second(s), Total 39, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号