4. 显示接口与协议
在 RK3399 的显示驱动移植中,屏幕点不亮、花屏、偏移、闪烁等问题,绝大多数最终都会落到“接口协议理解是否正确”和“时序参数是否匹配”这两件事上。RK3399 的 VOP(Video Output Processor)本身只负责产生像素数据流,而 MIPI DSI、LVDS、eDP、HDMI 是四种完全不同的物理层与链路层协议,它们对时钟、数据打包、训练流程、时序描述方式的要求各不相同。本节先把四类接口的协议骨架讲清楚,再统一落到时序参数上,为后续设备树配置和驱动调试打基础。
一、四类接口的协议定位与信号链
从 RK3399 的显示子系统看,VOP 输出的是并行的 RGB 像素流、行场同步信号和像素时钟。不同接口做的事情,本质上是把这组并行信号“翻译”成各自协议要求的串行或差分形式:
- MIPI DSI:面向移动端和嵌入式屏,采用差分对传输,分高速(HS)和低功耗(LP)两种模式,数据以包(Packet)为单位,支持命令模式和视频模式。
- LVDS:面向工业与车载屏,采用低压差分信号,把并行 RGB 按 7:1 串化成若干对数据通道,加一对时钟通道,协议简单、抗干扰强。
- eDP:面向笔记本与高分辨率屏,基于 DisplayPort 协议,使用差分主链路(Main Link)加 AUX 辅助通道,需要链路训练和 EDID 读取。
- HDMI:面向消费显示器和电视,使用 TMDS 差分通道,包含视频数据周期、数据岛周期和控制周期,支持 EDID 与热插拔检测(HPD)。
下图给出 RK3399 显示通路中四类接口的信号链关系,重点体现“VOP 并行像素流 → 接口控制器 → 物理链路 → 屏幕/显示器”的转换位置,以及各自的关键控制信号。
二、四类协议的链路特征对比
理解协议差异,最有效的方式是对照它们的链路结构、时钟来源和初始化流程。下表把四类接口的关键点集中列出,便于在设备树和驱动中快速定位配置项。
| 接口 | 物理层 | 时钟来源 | 初始化关键动作 | 典型应用 |
|---|---|---|---|---|
| MIPI DSI | D-PHY 差分,1 Clock + 1~4 Lane | HS 时钟由控制器产生,LP 状态用于控制 | 发送初始化命令序列、设置视频模式时序 | 手机屏、MIPI 转 LVDS 桥 |
| LVDS | 低压差分,1 Clock + 3/4 Data Pair | 像素时钟直接驱动串化器 | 配置通道映射、双路/单路、颜色深度 | 工业屏、车载屏 |
| eDP | 差分 Main Link + AUX 双向 | 链路时钟由训练过程协商 | 读 EDID、链路训练、设置 Lane 速率 | 笔记本屏、高分辨率面板 |
| HDMI | TMDS 3 Data + 1 Clock | TMDS 时钟由像素时钟倍频得到 | 读 EDID、HPD 检测、设置视频模式 | 电视、显示器、投影 |
三、时序参数解析:从像素到帧的完整描述
无论哪种接口,屏幕最终都需要一组完整的时序参数来描述“一帧画面如何被扫描出来”。这组参数通常写在设备树的 display-timings 节点中,核心字段包括:
- clock-frequency:像素时钟频率,单位 Hz,决定每秒输出多少像素。
- hactive / vactive:有效像素宽度和高度,即分辨率。
- hfront-porch / hback-porch / hsync-len:行方向的前肩、后肩和同步脉冲宽度。
- vfront-porch / vback-porch / vsync-len:场方向的前肩、后肩和同步脉冲宽度。
- hsync-active / vsync-active:同步信号有效极性,0 为低有效,1 为高有效。
这些参数共同决定了一帧的总像素数和总行数。以 1920×1080@60Hz 为例,常见时序如下:
display-timings {
timing0 {
clock-frequency = <148500000>; /* 148.5 MHz */
hactive = <1920>;
vactive = <1080>;
hfront-porch = <88>;
hback-porch = <148>;
hsync-len = <44>;
vfront-porch = <4>;
vback-porch = <36>;
vsync-len = <5>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};
};
计算验证:行总像素 = 1920 + 88 + 148 + 44 = 2200;场总行数 = 1080 + 4 + 36 + 5 = 1125;像素时钟 = 2200 × 1125 × 60 ≈ 148.5 MHz,与 clock-frequency 一致。如果这个乘积对不上,屏幕就会出现偏移、抖动或无法锁定。
四、典型场景与调试误区
在 RK3399 上移植 MIPI 屏时,最常见的误区是只改了分辨率,却没有同步修改前后肩和同步宽度。MIPI 屏的初始化命令序列通常由屏厂提供,但时序参数必须与屏规格书严格一致。另一个误区是忽略极性:hsync-active 和 vsync-active 配反,会导致画面左右或上下镜像偏移。
LVDS 屏常见问题是通道映射错误。VESA 和 JEIDA 两种映射方式对同一组数据线的排列不同,配错会出现颜色错乱或花屏。eDP 和 HDMI 则更依赖 EDID 读取和链路训练,如果 AUX 通道或 DDC 通道不通,驱动会直接报链路训练失败或读不到 EDID。
把四类接口的协议骨架和统一时序参数放在一起理解,后续在设备树中配置 DSI、LVDS、eDP、HDMI 节点时,就能清楚每个字段对应协议中的哪一层,也能在出现花屏、偏移、闪烁时快速定位是链路问题还是时序问题。