2. 时序参数详解(上):HFP、HBP、Hsync 的定义与作用

在 LCD 驱动开发中,水平时序(Horizontal Timing)决定了每一行像素数据从传输到显示完成的完整时间窗口。理解 HFP、HBP 和 Hsync 这三个核心参数,是正确配置 TFT 面板驱动 IC 的基础。本节将逐一拆解它们的定义、作用以及配置不当带来的典型问题。

2.1 水平同步信号(Hsync)

Hsync(Horizontal Sync,水平同步信号)是行扫描的起始标志。当驱动 IC 检测到 Hsync 脉冲时,表示新的一行像素数据即将开始传输。Hsync 通常为低电平有效脉冲,其宽度由 Hsync Width(Hsync 脉宽) 参数定义。

关键作用: Hsync 是行与行之间的“分隔符”,确保每行数据从正确的时刻开始采样。如果 Hsync 脉宽过短或电平不稳定,会导致整行像素偏移或显示错位。

2.2 水平前肩(HFP)

HFP(Horizontal Front Porch,水平前肩)是指在一行有效像素数据传输结束之后,到下一个 Hsync 脉冲开始之前的空白周期。这段时间内不传输任何有效像素数据,仅用于等待下一个同步信号。

  • 位置: 有效数据结束 → Hsync 开始
  • 单位: 像素时钟周期(DCLK)
  • 典型值范围: 2 ~ 100 个 DCLK
  • 作用: 为行数据结束提供缓冲,防止数据溢出;同时给面板驱动 IC 留出准备接收下一行同步信号的时间。
常见陷阱: HFP 设置过小会导致行数据尾部被截断,表现为屏幕右侧出现垂直条纹或图像右边缘缺失。HFP 设置过大则会浪费带宽,降低刷新率上限。

2.3 水平后肩(HBP)

HBP(Horizontal Back Porch,水平后肩)是指 Hsync 脉冲结束之后,到第一列有效像素数据开始之前的空白周期。这段时间用于让面板驱动 IC 完成行同步后的内部复位与准备。

  • 位置: Hsync 结束 → 有效数据开始
  • 单位: 像素时钟周期(DCLK)
  • 典型值范围: 2 ~ 100 个 DCLK
  • 作用: 确保 Hsync 脉冲结束后,驱动 IC 有足够时间稳定内部状态,再开始采样第一列像素数据。
调试经验: 当屏幕左侧出现黑边或图像左移时,通常需要增大 HBP 值。当屏幕左侧出现噪点或颜色异常时,可能是 HBP 过小导致驱动 IC 尚未稳定就开始采样。

2.4 水平时序参数对比

参数 全称 位置关系 典型范围(DCLK) 异常表现(过小) 异常表现(过大)
Hsync 水平同步信号脉宽 HFP 之后,HBP 之前 1 ~ 40 行同步不稳定,图像抖动 浪费带宽,降低刷新率
HFP 水平前肩 有效数据之后,Hsync 之前 2 ~ 100 右侧图像缺失/垂直条纹 行周期过长,刷新率下降
HBP 水平后肩 Hsync 之后,有效数据之前 2 ~ 100 左侧图像缺失/噪点 左侧黑边,带宽浪费

2.5 水平时序结构图

下图展示了一行完整的水平时序结构,包含 Hsync 脉冲、HBP、有效像素数据区域和 HFP 的相对位置关系。

水平时序结构图 水平时序结构图(一行完整周期) Hsync HBP 有效像素数据(Horizontal Active) HFP 时间 t → Hsync 脉宽 水平有效像素数(Hactive) 一行总周期 = Hsync + HBP + Hactive + HFP 所有参数均以像素时钟周期(DCLK)为单位进行配置

2.6 水平时序配置示例

以下是一个典型的 1024×600 分辨率 TFT 面板的水平时序配置代码片段,使用 DCLK 作为时间单位。

/* 水平时序配置参数(单位:DCLK) */
#define HACTIVE     1024    /* 水平有效像素数 */
#define HSYNC_WIDTH   20    /* Hsync 脉宽 */
#define HBP           60    /* 水平后肩 */
#define HFP           40    /* 水平前肩 */

/* 计算一行总周期 */
#define H_TOTAL (HACTIVE + HSYNC_WIDTH + HBP + HFP)  /* = 1144 DCLK */

/* 配置驱动 IC 寄存器(伪代码示例) */
void lcd_horizontal_timing_config(void)
{
    write_reg(0x00, HACTIVE - 1);      /* 水平有效像素 - 1 */
    write_reg(0x01, HSYNC_WIDTH - 1);  /* Hsync 脉宽 - 1 */
    write_reg(0x02, HBP - 1);          /* 水平后肩 - 1 */
    write_reg(0x03, HFP - 1);          /* 水平前肩 - 1 */
}
配置要点:
  • 大多数 LCD 驱动 IC 的寄存器值需要 减 1 写入(因为硬件从 0 开始计数)。
  • Hsync 脉宽通常设置为 1 ~ 40 个 DCLK,过宽会压缩有效数据时间。
  • HBP 和 HFP 的最小值由面板数据手册规定,通常不低于 2 个 DCLK。
  • 调整 HBP/HFP 时,需同步检查刷新率是否仍在目标范围内。

2.7 常见问题与调试建议

  1. 图像整体左移或右移: 优先调整 HBP(左移)或 HFP(右移),每次增减 1~2 个 DCLK 观察效果。
  2. 屏幕一侧出现垂直条纹或噪点: 检查 HBP 或 HFP 是否过小,导致驱动 IC 在非稳定区间采样。
  3. 刷新率不达标: 计算 H_Total 是否过大,适当减小 HBP、HFP 或 Hsync 脉宽。
  4. 行同步丢失或图像撕裂: 确认 Hsync 脉宽是否满足面板最小要求,同时检查信号电平极性配置。
重要提醒: 不同面板厂商对 HFP/HBP 的命名可能不同(例如有的称为“HFP + HBP = HBlank”),务必以数据手册中的时序图为最终依据。切勿直接套用其他面板的配置值而不做验证。