1
前言说明
本章通过FRDM-MCXN947开发板与正点原子的TFTLCD进行实践
1.2模块介绍
硬件:
FRDM-MCXN947开发板:
该开发板具有丰富的接口详细可参考
NXP官方网站
,从下图板载资源中可看出TFTLCD可以通过flexIO进行驱动。
FTLCD为正点原子并口屏:
软件:
下拉RT-Thread代码
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命令来进行烧录。命令如下:
有简单方式可以在vscode中配置tasks.json,在vscode中实现编辑、编译和烧录一站式操作,参见大佬文章:
使用VSCode 搭建 RT-Thread 关于 NXP mcxn947 开发环境(二)
,(
https://club.rt-thread.org/ask/article/e46d421071211221.html
)本人比较懒,从里面搬了烧录命令来使用了。
为啥不使用keil进行开发?
主要原因是开发板一到手,下载的最新版并安装了MCXN947_DFP的keil就链接不上板子,CMSIS-DAP链接过程中会报错如下:
我首先思考的是电脑驱动不对,去官网下载了MCU-LINK_installer_3.133,在安装过程会自动安装电脑的驱动(当然事后发现,这个电脑驱动过程其实不需要,会自动装),仍然不起作用!在MCU-LINK_installer_3.133目录下两个脚本,可更新板载下载器固件为JLINK方式,需要配合板子上J21跳线帽来操作。
操作步骤:1.安装跳线帽;2.断电重启;3.运行program_JLINK.c
md程序进行固件更新;4更新完成后,需要取掉跳线帽,然后进行断电重启,(板子上复位按钮不行,必须断电操作)。可以看到keil识别到JLINK:
烧录过程中任然会有报错:
经过一番折腾之后,我将板载下载器固件更新回了CMSIS-DAP方式,采用了上述开发方法。
2
步骤说明
2.1 添加LCD驱动与代码修改
在ports目录下添加了LCD驱动和SConscript文件
添加完文件后,发现LCD驱动任然没有被编译,主要原因是ports上一级目录中的SConscript文件,没有采用遍历所有目录下的SConscript文件的写法
方法一:添加遍历SConscript的写法
方法二:参考其他BSP有在根SConscript文件中,单独读取board/ports/SConscript文件
在pin_mux.c中缺少对flexIO并口的配置,添加并口,CS,RS,RD,WR,ReSet引脚的配置,代码如下:
2.2 编译运行程序
LCDTFT程序运行.mp4
(
https://club.rt-thread.org/file_download/15c229bf648c2991
)
2.3 lvgl使用
在menuconfig中启用lvgl
在applicaions中添加了lvgl相关的配置和接口文件
在lv_conf.h中定义了一下几个宏定义
在lv_port_disp.c中定义了显示分辨率、显示buffer、显示更新的回调函数,并在lv_port_disp_init函数里进行注册
在回调函数里调用lcd驱动里的区域填充函数
2.4 lvgl验证
跑一个benchmark看一看效果
sdf.mp4
(
https://club.rt-thread.org/file_download/86b25c6fb1cde3d9
)
lvgl跑出来的帧率为18
采用编译优化等级O1,导致LCD功能有问题,屏幕不显示。于是LCD驱动部分代码采用O0,其他代码采用O1,修改编译脚本rtconfig.py,脚本默认走的是debug分支,将其修改到release分支
当然这个修改会对整个工程产生影响,需要在LCD驱动部分编译脚本中添加局部编译参数
lvgl帧率提升至26
当然尝试了双buf和优化等级O3,帧率没有再提高