百问网全志D1h开发板MIPI屏适配

news2024/9/29 21:30:38

MIPI屏适配

100ASK-D1-H_DualDisplay-DevKit V11

1. 显示适配

1.1 修改设备树

1.1.1 修改内核设备树

进入目录:

cd /home/ubuntu/tina-d1-h/device/config/chips/d1-h/configs/nezha/linux-5.4

修改board.dts:

&lcd0 {
        lcd_used            = <1>;

        lcd_driver_name     = "tft08006";
        lcd_backlight       = <100>;
        lcd_if              = <4>;

        lcd_x               = <480>;
        lcd_y               = <800>;
        lcd_width           = <52>;
        lcd_height          = <52>;
        lcd_dclk_freq       = <25>;

        lcd_pwm_used        = <1>;
        lcd_pwm_ch          = <0>;
        lcd_pwm_freq        = <1000>;
        lcd_pwm_pol         = <0>;
        lcd_pwm_max_limit   = <255>;

        lcd_hbp             = <10>;
        lcd_ht              = <515>;
        lcd_hspw            = <5>;
        lcd_vbp             = <20>;
        lcd_vt              = <830>;
        lcd_vspw            = <5>;

        lcd_dsi_if          = <0>;
        lcd_dsi_lane        = <2>;
        lcd_lvds_if         = <0>;
        lcd_lvds_colordepth = <0>;
        lcd_lvds_mode       = <0>;
        lcd_frm             = <0>;
        lcd_hv_clk_phase    = <0>;
        lcd_hv_sync_polarity= <0>;
        lcd_gamma_en        = <0>;
        lcd_bright_curve_en = <0>;
        lcd_cmap_en         = <0>;
        lcd_fsync_en        = <0>;
        lcd_fsync_act_time  = <1000>;
        lcd_fsync_dis_time  = <1000>;
        lcd_fsync_pol       = <0>;

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

        lcd_gpio_0 =  <&pio PG 13 GPIO_ACTIVE_HIGH>;
        pinctrl-0 = <&dsi4lane_pins_a>;
        pinctrl-1 = <&dsi4lane_pins_b>;
};

根据原理图:

image-1

可以查看到,mipi屏的pwm通道引脚是PB5,设备树中搜索PB5,发现有I2C设备树节点占用,需要把status位设置为disabled

lcd0设备树节点中的pwm通道是pwm0,即把pwm0设备树节点的引脚改为相应的PB5引脚:

image-3

1.1.2 修改uboot设备树

进入目录:

/home/ubuntu/tina-d1-h/device/config/chips/d1-h/configs/nezha

修改uboot-board.dts:

&lcd0 {
        lcd_used            = <1>;

        lcd_driver_name     = "tft08006";
        lcd_backlight       = <100>;
        lcd_if              = <4>;

        lcd_x               = <480>;
        lcd_y               = <800>;
        lcd_width           = <52>;
        lcd_height          = <52>;
        lcd_dclk_freq       = <25>;

        lcd_pwm_used        = <1>;
        lcd_pwm_ch          = <0>;
        lcd_pwm_freq        = <1000>;
        lcd_pwm_pol         = <0>;
        lcd_pwm_max_limit   = <255>;

        lcd_hbp             = <10>;
        lcd_ht              = <515>;
        lcd_hspw            = <5>;
        lcd_vbp             = <20>;
        lcd_vt              = <830>;
        lcd_vspw            = <5>;

        lcd_dsi_if          = <0>;
        lcd_dsi_lane        = <2>;
        lcd_lvds_if         = <0>;
        lcd_lvds_colordepth = <0>;
        lcd_lvds_mode       = <0>;
        lcd_frm             = <0>;
        lcd_hv_clk_phase    = <0>;
        lcd_hv_sync_polarity= <0>;
		lcd_io_phase        = <0x0000>;
		lcd_dsi_te	        = <0>;
        lcd_gamma_en        = <0>;
        lcd_bright_curve_en = <0>;
        lcd_cmap_en         = <0>;
        lcd_fsync_en        = <0>;
        lcd_fsync_act_time  = <1000>;
        lcd_fsync_dis_time  = <1000>;
        lcd_fsync_pol       = <0>;

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

        lcd_gpio_0 =  <&pio PG 13 GPIO_ACTIVE_HIGH>;
        pinctrl-0 = <&dsi4lane_pins_a>;
        pinctrl-1 = <&dsi4lane_pins_b>;
};

1.2 内核配置

修改内核驱动:

进入目录:

