2. STM32硬件平台与显示接口设计
TouchGFX 的流畅体验,最终要落到一块具体的 STM32 芯片和一套具体的显示接口电路上。选型与接口设计一旦确定,后续的帧缓冲布局、DMA2D 加速、LTDC 时序、外部存储带宽都被“锁死”,很难在软件层补救。因此这一节的核心任务是:根据分辨率、色深、刷新率三个显示指标,反推 STM32 型号、显示接口类型与图形存储方案,并给出可落地的电路连接关系。
一、从显示指标反推带宽与存储需求
先建立最基本的量化关系。一帧图像所需的显存容量为:
帧缓冲字节数 = 水平像素 × 垂直像素 × 每像素字节数
每像素字节数:RGB565 = 2B,RGB888 = 3B,ARGB8888 = 4B
以常见的 800×480 分辨率为例:RGB565 单帧约 768 KB,RGB888 约 1.125 MB,ARGB8888 约 1.5 MB。若采用双缓冲(TouchGFX 默认推荐),容量再翻倍。像素时钟与刷新率的关系为:
像素时钟 ≈ (HBP + HSW + 有效宽 + HFP) × (VBP + VSW + 有效高 + VFP) × 刷新率
假设 800×480、60 Hz、消隐区合计约 20%,像素时钟约 27~33 MHz。RGB565 下 LTDC 读取带宽约 33M × 2B ≈ 66 MB/s,RGB888 则接近 100 MB/s。这个数字直接决定了内部 SRAM 是否够用、是否需要外挂 SDRAM,以及 SDRAM 位宽与时钟的选择。
二、按分辨率与色深选择 STM32 型号
STM32 中带 LTDC 的主要是 F4x9、F7、H7 系列,带 MIPI-DSI 的主要是 F469/F479、H747/H757 等。选型可按以下经验区间判断:
- ≤ 480×272、RGB565、单缓冲:F429/F439 即可,帧缓冲约 256 KB,可放入内部 SRAM(F429 有 256 KB SRAM,需注意与其它变量争用)。
- 480×272~800×480、RGB565、双缓冲:F429/F769 配 8 MB 以上 SDRAM,或 H743 用内部大 SRAM + 外部 SDRAM 混合。
- 800×480~1024×600、RGB888 或 ARGB8888:建议 H743/H750,主频 480 MHz、带 DMA2D 与 Chrom-ART,SDRAM 建议 16 位位宽、100 MHz 以上。
- 小尺寸圆形/方形屏、低引脚数:优先选带 MIPI-DSI 的型号,用 DSI 替代 24 根 RGB 并口走线。
需要特别提醒:LTDC 的 RGB 并口每根数据线都要走线,800×480 RGB888 需要 24 根数据 + 时钟 + 同步,共约 28 根高速线,PCB 层数与等长要求明显上升。若结构空间紧张,DSI 是更优解。
三、LTDC、DSI、SPI 三类显示接口的电路设计
LTDC 接口:STM32 侧输出 LCD_CLK、HSYNC、VSYNC、DE 与 R[7:0]/G[7:0]/B[7:0]。RGB565 时只接高 5/6/5 位,低位可悬空或接地。背光用 TIM 的 PWM 通道驱动,经三极管或恒流升压芯片控制 LED 串。复位、待机、触摸中断等控制信号单独引出。LTDC 的时序参数(HSW/HBP/HFP/VSW/VBP/VFP)必须与屏厂规格书一致,否则会出现偏移、抖动或黑边。
MIPI-DSI 接口:STM32 的 DSI 主机通过 1 对或 2 对差分数据 lane + 1 对时钟 lane 连接屏模组,差分对需 100 Ω 阻抗控制、等长匹配。DSI 屏通常还带 I²C 触摸与背光使能,需一并规划。DSI 的 PHY 时钟与 lane 数要和屏的带宽匹配,例如 800×480 RGB888@60 Hz 约需 1 Gbps 左右总带宽,单 lane 往往不够,需评估 lane 数。
SPI 接口:适用于小尺寸 SPI TFT(如 240×320、320×480)。优点是引脚少、成本低,缺点是刷新率受限。SPI 屏一般无独立显存,靠 STM32 内部 GRAM 或屏内 GRAM 刷新,TouchGFX 需使用 Partial Framebuffer 模式,把屏幕分成若干块,逐块渲染并推送。SPI 时钟建议 40~80 MHz,配合 DMA 传输,否则 CPU 占用会很高。
四、SDRAM 与 QSPI Flash 的规划
SDRAM 承担帧缓冲与动态图形资源。以 800×480 RGB565 双缓冲为例,需要 1.5 MB 帧缓冲,加上 TouchGFX 的位图缓存、动画中间层,建议至少 8 MB。位宽优先选 16 位,因为 LTDC 每周期读取的数据量与 SDRAM 位宽直接相关,8 位位宽会显著拉低刷新率。FMC 的 SDRAM 时序(TRCD、TRP、TWR、TRAS、TMRC)必须按颗粒手册填写,配置错误常表现为花屏、随机噪点或启动即死。
QSPI Flash 用于存放不常改动的资源:字体、图标、背景图、动画序列。TouchGFX Designer 生成的资源可编译进内部 Flash,也可外置到 QSPI。外置时通过内存映射模式(Memory Mapped)读取,DMA2D 可直接从映射地址搬运,避免先拷到 RAM。QSPI 的时钟模式(单线/双线/四线)、Dummy Cycles、地址字节数要与 Flash 型号匹配,否则读出的资源会错位。
五、一份可参考的接口规划表
| 显示规格 | 推荐型号 | 接口 | 帧缓冲 | 存储方案 |
|---|---|---|---|---|
| 240×320 RGB565 | F429 / G0+SPI | SPI 或 LTDC | 150 KB 单缓冲 | 内部 SRAM |
| 480×272 RGB565 | F429 / F769 | LTDC 16 位 | 512 KB 双缓冲 | 内部 SRAM + QSPI |
| 800×480 RGB565 | F769 / H743 | LTDC 16 位 | 1.5 MB 双缓冲 | 8 MB SDRAM + QSPI |
| 800×480 RGB888 | H743 / H750 | LTDC 24 位 | 2.25 MB 双缓冲 | 16 MB SDRAM + QSPI |
| 1024×600 ARGB8888 | H750 / H7A3 | LTDC 或 DSI | 4.8 MB 双缓冲 | 32 MB SDRAM + QSPI |
表中数据为按公式估算的参考值,实际项目需结合屏厂时序、TouchGFX 缓存策略与 PCB 叠层再确认。完成选型与接口设计后,下一步才是配置 CubeMX 中的 LTDC 时序、FMC 参数与 DMA2D,把这张“硬件地图”真正跑通。