RK3576 Camera:资源介绍

RK3576是RK今年上市的中高端旗舰芯片,定位弱于RK3588。这篇文章主要分享一下RK3576这颗主控芯片的camera资源。

(1)RK3576 camera资源

①RK3576 camera硬件框图

RK3576的camera硬件框图如图所示,拥有一路4lane的DCPHY,2路4lane的DPHY,可以拆分成4路2lane的模式,还有一路DVP并口,可以支持BT1120/BT656/BT601接口视频数据。有一个ISP控制器。

②MIPI-CSI资源

RK3576 MIPI-CSI资源如下,有1路DCPHY,2路DPHY,其中2路DPHY都可以拆成2lane+2lane的模式使用,共计5个MIPI-CSI HOST,可支持接入5个MIPI camera设备,2lane的场景,最大带宽为5G/bps,4lane场景,最大带宽为10Gbps,YUV422的图像输入的话,例如HDMIIN转接芯片,可以支持到4K60。DCPHY可以作为DPHY 4lane输入也可以作为CPHY 3trios输入,CPHY的场景带宽可达到17Gbps。

typeMAX bandwidthnummode
DPHYDPHY-v1.22.5Gbps/lane24lane or 2lane+2lane
DCPHYDPHY-v2.0 or CPHY-v1.1

2.5Gbps/lane

2.5Gsps/trios

1DPHY or CPHY
③VICAP资源
接口数量输入输出
vicap

5个MIPI

1个DVP

MIPI CSI: RAW8/10/12/14/16, RGB888, YUV422 8bit, YUV422 8bit interlaced, YUV420 8bit, Legacy YUV420 8bit

DVP:BT.601 RAW8/10/12 YCbCr 422 8-bit input

BT.656 YCbCr 422 8-bit progressive/interlaced input

BT.1120 YCbCr 422 8-bit progressive/interlaced input

NV16/NV12/YUV400/YUYV

紧凑/非紧凑 RAW

RGB888

④ISP资源
工作模式吞吐率最大分辨率输入格式
单cis

16M@30fps

48M@10fps

4672x3504

8064x6048

VICAP: raw8/raw10/raw12
⑤VPSS

看RK3576的描述,在ISP后级应该还有VPSS模块,可以做图像处理,但是目前RK官方似乎也没有描述RK3576该模块的功能以及使用方法。以下是网上海思VPSS模块的描述。

根据网上对海思VPSS模块的描述:VPSS(Video Process Sub-System)支持对一幅输入图像进行统一预处理,如去噪、去隔行等,然后再对各通道分别进行缩放、锐化等处理,最后输出多种不同分辨率的图像。

根据RK的描述,应该是可以支持旋转镜像裁减多路输出等功能。

⑥最多支持camera数量

RK3576最多可以支持5个MIPIcamera,一个DVP的camera,对应链接框图如下,两路DPHY分别使用2lane+2lane的方式,如果是YUV的sensor,仅需要链接到rkcif_mipi_lvds节点即可,不需要接到stdif虚拟节点。

若采用4lane的方式链接如下:

(2)dts配置

根据上述,RK3576至多可以同时接入5路 MIPI摄像头,下篇文章再介绍。可参考如下:

&csi2_dcphy0 {
	status = "okay";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;
		port@0 {
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <0>;

			mipi_in_gc05a2: endpoint@1 {
				reg = <1>;
				remote-endpoint = <&gc05a2_out0>;
				data-lanes = <1 2 3 4>;
			};

		};
		port@1 {
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <0>;

			csidcphy0_out: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&mipi0_csi2_input>;
			};
		};
	};
};

&csi2_dphy3 {
	status = "okay";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;
		port@0 {
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <0>;

			mipi_in_s5k3l8xx: endpoint@1 {
				reg = <1>;
				remote-endpoint = <&s5k3l8xx_out0>;
				data-lanes = <1 2 3 4>;
			};

			mipi_in_ov16880: endpoint@2 {
				reg = <2>;
				remote-endpoint = <&ov16880_out0>;
				data-lanes = <1 2 3 4>;
			};
		};
		port@1 {
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <0>;

			csidphy3_out: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&mipi3_csi2_input>;
			};
		};
	};
};

&csi2_dphy0_hw {
	status = "okay";
};

