0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TFT适配LVGL实践分享

RT-Thread官方账号 2024-09-04 08:06 次阅读

1

前言说明

本章通过FRDM-MCXN947开发板与正点原子的TFTLCD进行实践

1.2模块介绍

硬件

FRDM-MCXN947开发板:

该开发板具有丰富的接口详细可参考NXP官方网站,从下图板载资源中可看出TFTLCD可以通过flexIO进行驱动。

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

FTLCD为正点原子并口屏:

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

软件:

下拉RT-Thread代码

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

1.3 软件开发

编译配置工具:env 从 RT-Thread 官网下载 Env工具https://www.rt-thread.org/download.html

代码编辑器:vscode

下载器:使用LinkServer.exe命令下载,来自于下载Linkserver 1.4.85 installer for Windows (nxp官网)

本人在vscode中编辑代码,通过env工具来配置和编译,在windows的PowerShell中使用LinkServer.exe命令来进行烧录。命令如下:

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

有简单方式可以在vscode中配置tasks.json,在vscode中实现编辑、编译和烧录一站式操作,参见大佬文章:使用VSCode 搭建 RT-Thread 关于 NXP mcxn947 开发环境(二),(https://club.rt-thread.org/ask/article/e46d421071211221.html)本人比较懒,从里面搬了烧录命令来使用了。

为啥不使用keil进行开发?

主要原因是开发板一到手,下载的最新版并安装了MCXN947_DFP的keil就链接不上板子,CMSIS-DAP链接过程中会报错如下:

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

我首先思考的是电脑驱动不对,去官网下载了MCU-LINK_installer_3.133,在安装过程会自动安装电脑的驱动(当然事后发现,这个电脑驱动过程其实不需要,会自动装),仍然不起作用!在MCU-LINK_installer_3.133目录下两个脚本,可更新板载下载器固件为JLINK方式,需要配合板子上J21跳线帽来操作。

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

操作步骤:1.安装跳线帽;2.断电重启;3.运行program_JLINK.c

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

md程序进行固件更新;4更新完成后,需要取掉跳线帽,然后进行断电重启,(板子上复位按钮不行,必须断电操作)。可以看到keil识别到JLINK:

烧录过程中任然会有报错:

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

经过一番折腾之后,我将板载下载器固件更新回了CMSIS-DAP方式,采用了上述开发方法。

2

步骤说明

2.1 添加LCD驱动与代码修改

在ports目录下添加了LCD驱动和SConscript文件

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

添加完文件后,发现LCD驱动任然没有被编译,主要原因是ports上一级目录中的SConscript文件,没有采用遍历所有目录下的SConscript文件的写法

方法一:添加遍历SConscript的写法

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

方法二:参考其他BSP有在根SConscript文件中,单独读取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 编译运行程序

LCDTFT程序运行.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相关的配置和接口文件

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

在lv_conf.h中定义了一下几个宏定义

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

在lv_port_disp.c中定义了显示分辨率、显示buffer、显示更新的回调函数,并在lv_port_disp_init函数里进行注册

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

在回调函数里调用lcd驱动里的区域填充函数

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

2.4 lvgl验证

跑一个benchmark看一看效果

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


lvgl跑出来的帧率为18

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

采用编译优化等级O1,导致LCD功能有问题,屏幕不显示。于是LCD驱动部分代码采用O0,其他代码采用O1,修改编译脚本rtconfig.py,脚本默认走的是debug分支,将其修改到release分支

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

当然这个修改会对整个工程产生影响,需要在LCD驱动部分编译脚本中添加局部编译参数

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

lvgl帧率提升至26

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

当然尝试了双buf和优化等级O3,帧率没有再提高

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • TFT
    TFT
    +关注

    关注

    10

    文章

    381

    浏览量

    110562
  • 开发板
    +关注

    关注

    25

    文章

    4754

    浏览量

    96090
  • LVGL
    +关注

    关注

    0

    文章

    79

    浏览量

    2731
收藏 人收藏

    评论

    相关推荐

    如何优雅的在OpenMV上使用LVGL

    LVGL适配到OpenMV工程menuconfig配置LVGL配置在SDK中的openmv工程的基础上进行修改,添加LVGLV8的packages包,使用scons
    的头像 发表于 07-31 08:36 793次阅读
    如何优雅的在OpenMV上使用<b class='flag-5'>LVGL</b>

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

    前言本文,介绍如何在esp8266 Node MCU的硬件上部署LVGL项目。使用的屏幕使用型号是ST7735 TFT 128x128屏幕。(一)arduinoIDE esp8266环境配置自行
    发表于 12-08 07:15

    开源轻量级显示框架LVGL简介

    #01 LVGL是什么LVGL的作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C语言编写,以实现最大的兼容性(与C ++兼容),模拟器可在没有嵌入式硬件的PC上
    发表于 03-31 18:49

    【FireBeetle 2 ESP32-S3开发板体验】基于GDI接口的高清IPS屏的LVGL使用(方法通用所有支持接口的屏)

    使用如下的Arduino扩展库: 使用上述的 TFT_eSPI 本身已经可以驱动通常的SPI显示屏,是一款较为常用的显示屏支持库。而LVGL是基于TFT_eSPI,来提供运行支持的。 需要注意的是,不要
    发表于 08-05 13:50

    使用全志R128将LVGL运行在SPI TFT GUI上

    LVGL 与 SPI TFT GUI 本次使用的是 Dshan_Display Module,如下图: 引脚配置如下: R128 Devkit TFT 模块 PA12 CS PA13 SCK
    发表于 10-23 13:56

    全面解读目前LVGL的应用小知识

    概述 本文介绍目前LVGL的应用小知识,希望对采用MCU设计UI界面的用户有所启发,开发出界面更友好的消费品或者工业产品,造福大众。 01. LVGL系统架构 LVGL系统框架 应用程序创建GUI
    的头像 发表于 06-04 12:01 3w次阅读
    全面解读目前<b class='flag-5'>LVGL</b>的应用小知识

    LuatOS之LVGL字体篇

    前言之前展示过Luatos在win32上运行LVGL的效果,今天带来LVGL的字体篇介绍LVGL字体支持很全,支持 UTF-8 编码的 Unicode 字符,分内部字体和外部字体,字体制作工具也很多
    发表于 11-23 17:51 13次下载
    LuatOS之<b class='flag-5'>LVGL</b>字体篇

    LVGL系列(二)之二 LVGL常见问题解答 整理自官方文档

    “本文大部分内容来自LVGL官方文档,手翻版,如有错误欢迎指正。”系列文章目录一、LVGL系列(一)一文了解LVGL的学习路线轻松了解LVGL的全部二、
    发表于 11-24 13:36 12次下载
    <b class='flag-5'>LVGL</b>系列(二)之二 <b class='flag-5'>LVGL</b>常见问题解答 整理自官方文档

    esp8266 NodeMcu硬件环境下使用lvgl

    前言本文,介绍如何在esp8266 Node MCU的硬件上部署LVGL项目。使用的屏幕使用型号是ST7735 TFT 128x128屏幕。(一)arduinoIDE esp8266环境配置自行
    发表于 11-25 19:06 32次下载
    esp8266 NodeMcu硬件环境下使用<b class='flag-5'>lvgl</b>

    LVGL 优化帧率技巧

    目录标题前文LVGL帧率限制代码优化等级前文LVGL——PC模拟器仿真模拟+VS2017f429 discovery开发版 LVGL移植(带操作系统)首先就个人用过的几个芯片而言,可能还是要F4系列
    发表于 12-07 13:21 15次下载
    <b class='flag-5'>LVGL</b> 优化帧率技巧

    【开鸿智谷NiobeU4开发板免费试用体验】移植LVGL

    本文来源电子发烧友社区,作者:李先生, 帖子地址: https://bbs.elecfans.com/jishu_2307453_1_1.html 前言 本开发板带一个135x130的TFT屏幕
    的头像 发表于 10-14 15:23 1054次阅读
    【开鸿智谷NiobeU4开发板免费试用体验】移植<b class='flag-5'>LVGL</b>

    LVGL Simulation工程

    最近在玩一个开源项目,用到ESP32,玩着玩着感觉开源项目的UI太枯燥了,于是了解到了LVGL,网上很多关于ESP32跑LVGL的现有工程
    的头像 发表于 05-11 09:12 986次阅读
    <b class='flag-5'>LVGL</b> Simulation工程

    Hi3861移植LVGL教程

    给 Hi3861 适配了硬件 spi ,master 模式下最高 spi 速率可以达到 40M,用来驱动 oled 屏幕。适配过程遇到了一个芯片bug,困扰了很久,clk 管脚驱动能力差,需要外接一个上拉电阻才能正常运行。适配
    的头像 发表于 05-18 09:23 1849次阅读
    Hi3861移植<b class='flag-5'>LVGL</b>教程

    【RISC-V &amp;amp; LVGL】现象级爆红的开源显示框架——LVGL究竟蕴藏怎样的魔力

    #01LVGL简介实用自行车码表具有科技感的奖杯实现这些DIY作品的背后,都有同样一个功能强大的GUI——LVGLLVGL的作者是来自匈牙利的GaborKiss-Vamosikisvegabor
    的头像 发表于 03-15 09:50 3019次阅读
    【RISC-V &amp;amp; <b class='flag-5'>LVGL</b>】现象级爆红的开源显示框架——<b class='flag-5'>LVGL</b>究竟蕴藏怎样的魔力

    如何在MDK中部署LVGL

    LVGL的刚刚完成了对LVGL8的维护更新,发布了v8.3.5版。相对master分支上正在开发的LVGL9,该版本是一个吐血推荐的稳定版本。
    的头像 发表于 07-27 14:41 1097次阅读
    如何在MDK中部署<b class='flag-5'>LVGL</b>