2. LVDS显示原理:信号传输机制、差分信号与电气特性、时序参数解析
LVDS(Low-Voltage Differential Signaling,低压差分信号)是嵌入式显示系统中应用最广泛的接口标准之一。在RK3588平台上,LVDS接口通常用于连接工控屏、医疗屏或车载显示屏。理解LVDS的物理层原理是驱动移植与调试的基础。
核心要点:LVDS的核心优势在于低电压摆幅(350mV)与差分传输,使其在高速率(数百Mbps)下仍能保持低功耗与强抗干扰能力。
2.1 LVDS信号传输机制
LVDS采用电流驱动模式,发送端由一个恒流源(通常为3.5mA)驱动一对差分线,在接收端100Ω终端电阻上产生约350mV的电压差。逻辑状态由差分电压的极性决定:
- 逻辑“1”:P线电压 > N线电压(Vod > 0)
- 逻辑“0”:P线电压 < N线电压(Vod < 0)
在显示应用中,LVDS将RGB数据、行场同步信号(HSYNC/VSYNC)和数据使能信号(DE)通过串行化方式在4对或5对差分线上传输。常见的映射方式为VESA和JEIDA两种标准,位序排列不同。
LVDS链路组成:
SoC(RK3588)→ LVDS发送器(内置或外置)→ 差分线对 → LVDS接收器(屏端)→ TCON(时序控制器)→ 面板
SoC(RK3588)→ LVDS发送器(内置或外置)→ 差分线对 → LVDS接收器(屏端)→ TCON(时序控制器)→ 面板
2.2 差分信号与电气特性
LVDS的差分信号设计使其在高速传输中具有优异的共模抑制能力。以下为关键电气参数:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 差分电压摆幅 (Vod) | 250 ~ 450 mV | 通常为350mV,由恒流源3.5mA × 100Ω终端电阻产生 |
| 共模电压 (Vcm) | 1.125 ~ 1.375 V | 典型值1.2V,接收端以此作为参考 |
| 传输速率 | 200 ~ 800 Mbps/通道 | RK3588 LVDS支持最高约1.2Gbps/通道 |
| 终端电阻 | 100 Ω ± 1% | 跨接在差分线对接收端,必须靠近接收器引脚 |
| 传输线阻抗 | 50 Ω (单端) / 100 Ω (差分) | PCB走线需严格控制阻抗 |
工程注意:LVDS差分线对必须等长布线,长度差控制在±5mm以内,否则会导致时序偏移,造成显示雪花或条纹。RK3588平台调试时,若出现画面抖动,应优先检查差分线阻抗匹配与等长情况。
2.3 时序参数解析
LVDS显示时序由像素时钟、行/场同步信号和数据使能信号共同定义。RK3588的LVDS控制器需要精确配置以下时序参数:
| 参数 | 符号 | 说明 | 典型值(1024×600@60Hz) |
|---|---|---|---|
| 像素时钟 | PCLK | 每个像素的传输时钟周期 | 51.2 MHz |
| 行同步脉冲宽度 | HSPW | 行同步信号低电平持续时间 | 20 PCLK |
| 行同步后肩 | HBP | 行同步结束后到有效数据开始 | 160 PCLK |
| 行有效数据 | HACT | 一行中有效像素数 | 1024 PCLK |
| 行同步前肩 | HFP | 有效数据结束到下一个行同步开始 | 20 PCLK |
| 场同步脉冲宽度 | VSPW | 场同步信号低电平持续时间 | 3 行 |
| 场同步后肩 | VBP | 场同步结束后到有效数据开始 | 23 行 |
| 场有效数据 | VACT | 一帧中有效行数 | 600 行 |
| 场同步前肩 | VFP | 有效数据结束到下场同步开始 | 10 行 |
时序计算公式:
帧率 = PCLK / [(HSPW + HBP + HACT + HFP) × (VSPW + VBP + VACT + VFP)]
例如:51.2MHz / [(20+160+1024+20) × (3+23+600+10)] ≈ 60Hz
帧率 = PCLK / [(HSPW + HBP + HACT + HFP) × (VSPW + VBP + VACT + VFP)]
例如:51.2MHz / [(20+160+1024+20) × (3+23+600+10)] ≈ 60Hz
2.4 LVDS数据映射:VESA vs JEIDA
LVDS传输RGB数据时,不同标准对数据位的映射方式不同。RK3588的LVDS控制器支持两种模式切换,需根据面板规格选择:
| 标准 | 通道0 | 通道1 | 通道2 | 通道3 | 适用场景 |
|---|---|---|---|---|---|
| VESA | R0~R5, G0 | G1~G5, B0~B1 | B2~B5, HSYNC, VSYNC, DE | R6~R7, G6~G7, B6~B7 | 大多数工控屏、通用屏 |
| JEIDA | R2~R7 | G2~G7 | B2~B7, HSYNC, VSYNC, DE | R0~R1, G0~G1, B0~B1 | 部分日系面板、车载屏 |
调试技巧:如果移植后画面颜色异常(如蓝色偏紫、红色偏绿),首先检查LVDS映射模式是否与面板匹配。RK3588可通过修改设备树中
rockchip,output-mode 或 lvds-format 属性来切换VESA/JEIDA。
2.5 RK3588 LVDS控制器关键寄存器
在驱动移植过程中,需要操作以下关键寄存器组:
// RK3588 LVDS控制器寄存器映射(部分)
// 基地址:0xFE060000 (VOP LVDS)
#define LVDS_CTRL 0x00 // 控制寄存器:使能、复位
#define LVDS_CFG 0x04 // 配置寄存器:数据映射、通道数
#define LVDS_TIMING_CTRL 0x08 // 时序控制寄存器
#define LVDS_CLK_CTRL 0x0C // 时钟分频与相位控制
#define LVDS_STATUS 0x10 // 状态寄存器:锁定状态、错误标志
// 典型初始化流程(伪代码)
void lvds_init(struct lvds_device *lvds) {
// 1. 软件复位
writel(0x01, lvds->base + LVDS_CTRL);
udelay(10);
writel(0x00, lvds->base + LVDS_CTRL);
// 2. 配置数据映射(VESA模式)
writel(0x00, lvds->base + LVDS_CFG);
// 3. 设置通道数(4通道)
writel(0x03, lvds->base + LVDS_CFG);
// 4. 配置时钟相位(根据PCB走线延迟调整)
writel(0x02, lvds->base + LVDS_CLK_CTRL);
// 5. 使能LVDS输出
writel(0x80, lvds->base + LVDS_CTRL);
}
关键调试点:在RK3588平台上,LVDS时钟相位(CLK_CTRL)是常见问题点。如果画面出现垂直条纹或数据错位,尝试调整时钟相位值(0~3),每次修改后观察画面变化。