2. 显示时序基础概念:像素时钟、行同步、场同步与数据使能
显示时序是驱动面板点亮并稳定显示画面的物理层协议。在 SA8155 MDP 通路中,任何时序参数的偏差都会导致黑屏、闪屏、撕裂或偏移。本节从波形与定义两个维度,拆解四个核心信号:像素时钟 (Pixel Clock)、行同步 (HSYNC)、场同步 (VSYNC) 和 数据使能 (DE)。
2.1 信号定义与功能对比
| 信号 | 全称 | 方向 | 核心功能 |
|---|---|---|---|
| PCLK | Pixel Clock | MDP → 面板 | 为每个像素的 RGB 数据提供锁存基准时钟 |
| HSYNC | Horizontal Sync | MDP → 面板 | 标识一行像素传输的结束与下一行的开始 |
| VSYNC | Vertical Sync | MDP → 面板 | 标识一帧画面传输的结束与下一帧的开始 |
| DE | Data Enable | MDP → 面板 | 高电平时表示当前 PCLK 上的 RGB 数据有效 |
排查要点:在 SA8155 的 MDP 调试中,PCLK 频率偏差超过 ±5% 通常会导致面板无法锁定;HSYNC/VSYNC 极性错误则直接引发行/场不同步,表现为画面滚动或撕裂。
2.2 像素时钟 (Pixel Clock)
像素时钟是显示时序的“心跳”。MDP 在每个 PCLK 上升沿(或下降沿,由极性配置决定)将一组 RGB 数据推送到数据总线上。PCLK 频率由分辨率和刷新率决定:
PCLK (Hz) = (H_total) × (V_total) × Refresh_Rate
其中:
H_total = H_Active + H_Front_Porch + H_Sync_Width + H_Back_Porch
V_total = V_Active + V_Front_Porch + V_Sync_Width + V_Back_Porch
SA8155 实测案例:1920×1080@60Hz 典型配置下,H_total=2200,V_total=1125,PCLK ≈ 2200×1125×60 = 148.5 MHz。若 MDP 输出的 PCLK 实际为 145 MHz,则面板实际刷新率会降至约 58.6 Hz,导致帧率不匹配与视觉卡顿。
2.3 行同步 (HSYNC) 与场同步 (VSYNC)
HSYNC 和 VSYNC 是同步脉冲信号,用于界定行与帧的边界。两者均包含脉冲宽度(Sync Width)以及前后的消隐区(Front Porch / Back Porch)。
- HSYNC:每传输完一行有效像素后,MDP 拉低(或拉高,取决于极性)HSYNC 一个周期,通知面板准备接收下一行数据。
- VSYNC:每传输完一帧有效像素后,MDP 拉低 VSYNC 一个周期,通知面板开始新的一帧。
- 极性配置:SA8155 的 MDP 时序控制器支持正/负极性编程。例如,HSYNC 极性为负时,脉冲为低电平有效;为正时则为高电平有效。
常见故障:HSYNC 与 VSYNC 的极性配置错误是 SA8155 平台最常见的显示初始化失败原因之一。务必与面板 datasheet 中的时序要求严格对齐。
2.4 数据使能 (DE) 信号
DE 信号是 RGB 数据有效性的“门控”。在 DE 为高电平时,PCLK 上的数据被面板视为有效像素;DE 为低电平时,数据总线上的值应被忽略(通常用于消隐区)。
- DE 模式:大多数现代面板使用 DE-only 模式,即仅依靠 DE 信号判断数据有效性,HSYNC/VSYNC 仅作帧同步参考。
- SYNC 模式:部分老旧面板需要同时依赖 HSYNC/VSYNC 和 DE 的组合逻辑。
- SA8155 配置:MDP 的时序发生器支持 DE 信号自动生成,其宽度等于 H_Active × V_Active 的有效区域。
2.5 完整行/帧时序波形图
下图展示了一行和一帧内 PCLK、HSYNC、VSYNC 与 DE 的典型时序关系(以负极性 HSYNC/VSYNC 为例)。
2.6 时序参数与 MDP 寄存器映射
在 SA8155 MDP 中,上述时序参数直接映射到硬件寄存器。调试时需通过 MDP 的 时序发生器 (Timing Generator, TG) 模块写入以下关键寄存器:
| 时序参数 | MDP 寄存器域 | 典型值 (1080p@60) |
|---|---|---|
| H_Active | MDP_TG_H_ACTIVE | 1920 |
| H_Front_Porch | MDP_TG_H_FRONT_PORCH | 88 |
| H_Sync_Width | MDP_TG_H_SYNC_WIDTH | 44 |
| H_Back_Porch | MDP_TG_H_BACK_PORCH | 148 |
| V_Active | MDP_TG_V_ACTIVE | 1080 |
| V_Front_Porch | MDP_TG_V_FRONT_PORCH | 4 |
| V_Sync_Width | MDP_TG_V_SYNC_WIDTH | 5 |
| V_Back_Porch | MDP_TG_V_BACK_PORCH | 36 |
| PCLK 极性 | MDP_TG_PCLK_POL | 0 (上升沿锁存) |
| HSYNC/VSYNC 极性 | MDP_TG_SYNC_POL | 0 (负极性) |
调试技巧:使用 SA8155 的 MDP 调试工具读取 MDP_TG_STATUS 寄存器,可实时查看当前 TG 状态是否锁定。若 STATUS 显示 “TG_IDLE”,说明时序发生器未启动,需检查时钟使能与时序参数配置。
2.7 常见时序故障与排查方向
- 无显示(黑屏):检查 PCLK 是否输出、HSYNC/VSYNC 极性是否与面板匹配、DE 信号是否在有效区域拉高。
- 画面滚动或抖动:VSYNC 频率与面板刷新率不匹配,或 VSYNC 极性错误。使用示波器测量 VSYNC 周期,确认与目标刷新率一致。
- 画面偏移或撕裂:HSYNC 前后肩参数错误,导致面板内部行起始位置偏移。对比面板 datasheet 中的 H_FP/H_BP 最小值。
- DE 信号异常:DE 宽度不等于 H_Active × V_Active,或 DE 在消隐区误拉高。检查 MDP_TG_DE_CTRL 寄存器配置。
推荐工具:在 SA8155 平台调试显示时序时,建议同时使用逻辑分析仪抓取 PCLK/HSYNC/VSYNC/DE 四路信号,并与 MDP 寄存器读回值交叉验证。示波器带宽建议 ≥ 500 MHz 以准确测量 PCLK 边沿。