Linux-笔记 全志T113移植正点4.3寸RGB屏幕笔记

news2024/10/7 4:32:42

目录

前言

线序整理

软件

显示调试

触摸调试

背光调试


前言

        由于手头有一块4.3寸的RGB屏幕(触摸IC为GT1151),正好开发板上也有40Pin的RGB接口,就想着给移植一下,前期准备工作主要是整理好线序,然后用转接板与杜邦线连接验证好后期再画转接板也是可以的。SDK使用的tina5.0。

线序整理

        由于开发平台只支持RGB666(低位屏蔽),而RGB屏幕支持RGB888,所以特别注意在接R\G\B线序的时候,要从RGB屏幕的R2\B2\B2开始接起,也就说,屏幕的R2要接开发平台的R0,以此类推最后是屏幕的R7接开放平台的R5。其他接口对着接就行了,同时还要注意线序中,        LD23-LD0,高位为R通道,低位为G通道,接反可能导致颜色显示有问题。

        这里直接给出整理好的线序以及说明,也可以去看官方的说明手册。

        RGB屏幕:

        

序号定义描述
15V
25V
3R0NC
4R1NC
5R2
6R3
7R4
8R5
9R6
10R7
11GND
12G0NC
13G1NC
14G2
15G3
16G4
17G5
18G6
19G7
20GND
21B0NC
22B1NC
23B2
24B3
25B4
26B5
27B6
28B7
29GND
30CLKLCD时钟
31HSYNCHSYNC
32VSYNCVSYNC
33DE控制信号DE
34BL背光
35CS电容触摸屏复位信号
36SDA电容触摸屏 IIC 通讯 SDA 信号
37NCNC
38SCL电容触摸屏 IIC 通讯 SCL 信号
39PEN电容触摸屏中断信号
40RESETNC

开发平台:

序号定义描述
15V
25V
3NC
4NC
5B0
6B1
7B2
8B3
9B4
10B5
11GND
12NC
13NC
14G0
15G1
16G2
17G3
18G4
19G5
20GND
21NC
22NC
23R0
24R1
25R2
26R3
27R4
28R5
29GND
30BL-PWD背光
31CTP-SDASDA
32CTP-SCKSCK
33DE控制信号DE
34LCD0-VSYNCVSYNC
35LCD0-HSYNCHSYNC
36LCD0-CLKLCD时钟
37NCNC
38NCNC
39CTP-INT电容触摸中断
40CTP-RST电容触摸复位

软件

显示调试

1、修改内核设备树:<SDK>/kernel/linux-5.4/arch/arm/boot/dts/board.dts,修改lcd0节点各项参数,这里需要去查询所要移植屏幕的参数,但是只需要修改lcd0节点的以下部分即可:

/*part 3*/
    lcd_dclk_freq       = <31>;     // lcd_ht * lcd_vt * fps(60),单位MHz
    lcd_ht              = <976>;   // 对应屏厂Width + HSW + HBP + HFP
	lcd_hbp             = <88>;     //对应屏厂HBP
	lcd_hspw            = <48>;      // 对应屏厂HSW
	lcd_vbp             = <32>;     // 对应屏厂VBP
	lcd_vt              = <528>;    // 对应屏厂Height + VSW + VBP + VFP
    lcd_vspw            = <3>;      // 对应屏厂VSW

通过屏幕官方手册等手册最终修改版如下:

&lcd0 {
	lcd_used            = <1>;

	lcd_driver_name     = "default_lcd";
	lcd_backlight       = <50>;
	lcd_if              = <0>;

	/*part 1*/
	lcd_x               = <800>;
	lcd_y               = <480>;
	lcd_width           = <154>;
	lcd_height          = <86>;
	/*part 2*/
	lcd_pwm_used        = <0>;
	lcd_pwm_ch          = <7>;
	lcd_pwm_freq        = <50000>;
	lcd_pwm_pol         = <0>;
	lcd_pwm_max_limit   = <255>;
	/*part 3*/
    lcd_dclk_freq       = <31>;     // lcd_ht * lcd_vt * fps(60),单位MHz
    lcd_ht              = <976>;   // 对应屏厂Width + HSW + HBP + HFP
	lcd_hbp             = <88>;     //对应屏厂HBP
	lcd_hspw            = <48>;      // 对应屏厂HSW
	lcd_vbp             = <32>;     // 对应屏厂VBP
	lcd_vt              = <528>;    // 对应屏厂Height + VSW + VBP + VFP
    lcd_vspw            = <3>;      // 对应屏厂VSW

	lcd_lvds_if         = <0>;
	lcd_lvds_colordepth = <1>;
	lcd_lvds_mode       = <0>;
	lcd_frm             = <1>;
	lcd_io_phase        = <0x0000>;
	lcd_gamma_en        = <0>;
	lcd_bright_curve_en = <0>;
	lcd_cmap_en         = <0>;

	deu_mode            = <0>;
	lcdgamma4iep        = <22>;
	smart_color         = <90>;

	pinctrl-0 = <&rgb18_pins_a>;
	pinctrl-1 = <&rgb18_pins_b>;
};

2、修改uboot设备树:<SDK>/brandy/brandy-2.0/u-boot-2018/arch/arm/dts/board-uboot.dts

同样找到lcd0节点,将内核设备树修改的节点参数都复制过去。

3、保存编译后烧录镜像,然后进行测试验证屏幕显示是否可行

4、花屏测试

cat /dev/urandom > /dev/fb0

                                ​​​​​​​        

5、颜色测试

cat /dev/zero > /dev/fb0
echo 8 > /sys/class/disp/disp/attr/colorbar

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

6、移植显示成功。

触摸调试

1、触摸采用I2C接口,通过查看开发板原理图可知屏幕接口的i2c引脚为PE0、PE1,修改内核设备树:

        ​​​​​​​        

2、修改内核设备树twi1节点:

&twi1 {
	clock-frequency = <400000>;
	pinctrl-0 = <&twi1_pins_a>;
	pinctrl-1 = <&twi1_pins_b>;
	pinctrl-names = "default", "sleep";
	status = "okay";
	ctp@14 {
		compatible = "allwinner,goodix";
		device_type = "ctp";
		reg = <0x14>;
		status = "okay";
		ctp_name = "gt9xxnew_ts";
		ctp_twi_id = <0x2>;
		ctp_twi_addr = <0x14>;
		ctp_screen_max_x = <0x320>;
		ctp_screen_max_y = <0x1e0>;
		ctp_revert_x_flag = <0x0>;
		ctp_revert_y_flag = <0x0>;
		ctp_exchange_x_y_flag = <0x0>;
		ctp_int_port = <&pio PE 11 GPIO_ACTIVE_HIGH>;
		ctp_wakeup = <&gpio_ext 0 GPIO_ACTIVE_HIGH>;
		/*ctp-supply = <&reg_aldo2>;*/
		/*ctp_power_ldo = <&reg_aldo2>;*/
		/*ctp_power_ldo_vol = <3300>;*/
	};
};

3、由于官方的触摸驱动goodix已经默认支持GT1151触摸IC,记得开启内核配置:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        

所以我们不用重新写驱动,如果官方的不行,可以参考以下文章:

参考文章1

参考文章2

4、触摸测试

        1)查看触摸节点

cat /proc/bus/input/devices

        ​​​​​​​        

        2)  查看原始触摸数据(可以通过此测试最最简单判断触摸是否可行)

cat /proc/bus/input/devices

        ​​​​​​​        

        3)使用tslib触摸库进行测试,先初始化

fbinit 0 //初始化屏幕

export TSLIB_TSDEVICE=/dev/input/event1 #这⾥的eventX填写⾃⼰实际的
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0

        4)ts_calibrate触摸校准,依次点击四个⻆落进⾏校准:

ts_calibrate

        5)ts_test触摸测试

ts_test

点击“Drag”,开始拖拽测试: 在触摸屏上滑动,屏幕上的⼗字光标会跟随移动。

点击“Draw”,开始描绘测试: 在触摸屏上滑动,屏幕上会有对应线条出现。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

测试完成点击“Quit”退出测试。

背光调试

1、内核配置开启PWM


> Device Drivers
	> Pulse-Width Modulation (PWM) Support
		<*>   Allwinner PWM support

2、开启背光驱动


> Device Drivers
	> Graphics support
		> Backlight & LCD device support
			<*> Lowlevel Backlight controls                                                                                 
	        	<*>   Generic (aka Sharp Corgi) Backlight Driver                                                                
                <*>   Generic PWM based Backlight Driver                                                                        

