3. 全局刷新时序基础:帧同步(VSync)、行同步(HSync)与像素时钟(Pixel Clock)的关系

在驱动移植过程中,全局刷新时序是确保显示设备正常工作的基础。帧同步(VSync)、行同步(HSync)与像素时钟(Pixel Clock)三者构成了显示时序的“三要素”,任何一项参数配置错误都会导致画面撕裂、偏移、闪烁甚至无显示。本节将从时序层级关系、参数计算方法和实际移植中的适配要点三个维度展开。

3.1 时序层级模型

显示控制器按照“像素 → 行 → 帧”的层级结构输出数据,每一层都由对应的同步信号控制。下表总结了三个信号的核心作用与典型频率范围:

信号名称 层级 核心作用 典型频率范围(1080p@60Hz)
Pixel Clock 像素级 决定每个像素数据的传输速率 148.5 MHz
HSync 行级 标识一行像素传输的结束与下一行的开始 67.5 kHz(约 67,500 行/秒)
VSync 帧级 标识一帧画面的结束与下一帧的开始 60 Hz
移植提示: 在新平台上,Pixel Clock 通常由 PLL(锁相环)配置产生,HSync 和 VSync 由显示控制器根据水平/垂直总像素数自动分频得到。移植时务必确认 PLL 输出频率与面板规格书一致,否则所有下游时序都会偏移。

3.2 时序参数与计算关系

每一帧画面由若干行组成,每一行由若干像素组成。实际传输过程中,除了有效像素区域外,还需要插入消隐区(Blanking)用于同步和信号恢复。以下是标准时序参数定义:

  • HTotal(水平总像素) = HActive(有效像素) + HFP(前肩) + HSyncPulse(同步脉冲宽度) + HBP(后肩)
  • VTotal(垂直总行数) = VActive(有效行数) + VFP(前肩) + VSyncPulse(同步脉冲宽度) + VBP(后肩)
  • Pixel Clock = HTotal × VTotal × 刷新率

例如,标准 1080p@60Hz 时序:

HTotal = 1920 + 88 + 44 + 148 = 2200 像素
VTotal = 1080 + 4 + 5 + 36 = 1125 行
Pixel Clock = 2200 × 1125 × 60 = 148,500,000 Hz ≈ 148.5 MHz
关键点: 移植时不能只关注有效分辨率(如 1920×1080),必须完整填写 HTotal 和 VTotal。许多新平台驱动默认使用标准 CVT(Coordinated Video Timings)或 DMT(Display Monitor Timings)参数,但面板厂商可能使用非标消隐值,务必以面板 datasheet 为准。

3.3 时序关系 SVG 图

下图展示了从 Pixel Clock 到 HSync、再到 VSync 的层级分频关系,以及一帧内各时序段的相对位置:

全局刷新时序层级与分频关系 Pixel Clock HSync = Pixel Clock ÷ HTotal VSync = HSync ÷ VTotal 一帧时序结构 ┌─────────────────┐ │ VSync Pulse │ │ VBP (后肩) │ │ VActive (有效行)│ │ VFP (前肩) │ │ VSync Pulse │ │ (下一帧开始) │ └─────────────────┘ 一行时序结构 ┌─────────────────┐ │ HSync Pulse │ │ HBP (后肩) │ │ HActive (有效) │ │ HFP (前肩) │ │ HSync Pulse │ │ (下一行开始) │ └─────────────────┘

3.4 移植适配检查清单

在将驱动移植到新平台时,建议按以下步骤逐一验证时序配置:

  1. 获取面板规格书:确认 HActive、HFP、HSyncPulse、HBP、VActive、VFP、VSyncPulse、VBP 以及 Pixel Clock 范围。
  2. 配置 PLL 时钟源:确保 SoC 的 PLL 输出频率与面板要求的 Pixel Clock 一致(允许 ±0.5% 偏差)。
  3. 设置显示控制器寄存器:将 HTotal、VTotal 以及各消隐参数写入对应的时序寄存器。
  4. 验证 HSync 频率:使用示波器或逻辑分析仪测量 HSync 引脚,确认频率 = Pixel Clock / HTotal。
  5. 验证 VSync 频率:测量 VSync 引脚,确认频率 = HSync / VTotal = 目标刷新率。
  6. 检查极性:确认 HSync 和 VSync 的极性(正脉冲/负脉冲)与面板要求一致。
常见陷阱: 部分新平台(如 Rockchip RK3588、Allwinner H616)的显示控制器会自动补偿消隐参数,如果驱动中同时设置了硬件自动模式与手动时序,会导致实际输出与寄存器值不一致。移植时建议先强制使用手动模式,待验证通过后再启用自动优化。

3.5 全局刷新与局部刷新的时序差异

在驱动移植中,全局刷新(Full Refresh)与局部刷新(Partial Refresh)对时序的要求不同。下表对比了两种模式的关键差异:

对比项 全局刷新 局部刷新
VSync 触发 每帧必须完整发送 VSync 脉冲 可跳过部分 VSync,仅更新变化区域
Pixel Clock 稳定性 要求持续稳定,不能跳变 允许在非更新区间降低频率或暂停
HSync 连续性 每行必须连续输出 HSync 可跳过未变化行的 HSync
驱动移植复杂度 较低,标准时序即可 较高,需支持 Tear-Free 和区域掩码
适用场景 视频播放、UI 滚动、游戏 电子纸、低功耗静态显示

在移植全局刷新驱动时,优先保证 VSync 和 HSync 的连续性与稳定性,这是后续实现局部刷新优化的基础。如果全局刷新时序无法锁定,任何局部刷新优化都无从谈起。