【MCXN947】03 - LCD与LVGL——NXP-MCX-N9XX-BRK开发板基础教程

【MCXN947】03 - LCD与LVGL——NXP-MCX-N9XX-BRK开发板基础教程

三、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
[Pasted image 20241103225451.png]
官网提供了屏幕的资料,首先查看原理图,我们关注两个部分,一个是接口部分一个是屏幕部分:
[Pasted image 20241103181036.png]
开发板FlexIO接口位置如下:
[Pasted image 20241103223540.png]
以及双排母的接口:
[Pasted image 20241105192653.png]
接下来就是设计自己的屏幕转接为FlexIO的接口形式,建议采用ST7796驱动的(与官方一致),其他屏幕型号需要自己移植或调整,以下是我设计的屏幕转接板的原理图:
[Pasted image 20241108123530.png]
为了方便布线和快速验证,端子座没有放置在背面,我这块屏幕为ST7796驱动的320 * 480 尺寸的屏幕,二十几块钱,焊接后的实物如下:
[3f677bab1179448d2fbc0e885896191.jpg]
然后插入开发板的FlexIO接口:
[微信图片_20241108124413.jpg]

2. LVGL Demo

官方提供了几个基于FlexIO+ST7796屏幕驱动的LVGL例程,例如如下路径的工程文件:

.\SDK_2_16_100_MCXN947\boards\mcxn9xxevk\lvgl_examples\lvgl_demo_benchmark\cm33_core0\mdk

[Pasted image 20241108122056.png]
直接烧录后发现在我这个屏幕中白屏无画面,接下来我们调整下代码,首先打开”lvgl_support.h“文件,可以看到当前屏幕尺寸定义的为800 * 480的大屏:
[Pasted image 20241108125147.png]
由于我这边采用的是320 * 480,最直接的方法是修改下面宏定义,使能BOARD_LCD_S035:
[Pasted image 20241108125407.png]
再次编译烧录可见下面画面,但是有点问题:
[微信图片_20241108125507.jpg]
第一感觉是上面的LVGL画面与记忆中的LVGL Benchmark 例程颜色并不一致,似乎黑白颠倒了,翻了翻屏幕初始化代码,果然,程序默认开启了颜色反转,我们把"./lcdc/fsl_st7796s.c"文件中ST7796S_Config函数内的反转代码注释掉:
[Pasted image 20241108191106.png]
然后再次编译烧录,可以发现画面已经正常显示:
[7ba650ad0e73cc72dce7701ee39d388.jpg]
最后附一张过程动态效果图:
[11月8日.gif]

Licensed under CC BY-NC-SA 4.0