3、第一个移植项目:从零创建TouchGFX工程、配置LCD接口(LTDC/RGB565/RGB888)、配置触摸屏(I2C/SPI)、编译与下载验证
好,咱们正式开始动手。
前面两章讲了理论,这一章咱们直接干。从零创建一个TouchGFX工程,把LCD点亮,把触摸屏调通,最后编译下载验证。我敢说,这一步走顺了,后面30章你都会觉得轻松。
但我也得提前打个预防针——第一个项目往往是最折磨人的。不是技术多难,而是你面对的是一个全新的工具链,一个陌生的配置界面,还有一堆你根本不知道干嘛用的寄存器。别慌,我带你一步步走。
3.1 创建TouchGFX工程——选对模板,少走弯路
打开TouchGFX Designer,新建项目。这一步看起来简单,但坑不少。
创建工程时,你会遇到几个关键选项:
- Target: 选你的MCU型号。比如我用的STM32H750,那就选STM32H750IBKx。
- Display: 先随便选一个,后面我们会手动改LTDC配置。
- Touch: 同样先选一个占位,后面再配。
嗯,这里要注意:TouchGFX Designer生成的代码是基于CubeMX的。所以你的MCU必须被CubeMX支持。如果你用的是国产MCU或者冷门型号,那这条路走不通,得手动移植——这个我们后面章节会讲。
3.2 配置LCD接口——LTDC、RGB565、RGB888,到底选哪个?
LCD接口是移植的第一步,也是最容易出问题的地方。说白了,你要告诉MCU:你怎么把图像数据送到屏幕上。
常见的接口有两种:
| 接口类型 | 数据线数量 | 颜色深度 | 适用场景 |
|---|---|---|---|
| RGB565 | 16根数据线 | 16位(65K色) | 资源受限、低成本方案 |
| RGB888 | 24根数据线 | 24位(16.7M色) | 色彩要求高、性能充裕 |
我个人建议:能用RGB888就别用RGB565。为什么?因为RGB565在显示渐变色和图片时,色阶断层非常明显。我在一个医疗项目里吃过这个亏——客户说屏幕上的波形图有「条纹感」,查了半天,就是RGB565的色深不够。
但如果你MCU的引脚不够,或者LCD屏只支持RGB565,那也没办法。咱们得看实际情况。
3.2.1 在CubeMX中配置LTDC
打开CubeMX,找到你的MCU型号。在「Pinout & Configuration」里,找到LTDC外设,启用它。
配置要点:
- Layer:至少启用1个图层。TouchGFX只用1层就够了。
- Pixel Clock:这个值要根据你的LCD屏的时序要求来算。一般屏的规格书里会写「CLK Frequency」,照着填就行。
- HSYNC、VSYNC、HBP、VBP:这些参数决定了图像的同步和消隐区。别乱填,一定要看屏的规格书。
3.2.2 配置RGB引脚映射
LTDC的引脚是可以重映射的。在CubeMX里,你可以手动分配每个RGB信号到具体的GPIO引脚。
这里有个技巧:优先使用连续的引脚组。比如R0-R7最好在一个GPIO Port上,这样布线方便,代码也清晰。如果分散在不同Port,你得在代码里单独配置每个引脚,麻烦不说,还容易出错。
3.3 配置触摸屏——I2C还是SPI?
触摸屏的接口,常见的就是I2C和SPI。我直接说结论:
- I2C: 引脚少(2根线),速度慢,适合电阻屏或低端电容屏。
- SPI: 引脚多(4根线),速度快,适合高端电容屏,尤其是多点触控。
我个人更倾向于SPI。为什么?因为I2C在高速下容易受干扰,尤其是在LCD旁边,电磁环境复杂。我在一个工控项目里,触摸屏用I2C,结果每次电机启动,触摸就失灵。换成SPI后,问题消失。
3.3.1 在CubeMX中配置I2C/SPI
以I2C为例:
- 在CubeMX里找到I2C外设,启用它。
- 配置速率:一般触摸屏用400kHz(Fast Mode)就够了。
- 分配引脚:注意SCL和SDA要加上拉电阻,一般4.7kΩ。
SPI的配置类似,但要注意:SPI的时钟极性(CPOL)和时钟相位(CPHA)必须和触摸屏芯片匹配。这个信息在触摸屏芯片的规格书里会有。
3.4 编译与下载验证——点亮屏幕的那一刻
所有配置完成后,生成代码。回到TouchGFX Designer,点击「Generate Code」。然后打开你的IDE(我习惯用Keil或者STM32CubeIDE),编译。
第一次编译,大概率会报错。别慌,常见的错误有:
- 找不到头文件: 检查一下Include Path有没有添加TouchGFX的库路径。
- 引脚冲突: 有些引脚被其他外设占用了,去CubeMX里检查一下。
- 内存不足: TouchGFX的Frame Buffer需要一大块连续内存。如果你的MCU内部SRAM不够,得用外部SDRAM。这个我们后面章节会详细讲。
编译通过后,下载到板子。如果一切顺利,你会看到屏幕上出现TouchGFX的默认界面——一个灰色的背景,中间有个「TouchGFX」的Logo。
那一刻,说实话,挺有成就感的。
3.5 本章知识体系
下面这张图,帮你理清整个流程:
这张图把整个流程串起来了。你按这个顺序走,基本不会乱。
3.6 避坑总结
最后,我把这一章最容易踩的坑列出来,你对照着检查:
- LTDC时序参数填错: 一定要看规格书,别猜。
- RGB引脚映射混乱: 优先用连续引脚组,减少出错概率。
- 触摸屏接口速率不匹配: I2C用400kHz,SPI用屏支持的最高速率。
- Frame Buffer内存不足: 如果编译报内存不足,考虑用外部SDRAM。
- 触摸屏驱动选错: 在TouchGFX Designer里选对型号。
嗯,这一章的内容就到这儿。你按步骤走,第一个项目应该能顺利跑起来。如果卡住了,别硬扛——回头看看是不是哪个配置漏了。我当年第一个项目,光LTDC的时序就调了三天。后来发现,是HBP少填了1个像素。
这种坑,踩过一次就记住了。