3、接口协议详解:MIPI DSI物理层与协议层、eDP接口特性、LVDS与RGB接口对比
各位同学,今天我们来聊聊显示驱动里最绕不开的话题——接口协议。说实话,我刚入行那会儿,被MIPI、eDP、LVDS这些缩写搞得晕头转向。后来踩了不少坑,才慢慢摸清楚它们的脾气。今天我就把这些年积累的经验,掰开了揉碎了讲给你们听。
3.1 MIPI DSI:物理层与协议层
MIPI DSI,全称是Mobile Industry Processor Interface Display Serial Interface。说白了,它就是手机、平板这类移动设备上最主流的显示接口。我个人习惯把它拆成两层来看:物理层和协议层。
3.1.1 物理层(D-PHY)
物理层用的是D-PHY标准。它由时钟通道和数据通道组成。时钟通道是差分对,数据通道可以配成1条、2条、4条,甚至更多。每条数据通道也是差分对,用两根线传数据。
为什么要用差分对?抗干扰能力强啊。我在项目中遇到过,有一次板子走线没注意等长,结果屏幕闪得跟迪斯科似的。后来查出来,就是差分对长度差太多,信号歪了。
关键参数:
- 每通道速率:最高可达2.5 Gbps(D-PHY v1.2)
- 工作模式:高速模式(HS)和低功耗模式(LP)
- 电压摆幅:HS模式约200mV,LP模式约1.2V
嗯,这里要注意:HS模式用来传大量图像数据,LP模式用来传命令。两种模式切换时,有专门的时序要求。我曾经见过一个方案,LP转HS的时序没调好,导致屏幕初始化失败,折腾了两天才找到原因。
3.1.2 协议层
协议层定义了数据怎么打包、怎么传输。MIPI DSI的协议层分三层:像素打包层、低级协议层、通道管理层。听起来复杂,其实核心就两个东西:包(Packet)和命令(Command)。
包有两种:长包和短包。长包用来传图像数据,短包用来传命令。每个包都有包头、数据(可选)、包尾。包头里包含了数据类型、虚拟通道号等信息。
// 一个典型的MIPI DSI写命令序列
// 先发短包:设置列地址
0x2A // DCS命令:Set Column Address
0x00 0x00 // 起始列
0x03 0xFF // 结束列
// 再发长包:写入像素数据
0x2C // DCS命令:Write Memory Start
// 后面跟着大量像素数据...
为什么会这样设计?因为显示数据量大,但控制命令量小。用两种包分开处理,效率更高。我建议你们调试时,先用逻辑分析仪抓一下包,看看命令序列对不对。很多花屏问题,其实就是命令发错了。
避坑指南:我曾经遇到一个案子,屏幕在低温下初始化失败。查了三天,发现是MIPI DSI的LP模式时序在低温下漂移了。解决办法是调整驱动能力寄存器,把LP模式的驱动电流加大一档。
3.2 eDP接口特性
eDP,全称Embedded DisplayPort。它主要用在笔记本电脑、一体机这类产品上。跟MIPI DSI比,eDP有几个明显的优势。
第一,带宽高。eDP 1.4版本,单通道速率能到8.1 Gbps。四条通道加起来,带宽超过32 Gbps。4K、8K分辨率都不在话下。
第二,支持多流传输。一条eDP线可以同时传多路视频流。比如笔记本的内屏和外接显示器,可以用同一个接口。
第三,有辅助通道。eDP的AUX通道用来传控制命令和EDID数据。这个设计很聪明,把数据和命令分开了,互不干扰。
| 特性 | eDP 1.3 | eDP 1.4 | eDP 1.4a |
|---|---|---|---|
| 最大速率(每通道) | 5.4 Gbps | 8.1 Gbps | 8.1 Gbps |
| 支持分辨率 | 4K@60Hz | 4K@120Hz | 8K@60Hz |
| PSR(面板自刷新) | 支持 | 支持 | 支持 |
| 多流传输 | 不支持 | 支持 | 支持 |
我个人觉得,eDP最大的亮点是PSR(Panel Self Refresh)。它允许屏幕在显示静态画面时,自己刷新自己,不用主控一直发数据。你想想看,这对省电有多大帮助。笔记本的续航,就是这么一点一点抠出来的。
注意:eDP的线缆长度有限制。一般建议不超过1米。超过这个长度,信号衰减会很严重。我在项目中试过用1.5米的线,结果屏幕出现噪点,怎么调都调不好。最后换成0.8米的线,问题就解决了。
3.3 LVDS与RGB接口对比
LVDS和RGB,这两个都是老接口了。但在一些工业屏、车载屏上,它们还在用。我简单对比一下。
3.3.1 RGB接口
RGB接口是并行接口。R、G、B各8位,加上行同步、场同步、时钟、数据使能,一共需要几十根线。优点是简单直接,主控直接把像素数据往总线上放就行。缺点是线太多,走线麻烦,抗干扰差。
我记得刚毕业那会儿,做一个小尺寸LCD驱动。用的就是RGB接口。板子画完后,发现RGB走线绕了一大圈,结果屏幕显示有条纹。后来把走线等长处理了一下,条纹才消失。
3.3.2 LVDS接口
LVDS是低压差分信号。它把RGB的并行数据串行化,用差分对传输。一般4对数据线加1对时钟线,总共10根线。比RGB接口少多了。
LVDS的优势很明显:
- 线少,走线方便
- 差分信号,抗干扰强
- 可以传更远的距离
但LVDS也有缺点:它需要串行化芯片,成本高一点。而且LVDS的速率上限不高,一般到1920x1080@60Hz就差不多了。再高分辨率,就得用eDP或者MIPI了。
| 对比项 | RGB接口 | LVDS接口 |
|---|---|---|
| 信号类型 | 单端并行 | 差分串行 |
| 线数 | 20~30根 | 8~10根 |
| 抗干扰能力 | 弱 | 强 |
| 传输距离 | 短(<10cm) | 中(<1m) |
| 典型应用 | 小尺寸LCD、低分辨率 | 工业屏、车载屏 |
| 成本 | 低 | 中 |
选哪个接口?我的建议是:
- 如果你做手机、平板,用MIPI DSI
- 如果你做笔记本、一体机,用eDP
- 如果你做工业设备、车载设备,分辨率不高,用LVDS
- 如果你做小尺寸、低成本的方案,用RGB
总结一下:接口协议这东西,没有绝对的好坏。关键看你的应用场景。我见过有人非要在手机上用LVDS,结果走线走不开,板子画了五版才搞定。也见过有人用MIPI DSI做工业屏,结果线太长信号不行。选对接口,比什么都重要。
好了,这一章就讲到这里。下一章我们聊聊屏幕校准,那也是个坑多的地方。到时候我给你们讲讲,怎么用色度计把屏幕调准,以及那些年我调过的奇葩屏幕。