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 占用会很高。

STM32 显示接口与图形存储方案关系图 STM32 主控 F429 / F769 / H743 LTDC 控制器 RGB 并口时序 DMA2D 加速 填充/混合/拷贝 DSI 主机 MIPI 差分 lane SPI + DMA 小屏分块刷新 FMC / QSPI 显示接口电路 RGB 并口 CLK/HS/VS/DE + 16~24 位 MIPI-DSI 1~2 lane 差分 + 时钟 SPI 总线 SCK/MOSI/CS/DC/RST 背光驱动 PWM + 恒流升压 图形存储方案 SDRAM 帧缓冲 8~32 MB / 16 位 QSPI Flash 字体/图片/资源 内部 SRAM 小屏/局部缓冲 SDRAM 控制器 FMC 时序配置 选型依据:分辨率 → 帧缓冲容量 | 色深 → 带宽与位宽 | 刷新率 → 像素时钟与 SDRAM 速率

四、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 型号匹配,否则读出的资源会错位。

经验做法:把帧缓冲放在 SDRAM 的低地址段并做 32 字节对齐,DMA2D 与 LTDC 访问同一块 SDRAM 时,尽量让 LTDC 优先级高于 CPU 数据访问,减少撕裂。

五、一份可参考的接口规划表

显示规格推荐型号接口帧缓冲存储方案
240×320 RGB565F429 / G0+SPISPI 或 LTDC150 KB 单缓冲内部 SRAM
480×272 RGB565F429 / F769LTDC 16 位512 KB 双缓冲内部 SRAM + QSPI
800×480 RGB565F769 / H743LTDC 16 位1.5 MB 双缓冲8 MB SDRAM + QSPI
800×480 RGB888H743 / H750LTDC 24 位2.25 MB 双缓冲16 MB SDRAM + QSPI
1024×600 ARGB8888H750 / H7A3LTDC 或 DSI4.8 MB 双缓冲32 MB SDRAM + QSPI

表中数据为按公式估算的参考值,实际项目需结合屏厂时序、TouchGFX 缓存策略与 PCB 叠层再确认。完成选型与接口设计后,下一步才是配置 CubeMX 中的 LTDC 时序、FMC 参数与 DMA2D,把这张“硬件地图”真正跑通。