3、修改内核设备树:<SDK>/kernel/linux-5.4/arch/arm/boot/dts/sun8iw20p1.dtsi

backlight: backlight {
		compatible = "pwm-backlight"; 
		pwms = <&pwm 7 500000 0>;
		pwm-names = "backlight";
		brightness-levels = <
			0   1   2   3   4   5   6   7
			8   9  10  11  12  13  14  15
			16  17  18  19  20  21  22  23
			24  25  26  27  28  29  30  31
			32  33  34  35  36  37  38  39
			40  41  42  43  44  45  46  47
			48  49  50  51  52  53  54  55
			56  57  58  59  60  61  62  63
			64  65  66  67  68  69  70  71
			72  73  74  75  76  77  78  79
			80  81  82  83  84  85  86  87
			88  89  90  91  92  93  94  95
			96  97  98  99 100 101 102 103
			104 105 106 107 108 109 110 111
			112 113 114 115 116 117 118 119
			120 121 122 123 124 125 126 127
			128 129 130 131 132 133 134 135
			136 137 138 139 140 141 142 143
			144 145 146 147 148 149 150 151
			152 153 154 155 156 157 158 159
			160 161 162 163 164 165 166 167
			168 169 170 171 172 173 174 175
			176 177 178 179 180 181 182 183
			184 185 186 187 188 189 190 191
			192 193 194 195 196 197 198 199
			200 201 202 203 204 205 206 207
			208 209 210 211 212 213 214 215
			216 217 218 219 220 221 222 223
			224 225 226 227 228 229 230 231
			232 233 234 235 236 237 238 239
			240 241 242 243 244 245 246 247
			248 249 250 251 252 253 254 255 
		>;
		default-brightness-level = <200>;
		status = "okay";
	};

1)查看背光

cat /sys/class/backlight/backlight/brightness

2)修改背光

echo 20 > /sys/class/backlight/backlight/brightness

3)再次修改

echo 200 > /sys/class/backlight/backlight/brightness

至此,移植成功。​​​​​​​

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

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

相关文章

MySQL 外连接、内连接与自连接的区别?

引言&#xff1a;本文将深入探讨这些连接类型的概念、语法及其应用场景&#xff0c;帮助读者全面理解如何利用这些技术实现复杂的数据查询和分析。在数据库查询中&#xff0c;连接操作使得我们可以根据指定的关联条件&#xff08;join condition&#xff09;联合两个或多个表中…

vuex的actions返回结果类型是promise及actions方法互相调用

this.$store.dispatch(‘logout’)返回的结果是Promise类型的 调用成功的情况下&#xff0c;返回状态为fulfilled&#xff0c;值为undefined。 所以可以直接进行.then操作&#xff1a; this.$store.dispatch(logout).then((result) > {console.log(result); });因为 Vuex …

Python读取中文路径,出现乱码问题解决方案

Python读取中文路径&#xff0c;出现乱码问题解决方案 一、问题描述二、问题解决 欢迎学习交流&#xff01; 邮箱&#xff1a; z…1…6.com 网站&#xff1a; https://zephyrhours.github.io/ 一、问题描述 笔者在使用opencv读取带有中文路径的图片时&#xff0c;发现会出现乱…

【操作系统】信号处理与阻塞函数|时序竞态问题

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 ​ 关于阻塞函数和…

免费领!系统学习上位机编程的流程与基础教程

上位机电气自动化plc编程全套入门教程工具 华山编程导师根据当前招聘需求的关键点&#xff0c;原创录制了一套系统的学习流程和基础教程&#xff0c;帮助你从快速入门到掌握上位机编程的技能。 二. 学习准备 为了更好地学习并实现80%以上的代码运行&#xff0c;建议准备一个工…

线程安全问题(一)——锁的简单使用

多线程安全问题 线程安全问题的引入案例引入多线程指令排序问题 线程不安全的原因解决线程不安全的方法锁的引入上锁和解锁过程一个简单的锁Demo对这个案例进行几次修改 总结 线程安全问题的引入 在前面的博文中&#xff0c;我们了解到通过Thread.join()的方法让线程进入等待&…

谷歌云(GCP)4门1453元最热门证书限时免费考