~/tina-d1-h/lichee/linux-5.4/drivers/video/fbdev/sunxi/disp2/disp/lcd

在这里100ASK_T113-PRO开发板适配4寸MIPI屏-Tina SDK - Allwinner / T113s3-PRO - 嵌入式开发问答社区可以下载到相应的驱动,替换到TinaSDK里面的tft08006.ctft08006.h

并修改如下:

image-9

执行ckernel,进入内核配置界面:

m kernel_menuconfig

选上屏幕显示驱动TFT08006

image-4

选上支持显示框架驱动:

image-5

"DISP Driver Support"关乎显示驱动框架的整体启用,而"LCD panels select"则专注于在这个框架下选择和配置具体的LCD面板硬件。前者是基础支持层,后者是具体应用层。

1.3 uboot配置

修改uboot下的驱动:

进入目录:

~/tina-d1-h/lichee/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/lcd

在这里100ASK_T113-PRO开发板适配4寸MIPI屏-Tina SDK - Allwinner / T113s3-PRO - 嵌入式开发问答社区可以下载到相应的驱动,替换到TinaSDK里面的tft08006.ctft08006.h

并修改如下:
image-10

执行cboot,进入uboot配置界面:

make menuconfig

选上屏幕显示驱动:

image-6

选上支持显示框架驱动:

image-7

mipi屏幕显示需要先在uboot阶段初始化。

1.4 显示测试

为了方便测试屏幕显示,可以选上TinaSDK自带的lvgl例程。

执行croot,进入配置界面:

make menuconfig

选上lvgl例程:

image-8

编译make,打包pack

烧录到板子后,执行lv_examples 1:

image-11

2. 触摸适配

2.1 修改内核设备树

根据原理图:

image-12

可以查看:

TP_INT→PB6;TP_RESET→PB4;DSI_SCL→PB0;DSI_SDA→PB1;

进入:

vi /home/ubuntu/tina-d1-h/device/config/chips/d1-h/configs/nezha/linux-5.4/board.dts

image-13

看到PB0、PB1引脚对应的是twi2设备树节点。所以需要在twi2设备树节点中添加触摸屏设备树节点。

&twi2 {
        clock-frequency = <400000>;
        pinctrl-0 = <&twi2_pins_a>;
        pinctrl-1 = <&twi2_pins_b>;
        pinctrl-names = "default", "sleep";
        dmas = <&dma 45>, <&dma 45>;
        dma-names = "tx", "rx";
        status = "okay";

        ctp@38 {
                compatible = "focaltech,fts";
                reg = <0x38>;
                status = "okay";
                interrupt-parent = <&pio>;
                interrupts = <PB 6 IRQ_TYPE_LEVEL_LOW>;
                focaltech,reset-gpio = <&pio PB 4 GPIO_ACTIVE_HIGH>;
                focaltech,irq-gpio = <&pio PB 6 IRQ_TYPE_LEVEL_LOW>;
                focaltech,max-touch-number = <5>;
                focaltech,display-coords = <0 0 480 800>;
                focaltech,reg_vdd = <0x0000001f>;
				focaltech,reg_avdd = <0x0000001f>;
        };
};

如果原来有同样地址为0x38的I2C设备和触摸设备的节点时,可以注释或者删除。

2.2 添加触摸驱动

Tina_SDK自带相应的触摸驱动,只需修改内核配置,把驱动编译进系统。

执行ckernel进入内核目录。

执行m kernel_menuconfig,进入内核配置界面,选上Focaltech Touchscreen<span> </span>

image-14

执行croot,进入SDK根目录,执行make menuconfig进入配置界面,把触摸驱动模块添加进文件系统中:

image-15

2.3 修改触摸驱动

在测试过程中,发现触摸点(x,y)不对,需要修改驱动程序。

进入目录:

tina-d1-h/lichee/linux-5.4/drivers/input/touchscreen/focaltech_touch

修改:

vim focaltech_core.c

两处修改:

  • fts_input_dev_report_a函数中修改,找到相应的位置:
#原来的
input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->au16_x[i]);
input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->au16_y[i]);

#修改的
input_report_abs(data->input_dev, ABS_MT_POSITION_X, -(event->au16_x[i] - 480));
input_report_abs(data->input_dev, ABS_MT_POSITION_Y, -(event->au16_y[i] - 800));
  • fts_input_dev_report_b函数中修改,找到相应的位置:
#原来的
input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->au16_x[i]);
input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->au16_y[i]);

