1. LCD TFT 显示原理
要理解 DMA 传输优化的必要性,首先必须掌握 TFT-LCD 的像素结构与驱动时序。本节从像素单元、同步信号、RGB 接口协议到像素时钟计算,逐层拆解显示器的底层工作机制。
1.1 TFT 像素结构
每个 TFT 像素由三个子像素(R/G/B)构成,每个子像素由一个薄膜晶体管(TFT)和一个存储电容(Cs)组成。晶体管控制液晶分子的偏转角度,从而调节背光透过率,实现灰度显示。
关键参数: 分辨率 = 水平像素数 × 垂直像素数;每个像素需要 3 个子像素驱动信号。
| 参数 | 说明 | 典型值(480×272) |
|---|---|---|
| 水平像素数 | 每行显示的像素点数量 | 480 |
| 垂直像素数 | 每帧显示的扫描行数 | 272 |
| 子像素总数 | 水平 × 垂直 × 3 | 391,680 |
| 色深 | 每子像素位数 | 8-bit(16.7M 色) |
1.2 行场同步信号
LCD 控制器通过行同步(HSYNC)和场同步(VSYNC)信号协调像素数据的逐行逐帧传输。这两个信号定义了有效像素区域与消隐区(Blanking)的边界。
- VSYNC(垂直同步):每帧开始时的脉冲,标志新一帧图像传输启动。
- HSYNC(水平同步):每行开始时的脉冲,标志新一行像素传输启动。
- DE(数据使能):部分接口使用 DE 信号替代 HSYNC/VSYNC,高电平表示有效像素数据。
时序避坑: 消隐区(HBP/HFP/VBP/VFP)虽然不传输有效像素,但必须保留足够的时钟周期用于行场同步恢复。消隐区过短会导致显示偏移或撕裂。
| 时序参数 | 全称 | 作用 |
|---|---|---|
| HBP | Horizontal Back Porch | 行同步后肩,HSYNC 之后到有效像素开始 |
| HFP | Horizontal Front Porch | 行同步前肩,有效像素结束到下一个 HSYNC |
| VBP | Vertical Back Porch | 场同步后肩,VSYNC 之后到有效行开始 |
| VFP | Vertical Front Porch | 场同步前肩,有效行结束到下一个 VSYNC |
1.3 RGB 接口时序
单片机驱动 TFT 屏最常用的接口是 并行 RGB 接口(如 RGB565、RGB666、RGB888)。该接口在像素时钟(PCLK)的上升沿或下降沿锁存数据,配合 HSYNC、VSYNC 和 DE 信号完成帧传输。
接口类型对比:
| 接口 | 数据线数量 | 色深 | 典型应用 |
|---|---|---|---|
| RGB565 | 16 位(R5+G6+B5) | 65K 色 | 低端单片机、低成本屏 |
| RGB666 | 18 位(R6+G6+B6) | 262K 色 | 中端工业屏 |
| RGB888 | 24 位(R8+G8+B8) | 16.7M 色 | 高端显示、HMI 交互 |
RGB 接口的典型时序流程:
- VSYNC 拉低(或脉冲)表示新帧开始。
- 经过 VBP 行数后,开始逐行传输有效像素。
- 每行开始前,HSYNC 拉低(或脉冲),经过 HBP 时钟后,DE 拉高。
- DE 高电平期间,每个 PCLK 锁存一个像素数据。
- 一行结束后,DE 拉低,经过 HFP 时钟后,进入下一行 HSYNC。
- 所有有效行传输完成后,经过 VFP 行数,VSYNC 再次触发下一帧。
1.4 像素时钟计算
像素时钟(PCLK)频率决定了每秒传输的像素数量。计算 PCLK 需要同时考虑有效像素和消隐开销。
核心公式:
总行像素 = 水平有效像素 + HBP + HFP + HSYNC 宽度
总帧行数 = 垂直有效像素 + VBP + VFP + VSYNC 宽度
PCLK = 总行像素 × 总帧行数 × 刷新率
计算示例(480×272 @ 60Hz):
| 参数 | 值 |
|---|---|
| 水平有效像素 | 480 |
| HBP | 40 |
| HFP | 10 |
| HSYNC 宽度 | 10 |
| 总行像素 | 540 |
| 垂直有效像素 | 272 |
| VBP | 10 |
| VFP | 5 |
| VSYNC 宽度 | 5 |
| 总帧行数 | 292 |
| 刷新率 | 60 Hz |
| PCLK | 540 × 292 × 60 ≈ 9.46 MHz |
DMA 优化关键: PCLK 频率决定了 DMA 传输的最低吞吐率。如果 DMA 无法在 1 个 PCLK 周期内完成 1 个像素的数据搬运,就会出现撕裂或闪烁。实际设计中,DMA 带宽需要预留 20%~30% 余量。
常见分辨率 PCLK 参考值:
| 分辨率 | 典型 PCLK | 刷新率 | 数据带宽(RGB565) |
|---|---|---|---|
| 320×240 | 6.5 MHz | 60 Hz | 13 MB/s |
| 480×272 | 9.5 MHz | 60 Hz | 19 MB/s |
| 800×480 | 33 MHz | 60 Hz | 66 MB/s |
| 1024×600 | 51 MHz | 60 Hz | 102 MB/s |