百問網全志D1h開發板MIPI屏適配

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.pswp.cn/diannao/44350.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44350.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44350.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

類的生命周期詳解

第1部分&#xff1a;引言 1.1 面向對象編程簡介 面向對象編程&#xff08;OOP&#xff09;是一種編程范式&#xff0c;它使用“對象”來設計軟件。對象可以包含數據&#xff08;通常稱為屬性或字段&#xff09;和代碼&#xff08;通常稱為方法或函數&#xff09;。OOP的核心概…

Vue 項目中 history 路由模式的使用

在最近幫客戶開發的一個項目中&#xff0c;由于項目的特殊性&#xff0c;需要用到 Vue 中的 history路由模式。該模式使用時會涉及到“上傳白屏”和“刷新 404 問題”。在幫助客戶解決這兩個問題的過程中&#xff0c;總結問題的解決方案并記錄下來&#xff0c;希望能夠保留這篇…

眼外傷險失明輾轉成都愛爾眼科就醫保視力,患者復查送錦旗!

近日患者王先生到成都愛爾眼科醫院進行硅油取出后的二次復查&#xff08;硅油為眼底病手術中一種“填充物”&#xff09;&#xff0c;他激動地為蔡裕主任獻上錦旗&#xff0c;感謝醫生的救治避免了失明。 意外發生在半年之前&#xff0c;王先生不慎滑倒右眼磕碰到茶幾邊緣&…

【前端從入門到精通:第九課:CSS3新增屬性及伸縮盒布局】

彈性盒模型 介紹 伸縮盒模型也叫彈性盒模型&#xff0c;或flex。它決定一個盒子在其它盒子中的分布&#xff0c;以及如何處理可用的空間。使用該模型&#xff0c;可以輕松的創建“自適應”瀏覽器窗口的流動布局。 flexbox是一個很新的東西&#xff0c;在w3c希望可以使用flexbo…

力扣1472.設計瀏覽器歷史記錄

