0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TFT適配LVGL實(shí)踐分享

RT-Thread官方賬號 ? 2024-09-04 08:06 ? 次閱讀

1

前言說明

本章通過FRDM-MCXN947開發(fā)板與正點(diǎn)原子的TFTLCD進(jìn)行實(shí)踐

1.2模塊介紹

硬件:

FRDM-MCXN947開發(fā)板:

該開發(fā)板具有豐富的接口詳細(xì)可參考NXP官方網(wǎng)站,從下圖板載資源中可看出TFTLCD可以通過flexIO進(jìn)行驅(qū)動(dòng)。

7b0ab22a-6a51-11ef-bb4b-92fbcf53809c.png7b0f8d68-6a51-11ef-bb4b-92fbcf53809c.png

FTLCD為正點(diǎn)原子并口屏:

7b26b240-6a51-11ef-bb4b-92fbcf53809c.png

軟件:

下拉RT-Thread代碼

7b3367ec-6a51-11ef-bb4b-92fbcf53809c.png

1.3 軟件開發(fā)

編譯配置工具:env 從 RT-Thread 官網(wǎng)下載 Env工具https://www.rt-thread.org/download.html

代碼編輯器:vscode

下載器:使用LinkServer.exe命令下載,來自于下載Linkserver 1.4.85 installer for Windows (nxp官網(wǎng))

本人在vscode中編輯代碼,通過env工具來配置和編譯,在windows的PowerShell中使用LinkServer.exe命令來進(jìn)行燒錄。命令如下:

7b37dcaa-6a51-11ef-bb4b-92fbcf53809c.png7b3c1e82-6a51-11ef-bb4b-92fbcf53809c.png