#修改的
input_report_abs(data->input_dev, ABS_MT_POSITION_X, -(event->au16_x[i] - 480));
input_report_abs(data->input_dev, ABS_MT_POSITION_Y, -(event->au16_y[i] - 800));

2.4 修改lvgl驱动配置文件

如果在lvgl的例程上测试触摸功能,需要进入目录:

cd /home/ubuntu/tina-d1-h/package/gui/littlevgl-8/lv_examples/src

修改:

vim lv_drv_conf.h

image-16

如果之前配置过lvgl例程,需要进入目录:

cd /home/ubuntu/tina-d1-h/out/d1-h-nezha/compile_dir/target

删除lv_examples,再进行编译打包烧录。

开发板上执行lv_examples 0,测试:
image-17

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

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

相关文章

MP | 基于kmer的泛基因组分析方法及应用

2024年5月24日&#xff0c;中国农业大学分子设计育种前沿科学中心作物杂种优势与利用教育部重点实验室郭伟龙与姚颖垠团队在《Molecular Plant》发表了题为《A k-mer-based pangenome approach for cataloging seed-storage-protein genes in wheat to facilitate genotype-to-…

成都云飞浩容文化传媒有限公司怎么样?

在电商行业风起云涌的今天&#xff0c;成都云飞浩容文化传媒有限公司以其独特的视角和专业的服务&#xff0c;成为了这一领域的佼佼者。今天&#xff0c;就让我们一起走进云飞浩容&#xff0c;探索其背后的故事和成功的秘诀。 一、专注电商&#xff0c;用心服务 成都云飞浩容文…

HarmonyOS Next应用开发之系统概述

一、鸿蒙系统概述 鸿蒙系统可以分为华为鸿蒙系统&#xff08;HUAWEI HarmonyOS&#xff09;和开源鸿蒙系统&#xff08;OpenHarmony&#xff09;&#xff0c;华为鸿蒙系统是基于OpenHarmony基础之上开发的商业版操作系统。他们二者的关系可以用下图来表示&#xff1a; 1.1、…

翰德恩咨询赋能材料行业上市公司,共筑IPD管理体系新篇章

赋能背景概览 坐落于江苏的某材料行业领军企业&#xff0c;作为国内无机陶瓷膜元件及成套设备领域的佼佼者&#xff0c;以其庞大的生产规模、丰富的产品系列及卓越的研发实力&#xff0c;屹立行业之巅二十余年。公司不仅在新材料研发、技术创新、工艺设计、设备制造及整体解决…

智能眼镜火热发展 AI+AR或将成为主流趋势?

日前&#xff0c;The Verge 发布消息称&#xff0c;AI 智能音频眼镜 Ray-Ban Meta 的销量可能已突破 100 万。Meta 在博客中也指出&#xff0c;Ray-Ban Meta 取得了超预期的市场表现&#xff0c;眼镜的销售速度比生产速度还要快&#xff0c;目前团队正着手于推出更多新款式。Ra…

【ChatGPT 消费者偏好】第二弹:ChatGPT在日常生活中的使用—推文分享—2024-07-10

今天的推文主题还是【ChatGPT & 消费者偏好】 第一篇&#xff1a;哪些动机因素和技术特征的组合能够导致ChatGPT用户中高和低的持续使用意图。第二篇&#xff1a;用户对ChatGPT的互动性、性能期望、努力期望以及社会影响如何影响他们继续使用这些大型语言模型的意向&#x…

羊大师:暑期不“胖”秘籍:羊奶滋养,细嚼慢咽是关键!

夏日炎炎&#xff0c;假期悠长&#xff0c;如何在享受悠闲时光的同时&#xff0c;保持轻盈体态&#xff0c;成了许多人心中的小秘密。今天&#xff0c;就让我们一起揭秘暑期不“胖”的秘籍&#xff0c;让羊奶的滋养与细嚼慢咽的智慧&#xff0c;成为你美丽夏日的守护神。 羊奶轻…

python学习-类

Python是一门面向对象的编程语言&#xff0c;面向对象编程&#xff08;Object OrientedProgramming&#xff0c;OOP&#xff09;是一种编程思想&#xff0c;它把对象作为程序的基本单元&#xff0c;一个对象可以包裹相应的数据以及操作这些数据的函数。一切皆对象&#xff0c;所…

vscode-server安装和部分配置

文章目录 前言code-server安装rpm包安装tar.gz安装 vscode部分配置vscode配置函数跳转安装插件 vscode的structurevscode的hierarchy更改颜色主题 前言 vscode确实彳亍&#xff0c;虽然我觉得Clion(c/c语言版的IDEA)更方便&#xff0c;但是毕竟我没钱买license 这里记录一下网…

