1. 从零开始:理解LCD时序参数到底是什么
搞LCD驱动开发,最绕不开的就是那一堆时序参数。每次拿到一块新屏幕,看着规格书里密密麻麻的HFP、HBP、VFP、VBP,是不是感觉头都大了?别急,我刚开始接触的时候也这样。其实,你可以把屏幕显示一帧图像的过程,想象成老式的CRT电视机的电子枪在扫描。
电子枪从左到右画出一条线,画完一条线,它得回到左边准备画下一条,这个“回到左边”的时间,就是水平消隐期。同样,当它画完全部行,从屏幕右下角回到左上角准备画下一帧的时间,就是垂直消隐期。我们配置的那些时序参数,本质上就是在定义这个“画图”和“回位”的节奏。Pixel Clock(像素时钟) 就是这个节奏的“节拍器”,它决定了每个像素点以多快的速度被“点亮”或传输。如果节拍乱了,画面就会撕裂、闪烁或者干脆不显示。
在驱动代码里,尤其是在Linux内核的DTS(设备树)配置中,你会看到这样一组典型的参数:
display-timings {
native-mode = <&timing0>;
timing0: timing0 {
clock-frequency = <198000000>; // Pixel Clock,单位Hz
hactive = <1920>; // 有效显示区域宽度(像素)
vactive = <2880>; // 有效显示区域高度(像素)
hback-porch = <80>; // 水平后肩
hfront-porch = <120>; // 水平前肩
vback-porch = <56>; // 垂直后肩
vfront-porch = <40>; // 垂直前肩
hsync-len = <80>; // 水平同步脉冲宽度
vsync-len = <24>; // 垂直同步脉冲宽度
};
};
这些参数共同定义了一帧图像的完整结构。hactive和vactive是你能看到的画面部分,而前后肩和同步脉冲则是“看不见”的消隐区。它们加在一起,构成了驱动芯片需要处理的完整“画布”尺寸。理解这一点,是进行任何计算和调试的基础。
2. 核心计算:从屏幕规格书推导Pixel Clock
拿到一块屏幕的规格书(Datasheet),我们首先要找到时序参数部分。它通常会以表格或波形图的形式给出。我们的任务,就是把表格里的参数,转换成上面DTS里的那组数字,并计算出最关键的 Pixel Clock。
计算公式是通用的,也是整个配置的基石: Pixel Clock = 总水平像素数 × 总垂直像素数 × 帧率(FPS)
其中:

3421

被折叠的 条评论
为什么被折叠?