有簡單方式可以在vscode中配置tasks.json,在vscode中實(shí)現(xiàn)編輯、編譯和燒錄一站式操作,參見大佬文章:使用VSCode 搭建 RT-Thread 關(guān)于 NXP mcxn947 開發(fā)環(huán)境(二),(https://club.rt-thread.org/ask/article/e46d421071211221.html)本人比較懶,從里面搬了燒錄命令來使用了。

為啥不使用keil進(jìn)行開發(fā)?

主要原因是開發(fā)板一到手,下載的最新版并安裝了MCXN947_DFP的keil就鏈接不上板子,CMSIS-DAP鏈接過程中會(huì)報(bào)錯(cuò)如下:

7b4e4b20-6a51-11ef-bb4b-92fbcf53809c.png

我首先思考的是電腦驅(qū)動(dòng)不對,去官網(wǎng)下載了MCU-LINK_installer_3.133,在安裝過程會(huì)自動(dòng)安裝電腦的驅(qū)動(dòng)(當(dāng)然事后發(fā)現(xiàn),這個(gè)電腦驅(qū)動(dòng)過程其實(shí)不需要,會(huì)自動(dòng)裝),仍然不起作用!在MCU-LINK_installer_3.133目錄下兩個(gè)腳本,可更新板載下載器固件為JLINK方式,需要配合板子上J21跳線帽來操作。

7b590d26-6a51-11ef-bb4b-92fbcf53809c.png

操作步驟:1.安裝跳線帽;2.斷電重啟;3.運(yùn)行program_JLINK.c

7b602a16-6a51-11ef-bb4b-92fbcf53809c.png

md程序進(jìn)行固件更新;4更新完成后,需要取掉跳線帽,然后進(jìn)行斷電重啟,(板子上復(fù)位按鈕不行,必須斷電操作)??梢钥吹絢eil識別到JLINK:

燒錄過程中任然會(huì)有報(bào)錯(cuò):

7b6ffb30-6a51-11ef-bb4b-92fbcf53809c.png

經(jīng)過一番折騰之后,我將板載下載器固件更新回了CMSIS-DAP方式,采用了上述開發(fā)方法。

2

步驟說明

2.1 添加LCD驅(qū)動(dòng)與代碼修改

在ports目錄下添加了LCD驅(qū)動(dòng)和SConscript文件

7bb16c00-6a51-11ef-bb4b-92fbcf53809c.png

添加完文件后,發(fā)現(xiàn)LCD驅(qū)動(dòng)任然沒有被編譯,主要原因是ports上一級目錄中的SConscript文件,沒有采用遍歷所有目錄下的SConscript文件的寫法

方法一:添加遍歷SConscript的寫法

7bc67fe6-6a51-11ef-bb4b-92fbcf53809c.png

方法二:參考其他BSP有在根SConscript文件中,單獨(dú)讀取board/ports/SConscript文件

7bcdc6a2-6a51-11ef-bb4b-92fbcf53809c.png

pin_mux.c中缺少對flexIO并口的配置,添加并口,CS,RS,RD,WR,ReSet引腳的配置,代碼如下:

7bdab1f0-6a51-11ef-bb4b-92fbcf53809c.png7be69ace-6a51-11ef-bb4b-92fbcf53809c.png7bf22114-6a51-11ef-bb4b-92fbcf53809c.png7c0181d6-6a51-11ef-bb4b-92fbcf53809c.png

2.2 編譯運(yùn)行程序

LCDTFT程序運(yùn)行.mp4 https://club.rt-thread.org/file_download/15c229bf648c2991

7c0f3c04-6a51-11ef-bb4b-92fbcf53809c.gif

2.3 lvgl使用

在menuconfig中啟用lvgl

7c3fd79c-6a51-11ef-bb4b-92fbcf53809c.png

在applicaions中添加了lvgl相關(guān)的配置和接口文件

7c43e454-6a51-11ef-bb4b-92fbcf53809c.png

在lv_conf.h中定義了一下幾個(gè)宏定義

7c4d0cd2-6a51-11ef-bb4b-92fbcf53809c.png

在lv_port_disp.c中定義了顯示分辨率、顯示buffer、顯示更新的回調(diào)函數(shù),并在lv_port_disp_init函數(shù)里進(jìn)行注冊

7c5b4d7e-6a51-11ef-bb4b-92fbcf53809c.png

在回調(diào)函數(shù)里調(diào)用lcd驅(qū)動(dòng)里的區(qū)域填充函數(shù)

7c62e872-6a51-11ef-bb4b-92fbcf53809c.png

2.4 lvgl驗(yàn)證

跑一個(gè)benchmark看一看效果

sdf.mp4 https://club.rt-thread.org/file_download/86b25c6fb1cde3d9


lvgl跑出來的幀率為18

7c6ae0b8-6a51-11ef-bb4b-92fbcf53809c.png

采用編譯優(yōu)化等級O1,導(dǎo)致LCD功能有問題,屏幕不顯示。于是LCD驅(qū)動(dòng)部分代碼采用O0,其他代碼采用O1,修改編譯腳本rtconfig.py,腳本默認(rèn)走的是debug分支,將其修改到release分支

7c7b2eb4-6a51-11ef-bb4b-92fbcf53809c.png

當(dāng)然這個(gè)修改會(huì)對整個(gè)工程產(chǎn)生影響,需要在LCD驅(qū)動(dòng)部分編譯腳本中添加局部編譯參數(shù)

7c86dd54-6a51-11ef-bb4b-92fbcf53809c.png

lvgl幀率提升至26

7c8e8dc4-6a51-11ef-bb4b-92fbcf53809c.png

當(dāng)然嘗試了雙buf和優(yōu)化等級O3,幀率沒有再提高

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • TFT
    TFT
    +關(guān)注

    關(guān)注

    10

    文章

    387

    瀏覽量

    111989
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5380

    瀏覽量

    100709
  • LVGL
    +關(guān)注

    關(guān)注

    1

    文章

    97

    瀏覽量

    3461
收藏 0人收藏

    評論

    相關(guān)推薦

    如何優(yōu)雅的在OpenMV上使用LVGL

    LVGL適配到OpenMV工程menuconfig配置LVGL配置在SDK中的openmv工程的基礎(chǔ)上進(jìn)行修改,添加LVGLV8的packages包,使用scons
    的頭像 發(fā)表于 07-31 08:36 ?1573次閱讀
    如何優(yōu)雅的在OpenMV上使用<b class='flag-5'>LVGL</b>

    如何在esp8266 Node MCU的硬件上部署LVGL

    前言本文,介紹如何在esp8266 Node MCU的硬件上部署LVGL項(xiàng)目。使用的屏幕使用型號是ST7735 TFT 128x128屏幕。(一)arduinoIDE esp8266環(huán)境配置自行
    發(fā)表于 12-08 07:15

    開源輕量級顯示框架LVGL簡介

    #01 LVGL是什么LVGL的作者是來自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C語言編寫,以實(shí)現(xiàn)最大的兼容性(與C ++兼容),模擬器可在沒有嵌入式硬件的PC上
    發(fā)表于 03-14 09:28

    開源輕量級顯示框架LVGL簡介

    #01 LVGL是什么LVGL的作者是來自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C語言編寫,以實(shí)現(xiàn)最大的兼容性(與C ++兼容),模擬器可在沒有嵌入式硬件的PC上
    發(fā)表于 03-31 18:49

    【FireBeetle 2 ESP32-S3開發(fā)板體驗(yàn)】基于GDI接口的高清IPS屏的LVGL使用(方法通用所有支持接口的屏)

    使用如下的Arduino擴(kuò)展庫: 使用上述的 TFT_eSPI 本身已經(jīng)可以驅(qū)動(dòng)通常的SPI顯示屏,是一款較為常用的顯示屏支持庫。而LVGL是基于TFT_eSPI,來提供運(yùn)行支持的。 需要注意的是,不要
    發(fā)表于 08-05 13:50

    使用全志R128將LVGL運(yùn)行在SPI TFT GUI上

    LVGL 與 SPI TFT GUI 本次使用的是 Dshan_Display Module,如下圖: 引腳配置如下: R128 Devkit TFT 模塊 PA12 CS PA13 SCK
    發(fā)表于 10-23 13:56

    全面解讀目前LVGL的應(yīng)用小知識

    概述 本文介紹目前LVGL的應(yīng)用小知識,希望對采用MCU設(shè)計(jì)UI界面的用戶有所啟發(fā),開發(fā)出界面更友好的消費(fèi)品或者工業(yè)產(chǎn)品,造福大眾。 01. LVGL系統(tǒng)架構(gòu) LVGL系統(tǒng)框架 應(yīng)用程序創(chuàng)建GUI
    的頭像 發(fā)表于 06-04 12:01 ?3.1w次閱讀
    全面解讀目前<b class='flag-5'>LVGL</b>的應(yīng)用小知識

    LuatOS之LVGL字體篇

    前言之前展示過Luatos在win32上運(yùn)行LVGL的效果,今天帶來LVGL的字體篇介紹LVGL字體支持很全,支持 UTF-8 編碼的 Unicode 字符,分內(nèi)部字體和外部字體,字體制作工具也很多
    發(fā)表于 11-23 17:51 ?13次下載
    LuatOS之<b class='flag-5'>LVGL</b>字體篇

    LVGL系列(二)之二 LVGL常見問題解答 整理自官方文檔

    “本文大部分內(nèi)容來自LVGL官方文檔,手翻版,如有錯(cuò)誤歡迎指正?!毕盗形恼履夸浺弧?b class='flag-5'>LVGL系列(一)一文了解LVGL的學(xué)習(xí)路線輕松了解LVGL的全部二、
    發(fā)表于 11-24 13:36 ?12次下載
    <b class='flag-5'>LVGL</b>系列(二)之二 <b class='flag-5'>LVGL</b>常見問題解答 整理自官方文檔

    esp8266 NodeMcu硬件環(huán)境下使用lvgl

    前言本文,介紹如何在esp8266 Node MCU的硬件上部署LVGL項(xiàng)目。使用的屏幕使用型號是ST7735 TFT 128x128屏幕。(一)arduinoIDE esp8266環(huán)境配置自行
    發(fā)表于 11-25 19:06 ?33次下載
    esp8266 NodeMcu硬件環(huán)境下使用<b class='flag-5'>lvgl</b>

    LVGL 優(yōu)化幀率技巧

    目錄標(biāo)題前文LVGL幀率限制代碼優(yōu)化等級前文LVGL——PC模擬器仿真模擬+VS2017f429 discovery開發(fā)版 LVGL移植(帶操作系統(tǒng))首先就個(gè)人用過的幾個(gè)芯片而言,可能還是要F4系列
    發(fā)表于 12-07 13:21 ?16次下載
    <b class='flag-5'>LVGL</b> 優(yōu)化幀率技巧

    【開鴻智谷NiobeU4開發(fā)板免費(fèi)試用體驗(yàn)】移植LVGL

    本文來源電子發(fā)燒友社區(qū),作者:李先生, 帖子地址: https://bbs.elecfans.com/jishu_2307453_1_1.html 前言 本開發(fā)板帶一個(gè)135x130的TFT屏幕
    的頭像 發(fā)表于 10-14 15:23 ?1333次閱讀
    【開鴻智谷NiobeU4開發(fā)板免費(fèi)試用體驗(yàn)】移植<b class='flag-5'>LVGL</b>

    LVGL Simulation工程

    最近在玩一個(gè)開源項(xiàng)目,用到ESP32,玩著玩著感覺開源項(xiàng)目的UI太枯燥了,于是了解到了LVGL,網(wǎng)上很多關(guān)于ESP32跑LVGL的現(xiàn)有工程
    的頭像 發(fā)表于 05-11 09:12 ?1333次閱讀
    <b class='flag-5'>LVGL</b> Simulation工程

    Hi3861移植LVGL教程

    給 Hi3861 適配了硬件 spi ,master 模式下最高 spi 速率可以達(dá)到 40M,用來驅(qū)動(dòng) oled 屏幕。適配過程遇到了一個(gè)芯片bug,困擾了很久,clk 管腳驅(qū)動(dòng)能力差,需要外接一個(gè)上拉電阻才能正常運(yùn)行。適配
    的頭像 發(fā)表于 05-18 09:23 ?2654次閱讀
    Hi3861移植<b class='flag-5'>LVGL</b>教程

    如何在MDK中部署LVGL

    LVGL的剛剛完成了對LVGL8的維護(hù)更新,發(fā)布了v8.3.5版。相對master分支上正在開發(fā)的LVGL9,該版本是一個(gè)吐血推薦的穩(wěn)定版本。
    的頭像 發(fā)表于 07-27 14:41 ?1598次閱讀
    如何在MDK中部署<b class='flag-5'>LVGL</b>

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品