rk3568点亮LCD(RGB)

news2025/1/15 16:54:42

rk3568 Android11/12 调试 RGB 屏

RGB一般是指RGB色彩模型(RGB color model),是工业界的一种颜色标准。RGB接口占用的资源较多,所以这个接口的LCD刷新率非常快,软件控制也比较简单。缺点是控制需要增加电路,软件初始化需要增加程序,占用资源较多;时钟频率要设置合适,否则不会显示内容。


提示:RGB屏幕参数要求比较严苛,须反调整。

文章目录

  • rk3568 Android11/12 调试 RGB 屏
  • 圈重点 看想学
  • 1. 核查原理图,适配RGB硬件
    • 1.1 核查原理图,适配RGB硬件
    • 1.2 RGB 屏参调整
    • 1.3 查GPIO复用
  • Tips
  • 总结


圈重点 看想学

  1. rk3568 适配RGB屏
  2. 调整屏参

1. 核查原理图,适配RGB硬件

  • rk3568 并口 RGB 屏幕使用引脚
    rk3568-lcdc

  • LCD 屏幕硬件参数
    LCD-rgb手册- LCD 屏幕排线定义
    LCD-rgb-pinsLCD-rgb-pins由 LCD pins定义可以确定屏幕需要初始化代码,并且为SPI协议;集成触摸盖板。

1.1 核查原理图,适配RGB硬件

核对原理图中的LCD 的供电、复位以及足够多的GPIO复用,此处不再赘述。屏幕背光与常规平无异,使用PWM控制信号且带有供电使能。相信大多数小伙伴已经掌握相关匹配方法。初始化代码仅仅适配本文中用到的屏幕,需要点屏的小伙伴可找供应商所要相关资料。

/ {
	panel: panel {
		compatible = "simple-panel";
		bus-format = <MEDIA_BUS_FMT_RGB666_1X18>;
		backlight = <&backlight>;
		enable-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
		enable-delay-ms = <20>;
		reset-gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_LOW>;
		reset-delay-ms = <10>;
		prepare-delay-ms = <20>;
		unprepare-delay-ms = <20>;
		disable-delay-ms = <20>;
		/* spi-sdo-gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; */
		spi-sdi-gpios = <&gpio4 RK_PC3 GPIO_ACTIVE_HIGH>;
		spi-scl-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;
		spi-cs-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
		width-mm = <43>;
		height-mm = <73>;
		pinctrl-names = "default";
		pinctrl-0 = <&spi_init_cmd>;
		rockchip,cmd-type = "spi";

		/* type:0 is cmd, 1 is data */
		panel-init-sequence = [
			/* type delay num val1 val2 val3 */
			  00   00  01  e0
			  01   00  01  00
			  01   00  01  07
			  01   00  01  0f
			  01   00  01  0d
			  01   00  01  1b
			  01   00  01  0a
			  01   00  01  3c
			  01   00  01  78
			  01   00  01  4a
			  01   00  01  07
			  01   00  01  0e
			  01   00  01  09
			  01   00  01  1b
			  01   00  01  1e
			  01   00  01  0f
			  00   00  01  e1
			  01   00  01  00
			  01   00  01  22
			  01   00  01  24
			  01   00  01  06
			  01   00  01  12
			  01   00  01  07
			  01   00  01  36
			  01   00  01  47
			  01   00  01  47
			  01   00  01  06
			  01   00  01  0a
			  01   00  01  07
			  01   00  01  30
			  01   00  01  37
			  01   00  01  0f

			  00   00  01  c0
			  01   00  01  10
			  01   00  01  10

			  00   00  01  c1
			  01   00  01  41

			  00   00  01  c5
			  01   00  01  00
			  01   00  01  22
			  01   00  01  80

			  00   00  01  36
			  01   00  01  48

			  00   00  01  3a  /* interface mode control */
			  01   00  01  66

			  00   00  01  b0  /* interface mode control */
			  01   00  01  00

			  00   00  01  b1  /* frame rate 70hz */
			  01   00  01  b0
			  01   00  01  11
			  00   00  01  b4
			  01   00  01  02
			  00   00  01  B6  /* RGB/MCU Interface Control */
			  01   00  01  32  /* 02 mcu, 32 rgb */
			  01   00  01  02

			  00   00  01  b7
			  01   00  01  c6

			  00   00  01  be
			  01   00  01  00
			  01   00  01  04

			  00   00  01  e9
			  01   00  01  00

			  00   00  01  f7
			  01   00  01  a9
			  01   00  01  51
			  01   00  01  2c
			  01   00  01  82

			  00   78  01  11
			  00   00  01  29
		];

		panel-exit-sequence = [
			/* type delay num val1 val2 val3 */
			00   0a  01  28
			00   78  01  10
		];

		display-timings {
			native-mode = <&kd050fwfba002_timing>;

			kd050fwfba002_timing: timing0 {
				clock-frequency = <12000000>;
				hactive = <320>;
				vactive = <480>;
				hback-porch = <10>;
				hfront-porch = <5>;
				vback-porch = <10>;
				vfront-porch = <5>;
				hsync-len = <10>;
				vsync-len = <10>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <0>;
				pixelclk-active = <0>;
			};
		};

		port {
			panel_in_rgb: endpoint {
				remote-endpoint = <&rgb_out_panel>;
			};
		};
	};
};

