STM32H750 的 LCD-TFT 控制器是 LTDC,RGB888 模式下一共输出 28 根信号线:24 根数据(R0-7/G0-7/B0-7)+ 4 根控制(CLK/HSYNC/VSYNC/DE)。STM32H7区别于F4/F7最硬核的显示能力;而“一体化”三个字,不是营销话术,是指LCD刷新和触摸采样在同一个时钟域下协同调度,避免了传统方案中SPI触摸轮询抢占LTDC DMA 通道导致的撕裂或丢点问题。
- 层 FIFO:每层一个 64x64 位 FIFO。
- PFC:执行像素格式转换的像素格式转换器,从层的所选输入像素格式转换为字。
- AXI 接口:用于将数据从存储器传输到 FIFO。
CLK(LCD_CLK / DOTCLK):像素时钟,每个上升沿(或按极性配置)锁存一个像素的 RGB 数据。频率由屏分辨率×刷新率决定,H750 上由 PLL3_R 分频得到,常见 9~50 MHz。
HSYNC(水平同步):行同步脉冲。每开始扫描新的一行,HSYNC 跳变一次(极性可配)。标志“一行开始”,用于界定行消隐区。
VSYNC(垂直同步):场同步脉冲。每开始一新帧(整屏),VSYNC 跳变一次。标志“一帧开始”,用于界定场消隐区。
DE(Data Enable,数据使能):高电平期间 RGB 线上数据是有效像素;低电平期间是消隐区,屏忽略 RGB 值。现代 TFT 大多用 DE 模式,HSYNC/VSYNC 可省(但 H750 LTDC 通常同时输出,屏端看它支持哪种)。
R0–R7:红色分量,8 位,R7 为 MSB
G0–G7:绿色分量,8 位,G7 为 MSB
B0–B7:蓝色分量,8 位,B7 为 MSB
每个 CLK 上升沿,这三组总线上的 24 位值 = 当前像素的颜色(0xRRGGBB)。如果屏只支持 RGB565,可以把 R0-2、G0-1、B0-2 接地或悬空,LTDC 也可直接配成 RGB565 输出省引脚。
DE 模式(常用):只靠 CLK + DE 界定有效像素区,HSYNC/VSYNC 可不接屏(但 LTDC 内部仍要配时序)。接线简单、抗干扰好。
HV 模式(SYNC 模式):靠 HSYNC+VSYNC 脉冲边沿推进行/帧,DE 可不用。老式屏或 VGA 转接用。
很多屏两者都吃,但同时有 DE 和 H/V 时优先 DE 模式。
配置 PLL3_R 输出 LTDC 像素时钟(如 480×272@60Hz ≈ 9 MHz,1024×600@60Hz ≈ 51 MHz)。
使能 LTDC 总线时钟(AHB3)、GPIO 时钟。
屏端供电:先 DVDD/AVDD 稳定,再开 VGH/VGL,最后 PWM 渐亮背光(避免上电闪白)。
一行总周期 = HSYNC_WIDTH + H_BACK_PORCH + H_ACTIVE(如800) + H_FRONT_PORCH
一帧总周期 = VSYNC_WIDTH + V_BACK_PORCH + V_ACTIVE(如480) + V_FRONT_PORCH
同时配置:
- 同步极性(HSYNC/VSYNC/DE/CLK 高有效还是低有效,必须和屏一致)
- 背景色(BCCR,无图层覆盖时显示的底色)
RGB888 下每像素 3 字节(或按 ARGB8888 用 4 字节更方便 DMA2D)。
H750 内部 SRAM 不够,通常放在外部 SDRAM(FMC 驱动),首地址对齐 64 字节以上。
显存不需要 CPU 每帧搬运,LTDC 会自动按行扫描从显存读数据送到屏上。
LTDC 有 2 个硬件图层(Layer1/2),一般只用 Layer1:
窗口位置(在屏有效区内的 x0/y0/x1/y1)
像素格式 = RGB888(或 ARGB8888)
帧缓冲起始地址 = 显存首地址
行长度(Line Length)与行间距(Pitch,字节数)
行数(CFBLNR)
Alpha / 混合系数(单层不混合可设 Alpha=255)
可选:CLUT 关闭、抖动(dithering)开/关
配完写影子寄存器重载(SRCR),再使能图层。
置 GCR 的 LTDCEN 位,时序发生器开始跑:按配置发 CLK/HSYNC/VSYNC/DE,并从显存读像素送 RGB 总线。
屏看到有效 DE+CLK+RGB 即显示内容。
GUI/CPU 直接写显存对应像素(如 (x,y) 地址写 0x00RRGGBB)。
大量填充/拷贝用 **DMA2D(Chrom-ART)** 加速,不占 CPU。
防撕裂:双缓冲,VSYNC 中断里切换 Layer 的 CFBAR 到另一块显存,再 SRCR 重载。
极性配反 → 花屏/偏移;务必按屏手册设 HPOL/VPOL/DEPOL/PCPOL。
时序参数不按屏填(尤其中小厂屏写“典型值”而非寄存器值)→ 滚动/抖动。
显存放 DTCM → LTDC 不能访问 TCM,必须放 AXI 可达的 SDRAM 或 AXI SRAM。
RGB888 却只接 16 位屏 → 要么 LTDC 改 RGB565,要么屏端 COLMOD 配成 RGB888 输入(多数消费屏实际是 RGB666 内部抖色)。
CLK 速度等级 → GPIO 必须 VERY_HIGH,走线等长不必严求但 CLK 别比 RGB 长太多。
本文作者:ZeroEngineer
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!