谷歌云(GCP)最新活动&#xff0c;完成免费官方课程&#xff0c;送4门最热门考试免费考试券1张(每张价值200刀/1453元)&#xff0c;这4门也包括最近大热的AI/ML考试&#xff0c;非常值得学习和参加&#xff0c;活动7/17截止 谷歌云是全球最火的三大云计算厂商(前两名AWS, Azure…

Electron 整理文档

Electron 简介 Electron 是一个使用 JavaScript、 HTML 和 CSS 构建桌面应用程序的框架。通过将 Chromium 和 Node.js 嵌入到它的二进制文件中&#xff0c;Electron 允许你维护一个 JavaScript 代码库&#xff0c;并创建可以在 Windows、 macOS 和 Linux 上运行的跨平台应用程序…

pandas将dataframe展开/拉伸成一个series

pandas提供了一个函数实现这个操作&#xff1a; dataframe.stack()示例程序&#xff1a; import pandas as pd import numpy as npdf pd.DataFrame(np.random.randint(0, 10, size(2, 4)), columns[col_1, "col_2", "col_3", "col_4"]) # 展…

详解 ClickHouse 的分片集群

一、简介 分片功能依赖于 Distributed 表引擎&#xff0c;Distributed 表引擎本身不存储数据&#xff0c;有点类似于 MyCat 之于 MySql&#xff0c;成为一种中间件&#xff0c;通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据 ClickHouse 进行分片集群的…

优雅谈大模型13:LangChain Vs. LlamaIndex

实时了解业内动态&#xff0c;论文是最好的桥梁&#xff0c;专栏精选论文重点解读热点论文&#xff0c;围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;…

算法训练营day20--235. 二叉搜索树的最近公共祖先+701.二叉搜索树中的插入操作 +450.删除二叉搜索树中的节点

一、235. 二叉搜索树的最近公共祖先 题目链接&#xff1a;https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/ 文章讲解&#xff1a;https://programmercarl.com/0235.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91…

小阿轩yx-用户管理与高级SQL语句

小阿轩yx-用户管理与高级SQL语句 MySQL 进阶查询 运维工作中可以提供不小的帮助&#xff0c;运维身兼数职&#xff0c;可能会有不少数据库的相关工作 常用查询介绍 对查询的结果集进行处理 按关键字排序 使用 SELECT 语句可以将需要的数据从 MySQL 数据库中查询出来 对结…

调幅信号AM的原理与matlab实现

平台&#xff1a;matlab r2021b 本文知识内容摘自《软件无线电原理和应用》 调幅就是使载波的振幅随调制信号的变化规律而变化。用音频信号进行调幅时&#xff0c;其数学表达式可以写为: 式中&#xff0c;为调制音频信号&#xff0c;为调制指数&#xff0c;它的范围在(0&…

攻克PS之路——Day1(A1-A8)

#暑假到了&#xff0c;作为可能是最后一个快乐的暑假&#xff0c;我打算学点技能来傍身&#xff0c;首先&#xff0c;开始PS之旅 这个帖子作为我跟着B站up主学习PS的记录吧&#xff0c;希望我可以坚持下去&#xff01; 学习的链接在这里&#xff1a;A02-PS软件安装&#xff0…

Linux显示服务器Wayland切换到X11

1、临时切换 &#xff1a; 注销当前用户账户&#xff0c;返回到登录屏幕。 在登录屏幕上&#xff0c;选择您要登录的用户账户。 在输入密码之前&#xff0c;在登录屏幕的右下角可能有一个齿轮图标&#xff0c;点击它以展开更多选项。 在选项中选择“Ubuntu on Xorg”或“Ubu…

Matlab|风光及负荷多场景随机生成与缩减

目录 1 主要内容 计算模型 场景生成与聚类方法应用 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序方法复现了《融合多场景分析的交直流混合微电网多时间尺度随机优化调度策略》3.1节基于多场景技术的随机性建模部分&#xff0c;该部分是随机优化调度的重要组成部分…

web自动化(一)selenium安装环境搭建、DrissionPage安装

selenium 简介 selenium是企业广泛应用的web自动化框架 selenium 三大组件 selenium IDE 浏览器插件 实现脚本录制 webDriver 实现对浏览器进行各种操作 Grid 分布式执行 用例同时在多个浏览器执行&#xff0c;提高测试效率 问题&#xff1a;环境搭建复杂&#xff0c;浏览器版…