Linux-笔记 全志T113移植正点4.3寸RGB屏幕笔记
目录
前言
线序整理
软件
显示调试
触摸调试
背光调试
前言
由于手头有一块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屏幕:
序号 | 定义 | 描述 |
1 | 5V | |
2 | 5V | |
3 | R0 | NC |
4 | R1 | NC |
5 | R2 | |
6 | R3 | |
7 | R4 | |
8 | R5 | |
9 | R6 | |
10 | R7 | |
11 | GND | |
12 | G0 | NC |
13 | G1 | NC |
14 | G2 | |
15 | G3 | |
16 | G4 | |
17 | G5 | |
18 | G6 | |
19 | G7 | |
20 | GND | |
21 | B0 | NC |
22 | B1 | NC |
23 | B2 | |
24 | B3 | |
25 | B4 | |
26 | B5 | |
27 | B6 | |
28 | B7 | |
29 | GND | |
30 | CLK | LCD时钟 |
31 | HSYNC | HSYNC |
32 | VSYNC | VSYNC |
33 | DE | 控制信号DE |
34 | BL | 背光 |
35 | CS | 电容触摸屏复位信号 |
36 | SDA | 电容触摸屏 IIC 通讯 SDA 信号 |
37 | NC | NC |
38 | SCL | 电容触摸屏 IIC 通讯 SCL 信号 |
39 | PEN | 电容触摸屏中断信号 |
40 | RESET | NC |
开发平台:
序号 | 定义 | 描述 |
1 | 5V | |
2 | 5V | |
3 | NC | |
4 | NC | |
5 | B0 | |
6 | B1 | |
7 | B2 | |
8 | B3 | |
9 | B4 | |
10 | B5 | |
11 | GND | |
12 | NC | |
13 | NC | |
14 | G0 | |
15 | G1 | |
16 | G2 | |
17 | G3 | |
18 | G4 | |
19 | G5 | |
20 | GND | |
21 | NC | |
22 | NC | |
23 | R0 | |
24 | R1 | |
25 | R2 | |
26 | R3 | |
27 | R4 | |
28 | R5 | |
29 | GND | |
30 | BL-PWD | 背光 |
31 | CTP-SDA | SDA |
32 | CTP-SCK | SCK |
33 | DE | 控制信号DE |
34 | LCD0-VSYNC | VSYNC |
35 | LCD0-HSYNC | HSYNC |
36 | LCD0-CLK | LCD时钟 |
37 | NC | NC |
38 | NC | NC |
39 | CTP-INT | 电容触摸中断 |
40 | CTP-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),单位MHzlcd_ht = <976>; // 对应屏厂Width + HSW + HBP + HFPlcd_hbp = <88>; //对应屏厂HBPlcd_hspw = <48>; // 对应屏厂HSWlcd_vbp = <32>; // 对应屏厂VBPlcd_vt = <528>; // 对应屏厂Height + VSW + VBP + VFPlcd_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),单位MHzlcd_ht = <976>; // 对应屏厂Width + HSW + HBP + HFPlcd_hbp = <88>; //对应屏厂HBPlcd_hspw = <48>; // 对应屏厂HSWlcd_vbp = <32>; // 对应屏厂VBPlcd_vt = <528>; // 对应屏厂Height + VSW + VBP + VFPlcd_vspw = <3>; // 对应屏厂VSWlcd_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 = <®_aldo2>;*//*ctp_power_ldo = <®_aldo2>;*//*ctp_power_ldo_vol = <3300>;*/};
};
3、由于官方的触摸驱动goodix已经默认支持GT1151触摸IC,记得开启内核配置:
所以我们不用重新写驱动,如果官方的不行,可以参考以下文章:
参考文章1
参考文章2
4、触摸测试
1)查看触摸节点
cat /proc/bus/input/devices
2) 查看原始触摸数据(可以通过此测试最最简单判断触摸是否可行)
hexdump /dev/input/event5
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 78 9 10 11 12 13 14 1516 17 18 19 20 21 22 2324 25 26 27 28 29 30 3132 33 34 35 36 37 38 3940 41 42 43 44 45 46 4748 49 50 51 52 53 54 5556 57 58 59 60 61 62 6364 65 66 67 68 69 70 7172 73 74 75 76 77 78 7980 81 82 83 84 85 86 8788 89 90 91 92 93 94 9596 97 98 99 100 101 102 103104 105 106 107 108 109 110 111112 113 114 115 116 117 118 119120 121 122 123 124 125 126 127128 129 130 131 132 133 134 135136 137 138 139 140 141 142 143144 145 146 147 148 149 150 151152 153 154 155 156 157 158 159160 161 162 163 164 165 166 167168 169 170 171 172 173 174 175176 177 178 179 180 181 182 183184 185 186 187 188 189 190 191192 193 194 195 196 197 198 199200 201 202 203 204 205 206 207208 209 210 211 212 213 214 215216 217 218 219 220 221 222 223224 225 226 227 228 229 230 231232 233 234 235 236 237 238 239240 241 242 243 244 245 246 247248 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
至此,移植成功。
相关文章:

Linux-笔记 全志T113移植正点4.3寸RGB屏幕笔记
目录 前言 线序整理 软件 显示调试 触摸调试 背光调试 前言 由于手头有一块4.3寸的RGB屏幕(触摸IC为GT1151),正好开发板上也有40Pin的RGB接口,就想着给移植一下,前期准备工作主要是整理好线序,然后用转接板与杜邦线连接验证好…...

Linux shell编程学习笔记59: ps 获取系统进程信息,类似于Windows系统中的tasklist 命令
0 前言 系统进程信息是电脑网络信息安全检查中的一块重要内容,对于使用Linux和基于Linux作为操作系统的电脑来说,可以使用ps命令。 1 ps命令 的功能、格式和选项说明 1.1 ps命令 的功能 Linux 中的ps(意为:process status&…...
在Android中使用ProgressBar显示进度
在Android中使用ProgressBar显示进度 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Android应用中使用ProgressBar来显示进度。ProgressB…...
Java基础面试题(简单版):
1.java的8个基本数据类型? 整型: byte(占用1个字节) short(占用2个字节) int(占用4个字节) long(占用8个字节) 浮点型: float(占用4个字节)、double(占用8个字节) 字符型: char 布尔型: boolean 2.ArrayList和LinkedList的区别? 可以说ArrayList和LinkedList除了是同属于集合…...

Chrome插件:Postman Interceptor 调试的终极利器
今天给大家介绍一款非常实用的工具——Postman Interceptor。 这个工具可以捕捉任何网站的请求,并将其发送到Postman客户端。 对于经常和API打交道的程序员来说,Postman Interceptor真的是神器级别的存在。 下面就让我详细说说这个插件怎么用…...

SpringBoot学习04-[定制SpringMVC]
定制SpringMVC 定制SpringMvc的自动配置定制springmvc-configurePathMatch配置定制SpringMVC-拦截器Interceptor定制SpringMVC-CORS配置全局cors配置针对某个方法加跨域解决 WebMvcConfigurer原理定制SpringMVC-JSONJSON开发jackson的使用定制化json序列化和反序列化 JSON国际化…...
QT拖放事件之六:自定义MIME类型的存储及读取demo
1、MIME类型描述 MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的标准,用来表示文档、文件或字节流的性质和格式。 MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。 浏览器通常使用 MIME 类型(而不是文件扩展名)来确定如何处理URL…...

架构师必知的绝活-JVM调优
前言 为什么要学JVM? 首先:面试需要 了解JVM能帮助回答面试中的复杂问题。面试中涉及到的JVM相关问题层出不穷,难道每次面试都靠背几百上千条面试八股? 其次:基础知识决定上层建筑 自己写的代码都不知道是怎么回事&a…...

小米平板6系列对比
小米平板6系列目前有4款,分别为6、6 Pro、6 Max、6S Pro。具体对比如下表所示。 小米平板型号66 Pro6 Max6S Pro实物图发布时间2023年4月21日2023年4月21日2023年8月14日2024年2月22 日屏幕大小11英寸11英寸14英寸12.4英寸分辨率2.8K2.8K2.8K3K刷新率144Hz144Hz120…...

用 Rust 实现一个替代 WebSocket 的协议
很久之前我就对websocket颇有微词,它的确满足了很多情境下的需求,但是仍然有不少问题。对我来说,最大的一个问题是websocket的数据是明文传输的,这使得websocket的数据很容易遭到劫持和攻击。同时,WebSocket继承自HTTP…...

【docker】2. 编排容器技术发展史(了解)
该篇文章介绍的主要是编排以及容器技术的发展史(了解即可),如果想单纯学习docker命令操作可直接略过!!! 容器技术发展史 Jail 时代 容器不是一个新概念或者新技术,很早就有了,只是近几年遇到了云计算&am…...

吉利银河L6(官方小订送的3M) 对比 威固vk70+ks15
吉利送的号称价值2000的3M效果 撕膜重贴 威固vk70ks15 之后的效果 // 忘记测反射的热量了 可以验证金属膜是反射热而不是吸热 金属膜 手机GPS还能用吗 亲测 能用 太阳能总阻隔率 3M貌似20%出头 威固前档55% 侧后挡高一点不超过60% 夏天真实太阳发热能量 即阻隔率55%到60% …...

three.js实现雪花场景效果
点击获取雪花图片素材 提取码:lywa // 雪花效果 import * as THREE from "three" export function getsnowEffect(th) {console.log(th, th) // this 场景var that th// 创建一个BufferGeometry对象,用于存储顶点数据 const geometry new THREE.Buffe…...

鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一
一、鸿蒙开发环境搭建 DevEco Studio安装 下载 访问官网:https://developer.huawei.com/consumer/cn/deveco-studio/选择操作系统版本后并注册登录华为账号既可下载安装包 安装 建议:软件和依赖安装目录不要使用中文字符软件安装包下载完成后࿰…...
Elasticsearch优化索引映射和设置
在Elasticsearch的世界中,优化索引的映射(mapping)和设置(settings)对于提高搜索性能、存储效率和系统稳定性至关重要。本文将带您深入了解如何针对Elasticsearch的索引进行优化,帮助您构建更高效、更可靠的…...

boss直聘招聘数据可视化分析
boss直聘招聘数据可视化分析 一、数据预处理二、数据可视化三、完整代码一、数据预处理 在 上一篇博客中,笔者已经详细介绍了使用selenium爬取南昌市web前端工程师的招聘岗位数据,数据格式如下: 这里主要对薪水列进行处理,为方便处理,将日薪和周薪的数据删除,将带有13薪…...
小程序人脸分析
公司的业务需求是用户在使用某个功能前,必须使用人脸识别,确保当前使用人是用户本人,防止某些功能乱用。后端用的是腾讯的人脸识别方案,这里只是前端的识别代码,保证人脸剧中,大小合适,有一个人…...

UML建模笔记
5个视图 设计。类,接口,对象如何协作。实现。组件,运行程序,文档关系。用例。用户功能期望。进程。并发与同步相关进程,线程。部署。部署到计算机。 建模目的 和客户共创追踪需求变更协同开发进度控制持续迭代测试生…...
初见SpringCloud ing
Consul 服务注册与发现 服务注册与发现 服务注册:微服务在启动时,会将自己的信息(如 IP 地址、端口、服务名称等)注册到 Consul。 服务发现:其他微服务可以通过 Consul 查询到已注册的服务,并通过这些信息…...

Python | Leetcode Python题解之第198题打家劫舍
题目: 题解: class Solution:def rob(self, nums: List[int]) -> int:if not nums:return 0size len(nums)if size 1:return nums[0]first, second nums[0], max(nums[0], nums[1])for i in range(2, size):first, second second, max(first nu…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...