力扣1472.設計瀏覽器歷史記錄 用雙指針記錄歷史記錄 以及棧頂高度移動時會直接把之前的記錄消掉 class BrowserHistory {int pos-1;int top0;string history[5010];public:BrowserHistory(string homepage) {visit(homepage);}void visit(string url) {pos ;top pos;histor…

[激光原理與應用-103]:配電箱的柜門與柜體為啥要接一根導線?

目錄 一、概述 1.1、電氣安全 1.2、減少電磁干擾 1.3、方便維修和更換 1.4、其他因素 一、鉸鏈的材質 二、鉸鏈的設計 三、結論 二、正確連接銅線的步驟 1、選擇正確的銅線 2、清潔連接處 3、正確連接 4、檢查連接是否牢固 參考&#xff1a; 一、概述 配電機柜上…

探索AI藝術的無限可能:SD模型與大模型的融合之美

藝術與科技的結合從未像今天這樣緊密。AI繪畫技術正以驚人的速度改變著我們創作和欣賞藝術的方式。在這場革命中&#xff0c;Stable Diffusion&#xff08;SD&#xff09;模型扮演了至關重要的角色。 &#x1f31f; SD模型&#xff1a;藝術創作的新維度 SD模型以其生成高質量圖…

力扣682.棒球比賽

力扣682.棒球比賽 數組模擬棧記錄分數 class Solution {public:int calPoints(vector<string>& ops) {int res0;vector<int> points;for(auto &op:ops){int n points.size();char c op[0];if(c ){res points[n-1] points[n-2];points.push_back(po…

在數據庫設計中,選擇自增 ID 還是 GUID?這篇文章講清楚

在數據庫設計中&#xff0c;選擇自增 ID 還是 GUID 取決于具體的應用場景和需求。 自增 ID 的優點&#xff1a; 性能較好&#xff1a;在插入數據時&#xff0c;自增 ID 的生成速度通常較快&#xff0c;因為數據庫可以高效地順序分配新的 ID 值。存儲空間小&#xff1a;通常只…

1.9-改進的CBOW模型的實現

文章目錄 0引言1 CBOW模型的重構1.1模型初始化1.2模型的前向計算1.3模型的反向傳播 2總結 0引言 前面講述了對word2vec高速化的改進&#xff1a; 改進輸入側的計算&#xff0c;變成Embedding&#xff0c;即從權重矩陣中選取特定的行&#xff1b;改進輸出側的計算&#xff0c;包…

Perl中的文件系統守衛:實現自定義訪問控制

&#x1f6e1;? Perl中的文件系統守衛&#xff1a;實現自定義訪問控制 在系統編程中&#xff0c;文件系統訪問控制是確保數據安全和完整性的關鍵機制。Perl作為一種功能強大的腳本語言&#xff0c;提供了豐富的接口來實現自定義的文件系統訪問控制。本文將深入探討如何在Perl…

【C語言】【排序算法】----- 歸并排序

由于最近要考試&#xff0c;好久沒有發博客了&#xff0c;非常抱歉大家對我的支持。之后我會不斷更新博客&#xff0c;繼續創作出高質量的文章&#xff0c;希望能幫到大家&#xff01; 文章目錄 一、歸并排序基本思想二、遞歸實現三、非遞歸實現四、效率分析 一、歸并排序基本…

Foxit Reader:高效、安全、多功能的PDF閱讀器技術解析

引言 在當今數字化時代&#xff0c;PDF&#xff08;Portable Document Format&#xff09;文檔已成為工作、學習和生活中不可或缺的一部分。作為處理PDF文件的重要工具&#xff0c;PDF閱讀器的選擇顯得尤為關鍵。今天&#xff0c;我們將深入探討一款備受推崇的PDF閱讀器——Fo…

KDP數據分析實戰:從0到1完成數據實時采集處理到可視化

智領云自主研發的開源輕量級Kubernetes數據平臺&#xff0c;即Kubernetes Data Platform (簡稱KDP)&#xff0c;能夠為用戶提供在Kubernetes上的一站式云原生數據集成與開發平臺。在最新的v1.1.0版本中&#xff0c;用戶可借助 KDP 平臺上開箱即用的 Airflow、AirByte、Flink、K…

MySQL數據庫中利用定時作業去殺死長時查詢以防止數據庫死鎖風險

MySQL數據庫中沒有SQLServer數據庫中那種傳統的定時作業的概念。但是提供了一種【事件】的東西&#xff0c;基本和定時作業貌離神合。 下面我們在MySQL中創建一個事件&#xff0c;它的作用是去監測時間很長的異常查詢&#xff0c;并且去主動殺掉該線程以防止數據庫發生死鎖的風…

探索Perl的自動清潔工:垃圾收集機制全解析

&#x1f9f9; 探索Perl的自動清潔工&#xff1a;垃圾收集機制全解析 Perl是一種高級編程語言&#xff0c;以其強大的文本處理能力而聞名。在Perl中&#xff0c;內存管理對于開發高效且穩定的應用程序至關重要。Perl提供了自動垃圾收集機制&#xff0c;幫助開發者管理內存&…

關于原型和原型鏈的學習和實踐

在前端面試中&#xff0c;原型和原型鏈始終是一個避不開的問題&#xff0c;今天就弄明白! 原型和原型鏈 對象的創建方式工廠模式構造函數模式原型模式 原型和原型鏈實踐 對象的創建方式 原型和原型鏈都是關于對象的內容&#xff0c;先來看一下JavaScript中對象的構建方式。 工…

代碼隨想錄(day3)有序數組的平方

暴力求解法&#xff1a; 注意&#xff1a;需要確定范圍&#xff0c;比如nums.sort()是在for循環之外&#xff0c;根據函數的功能來確定 return返回的是nums&#xff0c;而不是nums[i]因為返回的是整個數組 class Solution(object):def sortedSquares(self, nums):for i in r…

人話學Python-基礎篇-數字計算

一&#xff1a;數字類型 對于最常見的數據類型,數字在Python中分為三類&#xff1a; 整型(int) 表示的是整數類型的所有數字&#xff0c;包括正整數&#xff0c;負整數和0。和C語言不同的是&#xff0c;Python中的int型沒有范圍的限制&#xff0c;理論上可以從無限小的整數取到…

RedHat運維-Ansible自動化運維基礎22-rhel-system-roles

1. system_roles的官方文檔的位置是___________________________________&#xff1b; 2. system_roles的官方文檔的位置是___________________________________&#xff1b; 3. system_roles的官方文檔的位置是___________________________________&#xff1b; 4. 安裝rhel-s…