&csi2_dphy1_hw {
	status = "okay";
};

&i2c4 {
	status = "okay";
	pinctrl-0 = <&i2c4m3_xfer>;

	gc05a2: gc05a2@37 {
		compatible = "galaxycore,gc05a2";
		status = "okay";
		reg = <0x37>;
		clocks = <&cru CLK_MIPI_CAMERAOUT_M0>;
		clock-names = "xvclk";
		pinctrl-names = "default";
		pinctrl-0 = <&cam_clk0m0_clk0>;
		pwdn-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>;
		avdd-supply = <&vcc_mipipwr>;
		dovdd-supply = <&vcc_1v8_cam>;
		//dvdd-supply = <&vcc1v2_dvp>;
		rockchip,camera-module-index = <1>;
		rockchip,camera-module-facing = "front";
		rockchip,camera-module-name = "KYT-11210-V2";
		rockchip,camera-module-lens-name = "default";
		port {
			gc05a2_out0: endpoint {
				remote-endpoint = <&mipi_in_gc05a2>;
				data-lanes = <1 2>;
			};
		};
	};
};

&i2c5 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&i2c5m3_xfer>;

	ces6301: ces6301@c {
		compatible = "chipextra,ces6301";
		status = "okay";
		reg = <0x0c>;
		avdd-supply = <&vcc_mipipwr>;
		rockchip,vcm-max-current = <120>;
		rockchip,vcm-start-current = <10>;
		rockchip,vcm-rated-current = <85>;
		rockchip,vcm-step-mode = <9>;
		rockchip,camera-module-index = <0>;
		rockchip,camera-module-facing = "back";
	};

	s5k3l8xx: s5k3l8xx@10 {
		status = "okay";
		compatible = "samsung,s5k3l8xx";
		reg = <0x10>;
		clocks = <&cru CLK_MIPI_CAMERAOUT_M2>;
		clock-names = "xvclk";
		pinctrl-names = "default";
		pinctrl-0 = <&cam_clk2m0_clk2>;
		pwdn-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
		avdd-supply = <&vcc_mipipwr>;
		dovdd-supply = <&vcc_1v8_cam>;
		//dvdd-supply = <&vcc1v2_dvp>;
		rockchip,camera-module-index = <0>;
		rockchip,camera-module-facing = "back";
		rockchip,camera-module-name = "KYT-11097-B-V1";
		rockchip,camera-module-lens-name = "default";
		lens-focus = <&ces6301>;
		flash-leds = <&flash_rgb13h>;
		port {
			s5k3l8xx_out0: endpoint {
				remote-endpoint = <&mipi_in_s5k3l8xx>;
				data-lanes = <1 2 3 4>;
			};
		};
	};

	ov16880: ov16880@36 {
		status = "okay";
		compatible = "ovti,ov16880";
		reg = <0x36>;
		clocks = <&cru CLK_MIPI_CAMERAOUT_M2>;
		clock-names = "xvclk";
		pinctrl-names = "default";
		pinctrl-0 = <&cam_clk2m0_clk2>;
		pwdn-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
		avdd-supply = <&vcc_mipipwr>;
		dovdd-supply = <&vcc_1v8_cam>;
		//dvdd-supply = <&vcc1v2_dvp>;
		rockchip,camera-module-index = <0>;
		rockchip,camera-module-facing = "back";
		rockchip,camera-module-name = "KYT-11379-V1";
		rockchip,camera-module-lens-name = "default";
		lens-focus = <&ces6301>;
		flash-leds = <&flash_rgb13h>;
		port {
			ov16880_out0: endpoint {
				remote-endpoint = <&mipi_in_ov16880>;
				data-lanes = <1 2 3 4>;
			};
		};
	};
};

&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 = <&csidcphy0_out>;
			};
		};

		port@1 {
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <0>;

			mipi0_csi2_output: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&cif_mipi_in0>;
			};
		};
	};
};

&mipi3_csi2 {
	status = "okay";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <0>;

			mipi3_csi2_input: endpoint@1 {
				reg = <1>;
				remote-endpoint = <&csidphy3_out>;
			};
		};

		port@1 {
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <0>;

			mipi3_csi2_output: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&cif_mipi3_in0>;
			};
		};
	};
};

