4. 时序参数核心概念(上):时钟周期、建立时间、保持时间与传播延迟
在驱动 LCD TFT 屏幕时,MCU 与显示控制器之间的数据交换必须严格遵循一套时间约束。这些约束统称为时序参数。本章聚焦于四个最基础的时序概念:时钟周期(SCLK)、建立时间(Setup Time)、保持时间(Hold Time)和传播延迟(Propagation Delay)。理解它们是正确配置驱动、避免显示异常(如花屏、闪烁)的前提。
4.1 时钟周期(SCLK)—— 时序的节拍器
时钟周期是串行时钟线(SCLK)上相邻两个上升沿或下降沿之间的时间间隔。它决定了数据传输的基本速率。在 SPI 或类似串行接口驱动的 TFT 屏中,MCU 通过 SCLK 的每个有效边沿向屏幕发送或从屏幕读取一个数据位。
- 频率与周期:时钟频率(Hz)与周期(s)互为倒数。例如,10 MHz 的时钟对应 100 ns 的周期。
- 占空比:通常要求 50% 占空比,即高电平和低电平持续时间相等。
- 最大频率限制:屏幕数据手册会给出 SCLK 的最大允许频率。超过该频率可能导致数据采样错误。
实战提示: 在配置 MCU 的 SPI 时钟分频器时,务必计算实际输出的 SCLK 频率是否在屏幕规格书规定的范围内。对于长走线或高干扰环境,建议降频 20%-30% 以留出余量。
4.2 建立时间(Setup Time)与保持时间(Hold Time)
这两个参数定义了数据信号相对于时钟边沿的稳定窗口,是确保数据被正确锁存的关键。
| 参数 | 符号 | 定义 | 违反后果 |
|---|---|---|---|
| 建立时间 | tSU | 在时钟有效边沿到来之前,数据信号必须保持稳定的最短时间。 | 数据可能未被正确锁存,导致读取到错误值。 |
| 保持时间 | tH | 在时钟有效边沿到来之后,数据信号必须保持稳定的最短时间。 | 数据可能被下一个时钟边沿错误采样,造成数据移位。 |
对于 LCD 驱动,MCU 作为主机输出数据,屏幕控制器作为从机接收数据。MCU 必须保证其输出的数据在屏幕要求的 tSU 和 tH 窗口内保持稳定。
常见误区: 很多开发者只关注时钟频率,而忽略了建立/保持时间。即使时钟频率很低,如果 MCU 的 GPIO 输出延迟过大或信号抖动严重,仍然可能违反 tSU/tH 要求,导致初始化失败或颜色数据错位。
4.3 传播延迟(Propagation Delay)
传播延迟是指信号从发送端(如 MCU 引脚)传输到接收端(如 LCD 控制器引脚)所经历的时间。它主要由以下因素构成:
- 器件内部延迟:MCU 输出缓冲器和 LCD 输入缓冲器的开关延迟。
- PCB 走线延迟:信号在 PCB 铜箔上传输的物理时间(约 5-6 ps/mm)。
- 电平转换延迟:如果使用了电平转换芯片,会增加额外的延迟。
传播延迟会影响时钟与数据之间的相对相位关系。在高速通信中,必须考虑传播延迟以确保数据在时钟边沿到达时已经稳定。
4.4 四者关系与综合时序图
下图展示了在一个典型的 SPI 写周期中,时钟周期、建立时间、保持时间和传播延迟之间的相互作用。MCU 在 SCLK 的上升沿输出数据,LCD 控制器在 SCLK 的下降沿采样数据。
4.5 时序参数速查表
下表汇总了四个核心时序参数的关键属性,便于在实际开发中快速对照。
| 参数 | 英文全称 | 典型单位 | 对 LCD 驱动的影响 | 配置优先级 |
|---|---|---|---|---|
| 时钟周期 | SCLK Period | ns | 决定刷新率上限,周期越短,帧率越高 | 高 |
| 建立时间 | Setup Time | ns | 不足时导致数据采样错误,出现颜色噪点 | 高 |
| 保持时间 | Hold Time | ns | 不足时导致数据移位,图像错位 | 高 |
| 传播延迟 | Propagation Delay | ns | 影响高速通信的时序裕量,限制最大频率 | 中 |
4.6 配置示例:从数据手册提取时序参数
以下是从某款常见 LCD 驱动 IC(如 ILI9341)数据手册中摘录的时序参数片段。实际开发中,需要根据这些数值配置 MCU 的 SPI 时序寄存器。
/* 假设从数据手册中读取到的时序要求(典型值) */
#define TFT_SCLK_PERIOD_NS 100 /* 时钟周期 100 ns,对应 10 MHz */
#define TFT_SETUP_TIME_NS 15 /* 数据建立时间 ≥ 15 ns */
#define TFT_HOLD_TIME_NS 5 /* 数据保持时间 ≥ 5 ns */
#define TFT_PROP_DELAY_NS 10 /* 最大传播延迟 10 ns */
/* 配置 MCU SPI 时序(伪代码) */
void SPI_Timing_Config(void) {
// 1. 设置时钟分频,使 SCLK 周期 ≥ 100 ns
SPI_BAUDRATE = (MCU_CLOCK_HZ / 10000000) - 1; // 假设主频 80 MHz
// 2. 设置数据采样边沿(通常在 SCLK 的第二个边沿采样)
SPI_CPHA = 1; // 数据在第二个时钟边沿采样
// 3. 设置时钟极性(通常空闲时为低电平)
SPI_CPOL = 0;
// 4. 如果 MCU 支持,调整输出延迟以满足建立/保持时间
SPI_OUTPUT_DELAY = TFT_SETUP_TIME_NS - TFT_PROP_DELAY_NS; // 粗略补偿
}
关键要点:
- 时钟周期决定了数据传输的速度上限,但并非越快越好。
- 建立时间和保持时间共同构成了数据采样的有效窗口,必须同时满足。
- 传播延迟在低速下可忽略,但在 10 MHz 以上时必须纳入时序预算。
- 实际配置时,应参考数据手册中的最小值/最大值,而非典型值,以确保全温度、全电压范围内的可靠性。