3. 硬件平台准备:选对芯片,搭好骨架
硬件选型这事儿,说白了就是给 TouchGFX 找个合适的「家」。家太小了住不下,太大了又浪费。我这些年帮客户做过不下二十块板子的选型评估,踩过的坑真不少。今天咱们就以 STM32 为例,把 MCU、屏幕接口、触摸方案、还有 SDRAM 和 Flash 这些事儿一次说清楚。
核心原则:TouchGFX 对硬件的核心要求就三条——够快的刷新速度、够大的显存空间、够稳的存储介质。满足这三条,剩下的都好说。
3.1 MCU 选型:STM32 怎么挑?
TouchGFX 官方推荐用 Cortex-M7 或更高性能的内核。为什么?因为 UI 渲染需要大量浮点运算和内存搬运,M4 虽然也能跑,但帧率上不去,动画多了就卡。
我个人习惯把 STM32 分成三个梯队:
| 梯队 | 典型型号 | 适用场景 | 我的评价 |
|---|---|---|---|
| 第一梯队 | STM32H7xx 系列 | 高分辨率、复杂动画、多图层 | 性能过剩,但贵,适合旗舰产品 |
| 第二梯队 | STM32F7xx 系列 | 中等分辨率、常规 UI | 性价比之王,我大部分项目都用它 |
| 第三梯队 | STM32F4xx 系列 | 低分辨率、静态界面 | 勉强能跑,但别指望流畅动画 |
选型时还要注意一个关键参数:LTDC(LCD-TFT 显示控制器)。STM32 里不是所有型号都带 LTDC 外设。比如 STM32F429 有,但 STM32F407 就没有。没有 LTDC 的话,你就只能用 SPI 或 MCU8080 接口,刷新效率差一大截。
我的小技巧:去 ST 官网搜「STM32 + LTDC」,出来的型号列表就是你的候选池。别自己一个个翻数据手册,太累了。
3.2 LCD 屏幕接口:RGB、SPI、MCU8080 怎么选?
屏幕接口这事儿,我见过太多人在这上面翻车。选错了接口,后面移植 TouchGFX 就是噩梦。
三种主流接口的对比:
| 接口类型 | 带宽 | 引脚数 | 是否带显存 | TouchGFX 适配难度 |
|---|---|---|---|---|
| RGB 并行接口 | 高(24位色,最高 60fps) | 24~30 根 | 否(需要外部 SDRAM) | 低(原生支持) |
| SPI 串行接口 | 低(最高约 20fps) | 4~6 根 | 是(屏幕自带显存) | 中(需要驱动适配) |
| MCU8080 并行接口 | 中(约 30fps) | 16~18 根 | 是(屏幕自带显存) | 中(需要 FSMC 配合) |
我的建议:如果你做的是 4.3 寸以上的屏幕,分辨率超过 480×272,老老实实用 RGB 接口。SPI 接口只适合 2.8 寸以下的小屏,而且动画一多就露怯。我曾经在一个项目里硬要用 SPI 接口跑 800×480 的屏,结果帧率只有 8fps,客户差点没把我骂死。
注意:RGB 接口虽然快,但它没有显存。你必须外挂 SDRAM 来当帧缓冲。后面会细说。
3.3 触摸屏接口:I2C 还是 SPI?
触摸屏这事儿相对简单。主流触摸控制器就两种接口:
- I2C 接口:引脚少(SCL+SDA),速度够用,适合大多数场景。我 80% 的项目都用 I2C 触摸。
- SPI 接口:速度更快,但多两根线。一般用在需要高报点率的场景,比如手写识别。
选型时注意一个坑:触摸控制器的中断引脚。很多新手忘了接 INT 引脚,结果 TouchGFX 只能轮询触摸状态,CPU 占用率飙升。我建议 INT 引脚一定要接,而且选一个支持上升沿/下降沿触发的中断 GPIO。
常见的触摸控制器型号:
- FT5x06 / FT6x36(I2C,电容触摸,最常用)
- GT911 / GT9271(I2C,支持多点触摸)
- TSC2046(SPI,电阻触摸,老项目还在用)
避坑指南:我曾经在一个项目里用了 FT5x06,结果发现它的 I2C 地址是 0x38,但 TouchGFX 默认驱动写的是 0x70。折腾了两天才发现是地址左移了一位。嗯,这种细节你一定要注意。
3.4 外部 SDRAM:为什么必须要有?
这个问题我每次培训都有人问:STM32 内部不是有 SRAM 吗?为什么还要外挂 SDRAM?
咱们算笔账:一个 800×480 的屏幕,24 位色,一帧画面需要多少内存?
800 × 480 × 3(RGB 各 1 字节)= 1,152,000 字节 ≈ 1.1 MB
TouchGFX 通常需要双缓冲(甚至三缓冲)来实现流畅动画。也就是说,你至少需要 2.2 MB 的显存。而 STM32 内部 SRAM 最大也就 1 MB(H7 系列),F7 系列只有 320 KB。根本不够用。
所以,外挂 SDRAM 几乎是必须的。常用的型号:
- IS42S16400J(64 Mb,8 MB,够用)
- W9825G6KH(256 Mb,32 MB,富裕)
- MT48LC4M32B2(128 Mb,16 MB,性价比高)
选 SDRAM 时注意三点:
- 位宽:尽量选 16 位或 32 位的,8 位的带宽不够。
- 速度:至少 133 MHz 以上,否则刷新率上不去。
- 封装:BGA 封装焊接难度大,新手建议用 TSOP 或 TSSOP。
我的经验:SDRAM 的 PCB 布线是硬件设计里最难的一环。等长、阻抗匹配、去耦电容,一个都不能少。我第一块板子就是 SDRAM 布线没做好,跑 168 MHz 就死机,最后降频到 120 MHz 才稳定。所以,如果你是自己画板子,SDRAM 部分一定要参考 ST 官方的参考设计。
3.5 外部 Flash:存什么?
外部 Flash 主要用来存两样东西:
- 字体和图片资源:TouchGFX 的 UI 资源(字体、图片、动画帧)通常有几 MB 到几十 MB,内部 Flash 根本放不下。
- 固件升级备份:OTA 升级时,需要一块区域存新固件。
常用的外部 Flash 类型:
| 类型 | 容量 | 接口 | 速度 | 适用场景 |
|---|---|---|---|---|
| NOR Flash | 16 MB ~ 128 MB | QSPI / Parallel | 快(支持 XIP 执行) | 存代码和资源,首选 |
| NAND Flash | 128 MB ~ 几 GB | Parallel / SPI | 慢(需要坏块管理) | 存大量图片或日志 |
| SD 卡 | 几 GB ~ 几十 GB | SDIO / SPI | 中 | 原型验证阶段用 |
我个人推荐用 QSPI NOR Flash,比如 W25Q64(64 Mb)或 W25Q128(128 Mb)。QSPI 接口速度快,而且支持内存映射模式,可以直接把 Flash 当内存访问,TouchGFX 的资源加载效率很高。
注意:如果你用 QSPI Flash,一定要确认 STM32 型号是否支持 QSPI 外设。F4 系列大部分不支持,F7 和 H7 系列基本都支持。
3.6 整体硬件架构图
下面这张图是我做 TouchGFX 项目时常用的硬件架构,你可以参考:
3.7 选型清单速查表
最后,我整理了一份选型清单,你照着这个买元器件基本不会错:
| 组件 | 推荐型号 | 备注 |
|---|---|---|
| MCU | STM32F746 / STM32H750 | 带 LTDC 和 QSPI |
| SDRAM | W9825G6KH / IS42S16400J | 16 位宽,133 MHz+ |
| NOR Flash | W25Q128JV | QSPI 接口,128 Mb |
| LCD 屏幕 | ATK-4342 / 正点原子 4.3寸 RGB | 480×272 或 800×480 |
| 触摸控制器 | FT5x06 / GT911 | I2C 接口,带 INT 引脚 |
最后说一句:硬件选型没有绝对的对错,关键看你的项目需求。如果你只是做个原型验证,用开发板就行。但如果是量产产品,一定要在选型阶段多花点时间。我见过太多项目因为硬件选型失误,后面改板子改到崩溃。嗯,希望你能一次选对。