【Numpy】np.loadtxt 读取单行数据时报错。(零维数组)

np.loadtxt 读取单行数据时遇到了报错 代码&#xff1a; import numpy as nplabelPath"./name.names" names np.loadtxt(labelPath, dtypestr)print(names[0])names中的数据&#xff1a; 报错&#xff1a; IndexError: too many indices for array: array is 0-…

标准立项 | 深度脱氨生物填料选型指南

编制单位&#xff1a;北京科净源科技股份有限公司、中国地质大学(北京)、中华环保联合会水环境治理专业委员会、清华大学、北京师范大学、中国环境科学研究院、清华大学、天津高端装备研究院、中车环境科技有限公司、云南滇池水务股份有限公司等。

arm环境安装达梦数据库

作者&#xff1a;振鹭 一、安装前准备 1、创建用户和用户组 groupadd dinstall useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba2、修改文件打开最大数 vi /etc/security/limits.conf #文件末尾添加以下四行 dmdba hard nofile 65536 dmdba soft nofile 65536 d…

图片批量重命名bat,一个脚本快速搞定图片批量重命名

BAT 批处理 是一种在 Microsoft Windows 操作系统中使用的脚本语言&#xff0c;用于自动执行一系列预定义的命令或任务。这些命令集合通常存储在一个文本文件中&#xff0c;文件扩展名为 .bat 或 .cmd。批处理脚本可以包含简单的命令&#xff0c;如文件复制、移动、删除&#x…

OpenShift3.11 社区版搭建

一、资源规划 HostnameIPOSCPUMemDiskmaster192.168.78.131CentOS7.92vCPU4G60Gnode1192.168.78.132CentOS7.92vCPU4G60Gnode2192.168.78.133CentOS7.92vCPU4G60G 二、安装过程&#xff1a; 2.1 前期配置 开启所有节点的 SELinux &#xff08;所有主机执行&#xff09; gr…

30斤的东西寄什么快递便宜?寄大货物品用哪家快递公司?

作为一个大学生&#xff0c;搬迁宿舍、放假回家时&#xff0c;总有一些物品需要寄送。对于30斤左右的物品来说&#xff0c;选择合适的快递公司和打包方式可以大大节省费用。今天&#xff0c;我就来给大家分享一些省钱寄快递的方法和技巧&#xff0c;希望能帮到你们。云木寄快递…

【独家揭秘】视频号矩阵系统火爆上线,一键式多平台管理,你的内容营销神器!

在信息爆炸的时代&#xff0c;内容创作者们面临着前所未有的挑战与机遇。如何让自己的内容在众多平台中脱颖而出&#xff0c;快速传播并吸引大量观众&#xff0c;成为了每个创作者关注的焦点。近日&#xff0c;一款名为“迅狐视频号矩阵系统”的神器震撼来袭&#xff0c;它以其…

SpringBoot开发实用篇(三)

一&#xff1a;任务 1&#xff1a;SpringBoot整合Quartz 导入SpringBoot整合quartz的坐标定义具体要执行的任务&#xff0c;继承QuartzJobBean定义工作明细和触发器&#xff0c;并绑定对应关系 2&#xff1a;SpringBoot整合task 开启定时任务功能设置定时执行的任务&#x…

关于《中国PostgreSQL考试认证体系》通知

为响应国家大数据战略发展的号召&#xff0c;进一步推动PostgreSQL开源数据库在国内的快速发展&#xff0c;加强PostgreSQL 数据库相关人才培养&#xff0c;由政府相关部门批准发起&#xff0c;组成中国PostgreSQL认证考试中心及PostgreSQL 中国大学&#xff0c;旨在共同规范和…

滥用云服务进行传播的恶意软件越来越多

由于云服务提供了传统方式所不具备的可扩展性、匿名性和容错性&#xff0c;攻击者越来越多地开始利用云服务来存储、分发和建立 C&C 信道&#xff0c;例如 VCRUM 存储在 AWS 上或 SYK Cryptor 通过 DriveHQ 进行分发。 过去的一个月内&#xff0c;研究人员一直在监控使用这…

Transformer常见问题

1.位置编码有哪些&#xff1f; a. 正弦和余弦位置编码&#xff08;Sinusoidal Positional Encoding&#xff09; 原理&#xff1a;使用固定的正弦和余弦函数来生成位置编码。 b.学习位置编码&#xff08;Learnable Positional Encoding&#xff09; 原理&#xff1a;将位置编…