2、显示接口基础:HDMI、DP、LVDS、MIPI DSI、eDP接口协议对比与选型
做嵌入式多屏驱动,第一个要面对的问题就是——选接口。
说实话,我刚入行那会儿,看到这么多接口名字,头都大了。HDMI、DP、LVDS、MIPI DSI、eDP……每个都号称自己能传视频,但到底用哪个?为什么同一个项目里,有人用LVDS,有人用eDP?
这一章,我就带你把这些接口的底裤扒干净。咱们不讲虚的,直接上干货。
2.1 接口的本质:不就是传像素吗?
你想想看,无论什么显示接口,核心任务就一个:把显存里的像素数据,送到屏幕上去点亮每个像素点。
但问题来了:
- 像素数据怎么编码?
- 用几根线传?
- 传多快?
- 要不要压缩?
- 要不要音频?
不同的接口,就是对这些问题的不同回答。我个人的习惯是,先看带宽,再看距离,最后看成本。
2.2 HDMI:消费电子的老大哥
HDMI,全称High-Definition Multimedia Interface。这玩意儿你肯定不陌生,电视、机顶盒、游戏机上全是它。
核心特点:
- 同时传视频+音频+控制信号
- 采用TMDS(Transition Minimized Differential Signaling)编码
- 最大带宽:HDMI 2.1 可达48Gbps
- 传输距离:通常5-15米(无中继)
我在项目中遇到过一个问题:用HDMI连接4K@60Hz的屏幕,画面偶尔闪一下。查了半天,发现是线材质量不行。HDMI对线材要求很高,尤其是高频信号。便宜的线,屏蔽层做得差,信号衰减严重。
2.3 DisplayPort:PC和工业领域的王者
DP接口,我更喜欢叫它DisplayPort。它和HDMI最大的区别是什么?
说白了,DP是开放标准,HDMI是授权标准。DP不用交专利费,所以工业设备、PC显示器上用得特别多。
核心特点:
- 采用微包架构(Micro-Packet Architecture)
- 支持多流传输(MST),一根线带多个显示器
- 最大带宽:DP 2.0 可达80Gbps
- 传输距离:通常3-5米(无中继)
我个人特别喜欢DP的一点是它的AUX通道。这个辅助通道可以用来做EDID读取、DPCD寄存器访问,调试起来特别方便。我在调试一个双屏异显的项目时,就是靠DP的AUX通道抓到了EDID数据,才发现屏幕的时序参数配错了。
2.4 LVDS:老当益壮的工控老兵
LVDS,Low-Voltage Differential Signaling。这名字听起来很技术,其实说白了就是「低压差分信号传输」。
为什么工控设备还在用LVDS?
- 抗干扰能力强——差分信号天生抗共模噪声
- 功耗低——低压摆幅,才350mV
- 成熟稳定——用了二十多年的技术
但LVDS也有明显的短板:带宽上不去。单链路LVDS最高只能支持到WUXGA(1920x1200@60Hz)。你想上4K?没门。
我记得有一次,客户非要在一个老工控主板上接1080P屏幕。主板只有LVDS接口,屏幕是eDP的。怎么办?加转换芯片呗。但转换芯片会引入延迟,对实时性要求高的场景就不太合适。
2.5 MIPI DSI:移动设备的标配
MIPI DSI,Mobile Industry Processor Interface Display Serial Interface。名字很长,但记住一点就够了:它是为手机、平板这类移动设备设计的。
为什么移动设备都用MIPI DSI?
- 引脚少——4对差分线就能传高清视频
- 功耗低——适合电池供电设备
- 支持命令模式和视频模式两种工作方式
这里我要特别说一下命令模式。普通显示接口都是视频模式,也就是逐行扫描刷新。但MIPI DSI的命令模式,可以直接往屏幕的GRAM(图形显存)里写数据。这意味着什么?
意味着屏幕可以自己刷新,主控可以睡觉。省电啊!
我在做一个智能手表项目时,就用到了这个特性。手表平时显示时间,主控进入休眠,屏幕自己刷新。整机功耗从50mA降到了5mA。
2.6 eDP:嵌入式DisplayPort
eDP,Embedded DisplayPort。说白了,就是把DP接口用在嵌入式设备上,比如笔记本的内屏、工业平板。
eDP比LVDS强在哪?
- 带宽高——eDP 1.4就能支持4K@60Hz
- 线少——只用4对差分线,比LVDS的18/24根线少多了
- 支持PSR(Panel Self Refresh)——屏幕自己刷新,省电
- 支持HDR——高动态范围显示
我个人觉得,eDP是未来嵌入式显示的主流方向。尤其是现在ARM架构的SoC越来越强,很多都原生支持eDP接口。
但eDP也有坑。它的链路训练(Link Training)过程比较复杂。主控和屏幕之间要协商带宽、通道数、电压摆幅等参数。如果协商失败,屏幕就不亮。
我曾经遇到一个情况:同一块主板,接A屏幕能亮,接B屏幕就不亮。后来用逻辑分析仪抓eDP的AUX信号,发现B屏幕在链路训练阶段返回了一个错误的DPCD值。最后升级了屏幕的固件才解决。
2.7 接口对比:一张表说清楚
| 接口 | 最大带宽 | 传输距离 | 引脚数 | 功耗 | 典型应用 |
|---|---|---|---|---|---|
| HDMI | 48Gbps (2.1) | 5-15米 | 19 | 中 | 电视、机顶盒、游戏机 |
| DP | 80Gbps (2.0) | 3-5米 | 20 | 中 | PC显示器、工业设备 |
| LVDS | ~3.7Gbps | 5-10米 | 18-24 | 低 | 工控屏、车载屏 |
| MIPI DSI | ~12Gbps | <30厘米 | 4-10 | 极低 | 手机、平板、智能穿戴 |
| eDP | ~32.4Gbps (1.4) | <1米 | 10-20 | 低 | 笔记本内屏、工业平板 |
2.8 选型建议:到底用哪个?
这个问题没有标准答案,但我可以给你一些参考:
- 消费电子、需要长距离传输 → HDMI。电视、投影仪这些,HDMI是标配。
- PC显示器、多屏拼接 → DP。MST功能太香了,一根线带多个屏。
- 工控设备、1080P以下 → LVDS。成熟、稳定、便宜。
- 移动设备、低功耗 → MIPI DSI。引脚少、功耗低、支持命令模式。
- 高性能嵌入式、4K以上 → eDP。带宽高、线少、支持HDR。
最后说一句:别只看接口本身,还要看你的主控支不支持。有些SoC只有LVDS和MIPI DSI接口,你非要上eDP,那就得加桥接芯片,成本和复杂度都上去了。
嗯,这一章就到这里。下一章我们聊聊具体的驱动开发流程,到时候我会拿一个实际项目来拆解。