硬件接口探秘:RGB、LVDS、MIPI DSI、eDP/DP的电气特性与时序差异
做显示驱动移植,说白了就是跟这几种接口打交道。我刚开始接触嵌入式Linux显示时,也被这些接口搞得晕头转向——明明都是传图像数据,怎么电气特性差这么多?今天咱们就把它们挨个捋一遍。
1. RGB接口:最原始的并行传输
RGB接口是最古老的显示接口了。它直接把像素的R、G、B分量通过并行总线传过去,再加上行同步、场同步、像素时钟和数据使能信号。
| 信号 | 说明 | 典型电平 |
|---|---|---|
| R[0:n] | 红色分量数据线 | 3.3V / 1.8V CMOS |
| G[0:n] | 绿色分量数据线 | 3.3V / 1.8V CMOS |
| B[0:n] | 蓝色分量数据线 | 3.3V / 1.8V CMOS |
| PCLK | 像素时钟 | 3.3V / 1.8V CMOS |
| HSYNC | 行同步 | 3.3V / 1.8V CMOS |
| VSYNC | 场同步 | 3.3V / 1.8V CMOS |
| DE | 数据使能 | 3.3V / 1.8V CMOS |
RGB接口最大的问题是——线太多。24位真彩色需要24根数据线,再加上控制信号,总共30多根线。这在PCB布局时简直是噩梦。我记得有一次做项目,板子空间本来就紧张,RGB走线绕来绕去,最后时序跑不过去,折腾了两天才搞定。
2. LVDS:低压差分信号
LVDS(Low-Voltage Differential Signaling)的出现,就是为了解决RGB接口的痛点。它用差分对传输数据,抗干扰能力强,线数也少得多。
LVDS的核心思想是:把RGB数据串行化,通过差分对传输。一个LVDS通道通常包含4对数据线和1对时钟线。每对数据线传输7位数据(3对传RGB,1对传控制信号)。
LVDS典型配置:
- 单通道:4对数据 + 1对时钟,支持18位色深
- 双通道:8对数据 + 1对时钟,支持24位色深
- 传输速率:典型值 85MHz ~ 135MHz
- 电压摆幅:约350mV(差分)
LVDS的电气特性很有意思。它用的是电流驱动模式,发送端输出3.5mA的电流,在100Ω终端电阻上产生350mV的压降。接收端检测的是差分电压,而不是绝对电压。所以共模噪声会被抑制掉。
我个人的习惯是,在LVDS走线时一定要控制好阻抗。100Ω差分阻抗,±10%的容差。走线长度也要尽量匹配,差个几毫米问题不大,但超过1cm就可能出问题。
3. MIPI DSI:移动设备的王者
MIPI DSI(Display Serial Interface)是移动设备上最主流的显示接口。它比LVDS更进一步,不仅传数据,还能传命令——说白了就是可以跟屏幕芯片"对话"。
MIPI DSI的物理层叫D-PHY。它有两种模式:
- 高速模式(HS):差分信号,用于传输像素数据,速率可达1Gbps/lane
- 低功耗模式(LP):单端信号,用于传输命令,速率约10Mbps
这两种模式切换时,电压电平完全不同。HS模式下差分摆幅约200mV,LP模式下单端摆幅1.2V。我刚开始调MIPI时,就被这个切换搞懵了——示波器上看波形,一会儿大一会儿小,还以为信号有问题。
| 参数 | HS模式 | LP模式 |
|---|---|---|
| 信号类型 | 差分 | 单端 |
| 电压摆幅 | 200mV | 1.2V |
| 传输速率 | 80Mbps ~ 1Gbps | ~10Mbps |
| 功耗 | 高 | 低 |
| 用途 | 像素数据 | 命令/状态 |
经验之谈:MIPI DSI的时钟频率计算跟RGB不一样。RGB的像素时钟 = 分辨率 × 刷新率 × 帧消隐系数。而MIPI DSI的时钟 = 像素时钟 × 每像素位数 / (lane数 × 2)。因为D-PHY是DDR(双沿采样)的,所以除以2。
4. eDP/DP:PC领域的标准
eDP(Embedded DisplayPort)是DP(DisplayPort)的嵌入式版本,主要用于笔记本和平板的内置屏幕。它跟MIPI DSI有点像,但更"PC化"——支持更高的分辨率、更高的刷新率,还有AUX通道用来传控制信号。
eDP的物理层跟DP完全一样,只是协议上做了一些简化。它使用Main Link传输数据,AUX Channel传输命令,Hot Plug Detect检测屏幕插拔。
eDP有个很实用的特性——链路训练。每次上电时,主机和屏幕会协商链路参数:lane数、速率、电压摆幅、预加重等。这个协商过程是自动的,但有时候也会出问题。我记得有一次,某款屏幕在低温下链路训练失败,屏幕点不亮。后来发现是预加重参数没调好,在设备树里强制指定了参数才解决。
eDP常见速率等级:
- RBR(Reduced Bit Rate):1.62Gbps/lane
- HBR(High Bit Rate):2.7Gbps/lane
- HBR2:5.4Gbps/lane
- HBR3:8.1Gbps/lane
5. 四种接口的时序差异
时序是显示驱动中最容易踩坑的地方。四种接口的时序参数虽然都基于VESA标准,但具体实现上差异很大。
这里有个容易混淆的地方:RGB和LVDS的时序参数是直接配置在设备树里的,而MIPI DSI和eDP的时序参数是通过协议协商或命令设置的。说白了,前两种是"硬配",后两种是"软配"。
6. 实际调试中的注意事项
说了这么多理论,最后分享几个实战经验:
- 先确认硬件连接:用万用表量一下电源、地、时钟线有没有短路。我见过太多人上来就调软件,结果发现是排线没插紧。
- 用示波器看波形:特别是时钟信号。频率对不对?占空比是不是50%?抖动大不大?这些一眼就能看出来。
- 从简单开始:先调最低分辨率、最低刷新率,确认接口能通,再往上加。不要一上来就上4K@60Hz。
- 看内核日志:dmesg里会有很多有用信息。比如MIPI DSI的链路训练状态、eDP的EDID读取结果等。
我的习惯:每次调新屏幕,我都会先写一个简单的测试程序,只刷纯色画面——红、绿、蓝、白、黑。这样能快速判断是接口问题还是时序问题。如果纯色正常但图像花屏,那多半是时序参数不对。
嗯,这四种接口的电气特性和时序差异,基本上就这些了。每种接口都有自己的适用场景和坑点,理解了它们的本质区别,移植驱动时就能少走很多弯路。