全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

TFT适配LVGL实践分享

时间:2024-09-04 08:06

人气:

作者:admin

标签: LVGL  TFT  开发板 

导读:1前言说明本章通过FRDM-MCXN947开发板与正点原子的TFTLCD进行实践1.2模块介绍硬件:FRDM-MCXN947开发板:该开发板具有丰富的接口详细可参考NXP官方...

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,帧率没有再提高

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信