&pinctrl {
	cam {
		mipicam_pwr: mipicam-pwr {
			rockchip,pins =
				/* camera power en */
				<3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		flash_led_gpios: flash-led {
			rockchip,pins =
				/* flash led enable */
				<2 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

&rkcif {
	status = "okay";
};

&rkcif_mipi_lvds {
	status = "okay";

	port {
		cif_mipi_in0: endpoint {
			remote-endpoint = <&mipi0_csi2_output>;
		};
	};
};

&rkcif_mipi_lvds_sditf {
	status = "okay";

	port {
		mipi_lvds_sditf: endpoint {
			remote-endpoint = <&isp_vir0_in0>;
		};
	};
};

&rkcif_mipi_lvds3 {
	status = "okay";

	port {
		cif_mipi3_in0: endpoint {
			remote-endpoint = <&mipi3_csi2_output>;
		};
	};
};

&rkcif_mipi_lvds3_sditf {
	status = "okay";

	port {
		mipi_lvds3_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_lvds3_sditf>;
		};
	};
};

(3)总结

后续继续介绍详细的dts配置以及调试经验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud Consul 4.1.1

该项目通过自动配置和绑定到 Spring 环境和其他 Spring 编程模型习惯用法&#xff0c;为 Spring Boot 应用程序提供 Consul 集成。通过一些简单的注释&#xff0c;您可以快速启用和配置应用程序内的常见模式&#xff0c;并使用基于 Consul 的组件构建大型分布式系统。提供的模式…

银河麒麟v10 重装系统恢复原home分区

现象&#xff1a;系统还原后在锁屏状态下输入密码后闪退回锁屏 ctrl alt f1切到命令行模式&#xff0c;查看/home目录下的用户文件夹里无文件 1、blkid找到data分区的uuid和设备编号&#xff0c;记录下来&#xff1b; 2、sudo mount /dev/sda5 3、sudo vi /etc/fstab&#xf…

JAVA中类和对象(承接上次的补充)

目录&#xff1a; 一.static修饰成员方法 二.static成员变量初始化 三.代码块 一.static修饰成员方法: 1.一般类中的数据成员都设置为 private &#xff0c;而成员方法设置为 public &#xff0c; 问&#xff1a;那设置之后&#xff0c;Student类中&#xff0c;被Student修饰…

数据结构——01-抽奖数人-链表-实验题目与解答

数据结构抽奖数人链表实验题目与解答 一、**实验题目** 抽奖游戏&#xff1a; n个人围成一圈&#xff0c;由第一个人开始&#xff0c;依次报数&#xff0c;数到第m人&#xff0c;便抽出来作为中奖人&#xff0c;然后从他的下一个人数起&#xff0c;数到第m人&#xff0c;再抽…

VALSE 2024合合信息 | 文档解析与向量化技术加速多模态大模型训练与应用

第十四届视觉与学习青年学者研讨会&#xff08;VALSE 2024&#xff09;近期在重庆悦来国际会议中心圆满举行&#xff0c;由中国人工智能学会&#xff08;CAAI&#xff09;、中国图象图形学会&#xff08;CSIG&#xff09;、中国民族贸易促进会主办&#xff0c;重庆邮电大学承办…

goconvey测试框架的使用

尽管Golang已经内置了功能强大的testing包&#xff0c;其易用性令人称赞。然而&#xff0c;当我们希望更直观地处理和判断测试结果时&#xff0c;结合使用goconvey能为我们提供极大的便利。goconvey不仅为我们提供了丰富的断言函数&#xff0c;这些函数还极大地方便了我们在进行…

Web测试是在测什么?容易被忽视的小细节总结!

随着Internet和Intranet/Extranet的快速增长&#xff0c;Web已经对商业、工业、银行、财政、教育、政府和娱乐及我们的工作和生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上&#xff0c;电子商务迅速增长&#xff0c;早已超过了国界。范围广泛的、复杂…

C# XPTable in .net6(XPTable控件使用说明八)

经过作者schoetbi、armin-pfaeffle的努力&#xff0c;XPTable已经可以在 winform .net6 .net8的环境下使用&#xff0c;版本升级到了2.0&#xff0c;这样就可以在winform下同时使用XPTABLE和EFcore, 这样就可以解决大部分的场景了。

网络工程师----第二十八天

计算机基础 第五章&#xff1a;运输层 运输层的两个协议&#xff1a; 1、传输控制协议TCP&#xff1a; TCP最主要的特点&#xff1a; (1)TCP是面向连接的。应用程序在使用TCP协议之前&#xff0c;必须先建立连接。在传送数据完毕后&#xff0c;必须释放已经建立的TCP连接。…

【数据分析面试】43.寻找给小费最多的客人(Python:字典用法)

题目&#xff1a; 寻找给小费最多的客人 &#xff08;Python) 给定两个非空列表user_ids和tips&#xff0c;编写一个名为most_tips的函数&#xff0c;用于找到给小费最多的客户。 示例&#xff1a; 输入&#xff1a; user_ids [103, 105, 105, 107, 106, 103, 102, 108, 1…

【基于 PyTorch 的 Python 深度学习】5 机器学习基础(1)

前言 文章性质&#xff1a;学习笔记 &#x1f4d6; 学习资料&#xff1a;吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容&#xff1a;根据学习资料撰写的学习笔记&#xff0c;该篇主要介绍了机器学习的基本任务、机器学习的一般流程&…

5G消息和5G阅信的释义与区别 | 赛邮科普

5G消息和5G阅信的释义与区别 | 赛邮科普 在 5G 技术全面普及的当下&#xff0c;历史悠久的短信服务也迎来了前所未有的变革。5G 阅信和 5G 消息就是应运而生的两种短信形态&#xff0c;为企业和消费者带来更加丰富的功能和更加优质的体验。 这两个产品名字和形态都比较接近&am…

有奖调研 | OpenSCA开源社区用户调研问卷

调研背景&#xff1a; 亲爱的OpenSCA开源社区用户&#xff0c;感谢您一路以来的支持与相伴。随着OpenSCA开源社区的不断发展&#xff0c;我们持续专注安全开发与开源治理实践&#xff0c;为全球用户提供一站式审查治理、SaaS云分析和精准情报预警的开源数字供应链安全赋能。 为…

【离散数学】偏序关系中盖住关系的求取及格论中有补格的判定(c语言实现)

实验要求 求n的因子函数 我们将n的因子存入数组中&#xff0c;n的因子就是可以整除n的数&#xff0c;所以我们通过一个for循环来求。返回因子个数。 //求n的因子,返回因子个数 int factors(int arr[], int n) {int j 0;for (int i 1; i < n; i){if (n % i 0){arr[j] i…

财务风险管理:背后真相及应对策略

市场经济蓬勃发展&#xff0c;机遇与风险并存也是市场经济的一项重要特征。而财务状况的好坏影响着一个企业的发展前景&#xff0c;作为市场经济的必然产物&#xff0c;财务风险贯穿于企业的一切生产经营活动中&#xff0c;无法预知也不以人的意志为转移。 一、企业财务风险的特…

unordered_set(无序容器)

特点 它可以存储不重复的元素集合。容器的特点是内部元素没有特定的顺序&#xff0c;因此查找、插入和删除操作的平均时间复杂度是O(1)。unordered_set是基于哈希表实现的&#xff0c;所以在使用时需要提供一个哈希函数和相等函数。 成员函数 查找&#xff08;只能查找元素是否…

最长数字子串-第12届蓝桥杯国赛Python真题解析

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第62讲。 最长数字子串&…

软件验收测试包括哪些类型

在软件开发过程中&#xff0c;验收测试是一个至关重要的环节&#xff0c;它确保了软件的质量、功能性和用户体验符合预期。验收测试主要关注于软件是否满足用户需求和业务目标&#xff0c;从而确保软件能够顺利交付并投入使用。本文将介绍软件验收测试的主要类型及其关键要素。…

display:flex align-items:center无效的不一样的解决思路

写H5的时候&#xff0c;希望两个元素在div中垂直居中&#xff0c;但是设置align-items:center无效&#xff0c;最终排查原因是引入三方css影响了align-items:center。 具体分析如下&#xff0c;想让搜索图标和input在div里水平居中&#xff1a; 布局如下&#xff1a; <div…

JAVA实验项目(一):JAVA面向对象特征性实验

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…