&backlight {
	enable-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>;
};

&rgb_in_vp2 {
	status = "okay";
};

&rgb {
	status = "okay";

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

			rgb_out_panel: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&panel_in_rgb>;
			};
		};
	};
};

&route_rgb {
	status = "okay";
};

&pinctrl {
	spi_panel {
		spi_init_cmd: spi-init-cmd {
			rockchip,pins =
				/* spi sdi */
				<4 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>,
				/* spi scl */
				<4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>,
				/* spi cs */
				<4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

1.2 RGB 屏参调整

拿到屏幕规格书那一刻,都会多不过看屏参的时刻。配置屏幕参数时一般选取 type (典型值),如屏幕有轻微偏位简单调整屏幕参数,可参照另一篇文章rk3568点亮LCD(lvds)。以下时某一个款屏幕的 timings。
在这里插入图片描述timing0中参数解释如下:
水平分辨率:hactive 垂直分辨率:vactive
水平前尖:hfront-porch(HFP) 垂直前尖:vfront-porch (VFP)
水平后尖:hback-porch(HBP) 垂直后尖:vback-porch (VBP)
水平消隐信号:hsync - len(HS) 垂直消隐信号:vsync - len (VS)
– clock-frequency = HFP(Hactive + HS + HBP) x VFP(Vactive + VS + VBP) x fps(帧频率)
– lane-rate = clk (时钟频率) x RGB(3) x BIT(6或8) / lane_num
lane_num 表示差分时钟通道数,RGB与BIT值根据 dsi,format 具体情况而定。
– dsi,format 表示RGB三原色位深大小,可用参数如下:
MEDIA_BUS_FMT_RGB888_1X24 表示8bit色深,RGB888 24BIT 屏。
MEDIA_BUS_FMT_RGB666_1X18 表示6bit色深,适配RGB666 18 bit 屏。
MEDIA_BUS_FMT_RGB565_1X16 表示565色深(单位bit),适配RGB565 16 bit 屏。

1.3 查GPIO复用

  • 核查常规GPIO申请
# andorid
cat /d/gpio
# linux
cat /sys/kernel/debug/gpio
  • 核查 iomux 申请
ls /sys/kernel/debug/pinctrl/pinctrl-maps
-r--r--r-- 1 root root 0 11  1970 pinctrl-devices # gpio 设备申请
-r--r--r-- 1 root root 0 11  1970 pinctrl-handles # gpio 引用
-r--r--r-- 1 root root 0 11  1970 pinctrl-maps # gpio 映射
drwxr-xr-x 2 root root 0 11  1970 pinctrl-rockchip-pinctrl
drwxr-xr-x 2 root root 0 11  1970 rk805-pinctrl-rk817-pinctrl

以查看TF卡GPIO为例

cat pinctrl-handles | grep mmc
device: fe2b0000.dwmmc current state: default
    type: MUX_GROUP controller rockchip-pinctrl group: sdmmc0-bus4 (61) function: sdmmc0 (37)
    type: MUX_GROUP controller rockchip-pinctrl group: sdmmc0-clk (62) function: sdmmc0 (37)
    type: MUX_GROUP controller rockchip-pinctrl group: sdmmc0-cmd (63) function: sdmmc0 (37)
    type: MUX_GROUP controller rockchip-pinctrl group: sdmmc0-det (64) function: sdmmc0 (37)
device: fe2c0000.dwmmc current state: default
    type: MUX_GROUP controller rockchip-pinctrl group: sdmmc1-bus4 (65) function: sdmmc1 (38)
    type: MUX_GROUP controller rockchip-pinctrl group: sdmmc1-cmd (67) function: sdmmc1 (38)
    type: MUX_GROUP controller rockchip-pinctrl group: sdmmc1-clk (66) function: sdmmc1 (38)

Tips

  1. 屏幕闪烁
    先确定背光闪烁还是屏幕内容闪?
    背光闪烁则需要确认背光供电是否充足,PWM 信号是否稳定。
    内容闪烁在排除排线异常后,很大概率时屏幕参数异常;微微调整屏幕参数可化解闪烁。
  2. 屏幕出现现条纹
    很大概率时屏幕参数异常;微微调整屏幕参数可化解闪烁。
  3. 开机过程无开机logo或开机过程黑屏休眠唤醒可正常显示
    可从logo 显示控制和 VOP 匹配排查。
&rgb_in_vp2 {
	status = "okay";
};

&route_rgb {
	status = "okay";
};

总结

活学活用,做个合格的搬运工。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【BOM浏览器对象模型】

BOM浏览器对象模型1 本节目标2 BOM概述3 window对象的常见事件3.1 窗口加载事件3.2 调整窗口大小事件4 定时器4.1 两种定时器4.2 setTimeout()定时器4.3 停止setTimeout()定时器4.4 setInterval()定时器4.5 停止setInterval()定时器4.6 this指向问题5 JS执行队列5.1 JS是单线程…

BUUCTF-.htaccess-sql.fuzz-D盾

第七周第一次 目录 WEB [MRCTF2020]你传你&#x1f40e;呢 ​编辑 [极客大挑战 2019]HardSQL Crypto 萌萌哒的八戒 传统知识古典密码 Misc 假如给我三天光明 后门查杀 WEB [MRCTF2020]你传你&#x1f40e;呢 文件上传 我们进行尝试 设置一个 1.jpg的一句话木马 G…

RabbitMQ之高级特性

文章目录一、消息确认机制&#x1f389;1.1 消息发送确认(生产者)&#x1f539;confirm 确认模式&#x1f539;return 回退模式&#x1f6a9;1.2 消息接收确认(消费者)&#x1f538;none 自动确认&#x1f538;auto 异常确认&#x1f538;manual 手动确认二、消费端限流 (prefe…

创略科技联合创始人兼总裁杨辰韵:AIGC、隐私计算赋能数字营销的本质是“以客户为中心”丨数据猿专访...

‍数据智能产业创新服务媒体——聚焦数智 改变商业MarTech概念现身已超十年&#xff0c;伴随着企业数字化转型的大背景&#xff0c;中国MarTech市场也迎来了高速发展。据《2022年中国MarTech市场洞察报告》数据显示&#xff0c;2017-2021年&#xff0c;中国 MarTech产业规模从…

H264码流中 SPS PPS SEI 详解

1 客户端抓包 在做客户端视频解码时&#xff0c;一般都会使用Wireshark抓包工具对接收的H264码流进行分析&#xff0c;如下所示&#xff1a; 在这里我们可以看到对解码视频起关键作用的SPS和PPS。 2、双击SPS内容如下&#xff1a; 那么从上面的sps中我们知道图像的宽&#x…

【从零开始学Skynet】实战篇《球球大作战》(二):结构设计

万丈高楼平地起&#xff0c;既然这是个“大项目”&#xff0c;就要有大项目的样子&#xff0c;就要有所规划&#xff0c;下面先把项目的目录结构搭起来。 1、目录结构 建议把Skynet框架放到一个文件夹里&#xff0c;把所有自己编写的内容都放到外层的文件夹里。建立如下表所示的…

MySQL运维10-MySQL数据的导入导出

文章目录0、概述1、mysqldump导出数据mysql导入数据1.1、使用mysqldump导出数据1.1.1、使用--tables导出指定表1.1.2、使用--tab选项将表定义文件和数据文件分开导出1.1.3、使用--fields-terminated-by选项定义数据分隔符1.1.4、使用--databases选项导出整个库或多个库1.1.5、使…

Python算法设计 - 蒙特卡洛法

版权声明&#xff1a;原创不易&#xff0c;本文禁止抄袭、转载&#xff0c;侵权必究&#xff01; 目录一、蒙特卡洛法二、求圆周率π三、Python算法实现四、作者Info一、蒙特卡洛法 蒙特卡洛方法又称统计模拟法&#xff0c;随机抽样技术&#xff0c;是一种随机模拟方法&#x…

pytorch进阶学习(五):神经网络迁移学习应用的保姆级详细介绍,如何将训练好的模型替换成自己所需模型

代码资源和数据集资源使用进阶学习&#xff08;四&#xff09;中的代码&#xff0c;大家可以配合食用哟~ pytorch进阶学习&#xff08;四&#xff09;&#xff1a;使用不同分类模型进行数据训练&#xff08;alexnet、resnet、vgg等&#xff09;_好喜欢吃红柚子的博客-CSDN博客…

数据结构之八大排序算法

文章目录一.常见的排序二.插入排序三.希尔排序四.选择排序五.堆排序六.冒泡排序七.快速排序八.归并排序九.计数排序十.排序总结一.常见的排序 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起…

pytorch性能分析工具Profiler

1. Torch Profiler工具介绍 https://zhuanlan.zhihu.com/p/360479566 PyTorch Profiler 是一个开源工具,可以对大规模深度学习模型进行准确高效的性能分析。包括如下等功能: 分析model的GPU、CPU的使用率各种算子op的时间消耗trace网络在pipeline的CPU和GPU的使用情况Profil…

Educational Codeforces Round 146 (Rated for Div. 2) - B. Long Legs(思维 数学)

题目如下&#xff1a; 题目链接 题解 or 思路&#xff1a; 我们可以发现我们有两个可选的入手方向&#xff1a; 1.正推 2.反推 我们可以发现正推似乎看不出来什么东西&#xff0c;而反推可以发现一个性质&#xff01; 性质如下&#xff1a; 我们假设最终的腿长为 MMM 可以得到…

sql需要注意的地方 以及 云记模块逻辑

标题模糊搜素时 sql语句需要注意的地方 用concat拼; 用户行为 actionName 进入发布云记页面 actionNameview 添加或修改云记 actionNameaddOrUpdate 查询云记详情 actionNamedetail 删除云记 actionNamedelete 分页查询云记列表 …

第05章_数组

第05章_数组 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 本章专题与脉络 1. 数组的概述 1.1 为什么需要数组 需求分析1&#xff1a; 需要统计某公司50个员工的工资情况&#xff0c;例如计…

chatGPT中文版入口-chatGPT不可以用的地区

ChatGPT老出现不可用 如果您在使用ChatGPT时发现它经常不可用&#xff0c;可能是由于以下原因&#xff1a; OpenAI API的服务不稳定。由于技术问题、网络问题或维护&#xff08;如软件更新&#xff09;等原因导致OpenAI API服务不稳定&#xff0c;会导致ChatGPT无法使用。 接…

【JSON学习笔记】2.JSON vs XML及JSON的对象和数组

前言 本章介绍JSON vs XML及JSON的对象和数组。 JSON vs XML JSON 和 XML 都用于接收 web 服务端的数据。 JSON 和 XML在写法上有所不同&#xff0c;如下所示&#xff1a; JSON 实例 {"sites": [{ "name":"csdn教程" , "url":&q…

〖Python网络爬虫实战⑪〗- 正则表达式实战(二)

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付费…

《LeetCode 热题 HOT 100》——寻找两个正序数组的中位数

本期给大家带来的是是《LeetCode 热题 HOT 100》第四题——寻找两个正序数组的中位数的题目讲解&#xff01;&#xff01;&#xff01;&#xff08;&#xff09; 本文目录 &#x1f4a5;题意分析 &#x1f4a5;解题思路&#xff1a; 1、直接法 &#xff08;❌&#xff09; …

2023年证券、基金、银行从业资格证考试计划

一、证券从业&#xff1a; 考试时间&#xff1a;统一测试拟于6月3日-4日举办1次&#xff0c;在全国41个城市举办。 报名网站&#xff1a;考试报名-中国证券业协会 (sac.net.cn) 目标&#xff1a;一般从业资格考试(入门资格考试) 考试人群&#xff1a;即将进入证券业从业的人…

Linux命令·ping

Linux系统的ping命令是常用的网络命令&#xff0c;它通常用来测试与目标主机的连通性&#xff0c;我们经常会说“ping一下某机器&#xff0c;看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机&#xff08…