三、LCD与LVGL
1. LCD硬件设计
为了满足后续的一些屏幕交互、摄像头以及图像识别相关应用,我们需要准备一块屏幕,由于开发板屏幕接口时NXP的FlexIO,普通屏幕的接口并不能直接连接开发板,有钞能力的伙伴可以直接官网购买,我采用了下面自行设计的LCD部分,首先查看官方屏幕信息:
NXP官方屏幕:https://www.nxp.com.cn/design/design-center/development-boards-and-designs/general-purpose-mcus/3-5-480x320-ips-tft-lcd-module:LCD-PAR-S035
官网提供了屏幕的资料,首先查看原理图,我们关注两个部分,一个是接口部分一个是屏幕部分:
开发板FlexIO接口位置如下:
以及双排母的接口:
接下来就是设计自己的屏幕转接为FlexIO的接口形式,建议采用ST7796驱动的(与官方一致),其他屏幕型号需要自己移植或调整,以下是我设计的屏幕转接板的原理图:
为了方便布线和快速验证,端子座没有放置在背面,我这块屏幕为ST7796驱动的320 * 480 尺寸的屏幕,二十几块钱,焊接后的实物如下:
然后插入开发板的FlexIO接口:
2. LVGL Demo
官方提供了几个基于FlexIO+ST7796屏幕驱动的LVGL例程,例如如下路径的工程文件:
.\SDK_2_16_100_MCXN947\boards\mcxn9xxevk\lvgl_examples\lvgl_demo_benchmark\cm33_core0\mdk
直接烧录后发现在我这个屏幕中白屏无画面,接下来我们调整下代码,首先打开”lvgl_support.h“文件,可以看到当前屏幕尺寸定义的为800 * 480的大屏:
由于我这边采用的是320 * 480,最直接的方法是修改下面宏定义,使能BOARD_LCD_S035:
再次编译烧录可见下面画面,但是有点问题:
第一感觉是上面的LVGL画面与记忆中的LVGL Benchmark 例程颜色并不一致,似乎黑白颠倒了,翻了翻屏幕初始化代码,果然,程序默认开启了颜色反转,我们把"./lcdc/fsl_st7796s.c"文件中ST7796S_Config函数内的反转代码注释掉:
然后再次编译烧录,可以发现画面已经正常显示:
最后附一张过程动态效果图: