当前位置: 首页 > news >正文

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屏幕:

        

序号定义描述
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),单位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 = <&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)  查看原始触摸数据(可以通过此测试最最简单判断触摸是否可行)

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)&#xff0c;正好开发板上也有40Pin的RGB接口&#xff0c;就想着给移植一下&#xff0c;前期准备工作主要是整理好线序&#xff0c;然后用转接板与杜邦线连接验证好…...

Linux shell编程学习笔记59: ps 获取系统进程信息,类似于Windows系统中的tasklist 命令

0 前言 系统进程信息是电脑网络信息安全检查中的一块重要内容&#xff0c;对于使用Linux和基于Linux作为操作系统的电脑来说&#xff0c;可以使用ps命令。 1 ps命令 的功能、格式和选项说明 1.1 ps命令 的功能 Linux 中的ps&#xff08;意为&#xff1a;process status&…...

在Android中使用ProgressBar显示进度

在Android中使用ProgressBar显示进度 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何在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。 这个工具可以捕捉任何网站的请求&#xff0c;并将其发送到Postman客户端。 对于经常和API打交道的程序员来说&#xff0c;Postman Interceptor真的是神器级别的存在。 下面就让我详细说说这个插件怎么用&#xf…...

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&#xff1f; 首先&#xff1a;面试需要 了解JVM能帮助回答面试中的复杂问题。面试中涉及到的JVM相关问题层出不穷&#xff0c;难道每次面试都靠背几百上千条面试八股&#xff1f; 其次&#xff1a;基础知识决定上层建筑 自己写的代码都不知道是怎么回事&a…...

小米平板6系列对比

小米平板6系列目前有4款&#xff0c;分别为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颇有微词&#xff0c;它的确满足了很多情境下的需求&#xff0c;但是仍然有不少问题。对我来说&#xff0c;最大的一个问题是websocket的数据是明文传输的&#xff0c;这使得websocket的数据很容易遭到劫持和攻击。同时&#xff0c;WebSocket继承自HTTP…...

【docker】2. 编排容器技术发展史(了解)

该篇文章介绍的主要是编排以及容器技术的发展史(了解即可)&#xff0c;如果想单纯学习docker命令操作可直接略过&#xff01;&#xff01;&#xff01; 容器技术发展史 Jail 时代 容器不是一个新概念或者新技术&#xff0c;很早就有了&#xff0c;只是近几年遇到了云计算&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对象&#xff0c;用于存储顶点数据 const geometry new THREE.Buffe…...

鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段一

一、鸿蒙开发环境搭建 DevEco Studio安装 下载 访问官网&#xff1a;https://developer.huawei.com/consumer/cn/deveco-studio/选择操作系统版本后并注册登录华为账号既可下载安装包 安装 建议&#xff1a;软件和依赖安装目录不要使用中文字符软件安装包下载完成后&#xff0…...

Elasticsearch优化索引映射和设置

在Elasticsearch的世界中&#xff0c;优化索引的映射&#xff08;mapping&#xff09;和设置&#xff08;settings&#xff09;对于提高搜索性能、存储效率和系统稳定性至关重要。本文将带您深入了解如何针对Elasticsearch的索引进行优化&#xff0c;帮助您构建更高效、更可靠的…...

boss直聘招聘数据可视化分析

boss直聘招聘数据可视化分析 一、数据预处理二、数据可视化三、完整代码一、数据预处理 在 上一篇博客中,笔者已经详细介绍了使用selenium爬取南昌市web前端工程师的招聘岗位数据,数据格式如下: 这里主要对薪水列进行处理,为方便处理,将日薪和周薪的数据删除,将带有13薪…...

小程序人脸分析

公司的业务需求是用户在使用某个功能前&#xff0c;必须使用人脸识别&#xff0c;确保当前使用人是用户本人&#xff0c;防止某些功能乱用。后端用的是腾讯的人脸识别方案&#xff0c;这里只是前端的识别代码&#xff0c;保证人脸剧中&#xff0c;大小合适&#xff0c;有一个人…...

UML建模笔记

5个视图 设计。类&#xff0c;接口&#xff0c;对象如何协作。实现。组件&#xff0c;运行程序&#xff0c;文档关系。用例。用户功能期望。进程。并发与同步相关进程&#xff0c;线程。部署。部署到计算机。 建模目的 和客户共创追踪需求变更协同开发进度控制持续迭代测试生…...

初见SpringCloud ing

Consul 服务注册与发现 服务注册与发现 服务注册&#xff1a;微服务在启动时&#xff0c;会将自己的信息&#xff08;如 IP 地址、端口、服务名称等&#xff09;注册到 Consul。 服务发现&#xff1a;其他微服务可以通过 Consul 查询到已注册的服务&#xff0c;并通过这些信息…...

Python | Leetcode Python题解之第198题打家劫舍

题目&#xff1a; 题解&#xff1a; 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…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...