TFT适配LVGL实践分享

描述

 

1

 

前言说明

 

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

 

 

1.2模块介绍

硬件:

FRDM-MCXN947开发板:

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

LVGLLVGL

FTLCD为正点原子并口屏:

LVGL

软件:

下拉RT-Thread代码

LVGL

 

 

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命令来进行烧录。命令如下:

LVGLLVGL

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

为啥不使用keil进行开发?

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

LVGL

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

LVGL

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

LVGL

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

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

LVGL

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

 

2

 

步骤说明

 

 

 

2.1 添加LCD驱动与代码修改

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

LVGL

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

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

LVGL

方法二:参考其他BSP有在根SConscript文件中,单独读取board/ports/SConscript文件

LVGL

在pin_mux.c中缺少对flexIO并口的配置,添加并口,CS,RS,RD,WR,ReSet引脚的配置,代码如下:

LVGLLVGLLVGLLVGL

 

 

2.2 编译运行程序

LCDTFT程序运行.mp4 https://club.rt-thread.org/file_download/15c229bf648c2991

LVGL

 

 

2.3 lvgl使用

在menuconfig中启用lvgl

LVGL

在applicaions中添加了lvgl相关的配置和接口文件

LVGL

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

LVGL

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

LVGL

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

LVGL

 

 

2.4 lvgl验证

跑一个benchmark看一看效果

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


 

lvgl跑出来的帧率为18

LVGL

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

LVGL

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

LVGL

lvgl帧率提升至26

LVGL

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

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分