4. 刷新率基础概念

刷新率是显示驱动开发中最核心的时序参数之一,它直接决定了屏幕画面的更新节奏、功耗水平以及用户视觉体验的流畅度。本节从刷新率的物理定义出发,厘清其与帧率(FPS)的本质区别,并引入人眼视觉暂留效应来解释为什么我们需要特定的刷新率。

4.1 刷新率(Hz)定义

刷新率(Refresh Rate)是指显示设备每秒从顶部到底部完整绘制(刷新)画面的次数,单位是赫兹(Hz)。在 LCD 驱动中,刷新率由垂直同步信号(VSYNC)的周期决定:

  • 物理含义:每秒钟屏幕像素矩阵被重新扫描/刷新的完整周期数。
  • 驱动实现:通过配置 LCD 控制器中的垂直前廊(VFP)、垂直同步脉宽(VSPW)、垂直后廊(VBP)以及水平参数,共同决定 VSYNC 信号的频率。
  • 典型值:常见 LCD 面板刷新率有 60Hz、90Hz、120Hz、144Hz 等。
驱动工程师视角: 刷新率 = 像素时钟频率 ÷ (水平总像素 × 垂直总行数)。修改刷新率时,必须同步调整 LCDC 的时钟分频系数和时序寄存器,否则会导致画面撕裂或黑屏。

4.2 帧率(FPS)与刷新率的区别

帧率(Frames Per Second, FPS)是指图形处理器(GPU)或应用层每秒生成并提交到显示缓冲区的完整画面数量。刷新率与帧率是两个不同层级的概念,下表总结了它们的核心差异:

对比维度 刷新率(Hz) 帧率(FPS)
所属层级 显示硬件/驱动层 应用/渲染层
决定方 LCD 控制器时序 + 面板物理特性 GPU 性能 + 应用负载
单位含义 屏幕每秒物理扫描次数 渲染管线每秒输出帧数
是否固定 通常固定(或支持动态切换) 动态变化,受场景复杂度影响
不匹配后果 — 画面撕裂(Tearing)或卡顿(Stutter)

当帧率与刷新率不匹配时,驱动层需要引入同步机制:

  • 垂直同步(VSync):强制 GPU 在 VSYNC 信号到来时才交换缓冲区,使帧率对齐刷新率,消除撕裂但可能增加输入延迟。
  • 自适应同步(Adaptive Sync / FreeSync / G-Sync):动态调整刷新率以匹配帧率,兼顾流畅与低延迟。
常见误区: 60Hz 屏幕并不等于只能显示 60FPS。如果关闭 VSync,GPU 可以以 120FPS 渲染,但屏幕只能物理显示 60 次/秒,多余帧会被丢弃或导致撕裂。驱动开发中,刷新率是硬上限,帧率是软输出。

4.3 人眼视觉暂留效应

人眼视觉暂留(Persistence of Vision, POV)是指当光刺激从视网膜消失后,视觉感知仍会持续约 1/16 到 1/24 秒(约 40~60ms)的生理现象。这一效应是动态画面能够被感知为连续运动的基础,也是刷新率设计的底层依据。

视觉暂留效应对刷新率配置的影响体现在以下方面:

  1. 临界闪烁频率(CFF):人眼对闪烁的感知阈值通常在 50~60Hz 左右。低于此频率的刷新率会被人眼感知为明显的闪烁(Flicker),引起视觉疲劳。
  2. 运动模糊与拖影:LCD 面板的响应时间(Response Time)与人眼暂留叠加,导致快速移动物体产生拖影。提高刷新率可以缩短每帧的保持时间,减轻运动模糊。
  3. 流畅度感知:当刷新率超过 90Hz 时,人眼对画面流畅度的提升感知逐渐饱和,但在 VR/AR 等近眼显示场景中,120Hz 甚至更高刷新率仍能显著降低晕动感。
驱动调优注意: 单纯提高刷新率并不总能提升视觉体验。如果 LCD 面板的响应时间(如 25ms)远大于刷新周期(如 60Hz 对应 16.67ms),像素无法在下一个刷新周期到来前完成状态切换,反而会引入过冲(Overshoot)或鬼影(Ghosting)。驱动配置刷新率时,必须参考面板数据手册中的响应时间规格。

4.4 刷新率、帧率与视觉暂留的关系图

下图展示了从应用渲染到人眼感知的完整链路,以及刷新率与帧率在其中的角色:

刷新率、帧率与视觉暂留关系图 刷新率、帧率与视觉暂留关系图 应用/GPU 渲染 帧率 (FPS) — 动态变化 显示缓冲区 双缓冲 / 三缓冲 LCD 控制器 VSYNC 驱动扫描 帧提交 VSync 取帧 LCD 面板 刷新率 (Hz) — 固定/动态 像素数据 + 时序 人眼视觉系统 视觉暂留效应 (~40ms) 光信号 视觉暂留效应影响 • 低于 50Hz → 可感知闪烁 • 60Hz 以上 → 连续运动感 • 响应时间 > 刷新周期 → 拖影 帧率 vs 刷新率 • FPS > Hz (无 VSync) → 撕裂 • FPS < Hz → 卡顿/重复帧 • FPS = Hz (VSync) → 最佳匹配

4.5 刷新率配置的关键参数

在 LCD 驱动开发中,配置刷新率本质上是设置 LCD 控制器的一组时序寄存器。以下是一个典型的 MIPI DSI 接口 LCD 刷新率计算示例:

/* 刷新率计算公式 */
Refresh_Rate = Pixel_Clock / (H_Total × V_Total)

/* 示例:配置 60Hz 刷新率 */
Pixel_Clock = 50 MHz
H_Total = H_Active + HFP + HSPW + HBP = 800 + 40 + 4 + 40 = 884
V_Total = V_Active + VFP + VSPW + VBP = 480 + 10 + 2 + 10 = 502

Refresh_Rate = 50,000,000 / (884 × 502) ≈ 112.6 Hz  /* 过高,需调整 */

/* 调整像素时钟为 26.6 MHz 后 */
Refresh_Rate = 26,600,000 / (884 × 502) ≈ 59.9 Hz  /* 符合 60Hz 目标 */
驱动配置要点:
  • 修改刷新率时,优先调整像素时钟分频系数,保持水平/垂直前廊、同步脉宽、后廊的比例符合面板规格。
  • 对于支持动态刷新率(DRR)的 LCD,驱动需要实现 VSYNC 频率的动态切换逻辑,并确保在切换过程中不产生黑屏或闪烁。
  • 高刷新率(≥120Hz)需要更高的像素时钟频率和更大的数据带宽,需确认 LCDC 和 DPHY 的时钟上限。

4.6 刷新率与显示性能的权衡

刷新率并非越高越好,驱动开发中需要根据应用场景进行权衡:

刷新率 优势 代价 典型场景
60 Hz 功耗低、驱动简单、兼容性好 运动模糊较明显、触控延迟较高 静态 UI、电子书、低功耗 IoT
90 Hz 流畅度明显提升、功耗适中 需更高像素时钟、面板支持 中端手机、车载仪表
120 Hz 极佳流畅度、低延迟 功耗显著增加、驱动时序更严格 旗舰手机、游戏显示器
144 Hz+ 电竞级响应、VR 低晕动 极高带宽需求、面板成本高 专业电竞、VR/AR 头显
工程实践建议: 在嵌入式 Linux 或 RTOS 的 LCD 驱动中,建议实现刷新率可配置接口(如通过 sysfs 或设备树参数),以便在产品开发阶段根据面板实测效果和功耗测试结果,选择最优的刷新率档位。