2、显示接口协议:RGB接口、LVDS接口、MIPI DSI接口、HDMI接口的原理与对比

做嵌入式游戏机显示驱动,选对接口协议是第一步。我这些年折腾过不少屏幕,从最早的8位机到现在的掌机,接口选错了,后面全是坑。今天咱们就把四种主流接口——RGB、LVDS、MIPI DSI、HDMI——掰开揉碎讲清楚。

2.1 RGB接口:最朴素的并行传输

RGB接口,说白了就是直接把红绿蓝三原色的数据,通过并行总线一股脑塞给屏幕。每个像素的R、G、B分量各占几位,常见的有16位(RGB565)和24位(RGB888)。

它的原理很简单:像素时钟PCLK驱动数据线,行同步HSYNC告诉屏幕「新一行来了」,场同步VSYNC告诉屏幕「新一帧来了」。数据在时钟上升沿被锁存。

典型时序参数(以800×480分辨率为例):

  • 像素时钟:33.3 MHz
  • 行同步脉宽:2个像素时钟
  • 场同步脉宽:2行时间
  • 数据线:24根(RGB888)或16根(RGB565)

我在做第一台掌机原型时,用的就是RGB接口。当时图它简单,MCU直接拉GPIO就能点亮屏幕。但问题也很明显——线太多了。24根数据线加上控制线,排线粗得像根面条,而且距离一长信号就歪。

避坑指南:我曾经在5cm长的排线上跑RGB888,结果屏幕边缘出现鬼影。后来发现是信号反射。解决办法:加22Ω串联电阻,或者降低时钟频率。RGB接口不适合长距离传输,超过10cm建议换方案。

2.2 LVDS接口:低压差分,抗干扰强

LVDS(Low-Voltage Differential Signaling)的出现,就是为了解决RGB接口的痛点。它把并行数据串行化,用差分对传输。电压摆幅只有350mV左右,功耗低,抗干扰能力强。

它的工作原理:发送端将并行数据转换成串行数据流,通过4对或5对差分线传输。接收端再解串回并行数据。每对差分线传输速率可达几百Mbps。

举个例子,一个24位RGB数据加上控制信号,LVDS通常用4对数据线加1对时钟线。数据线每对传输7位串行数据,4对就是28位,足够容纳24位RGB和4位控制信号。

个人经验:我建议在游戏机设计中,如果屏幕和主板距离超过10cm,优先考虑LVDS。它的差分信号天生抗共模干扰,而且线缆可以做到很细。我做过一个项目,用LVDS在30cm排线上跑1024×600分辨率,画面稳得很。

LVDS的缺点?需要专门的发送器和接收器芯片。MCU不能直接驱动,得加一颗LVDS桥接芯片。成本比RGB高一点,但换来的是稳定性和布线便利性。

2.3 MIPI DSI接口:移动设备的王者

MIPI DSI(Display Serial Interface)是手机和平板上最常用的接口。它也是差分串行传输,但比LVDS更先进。它支持多通道(1-4 lane),每个lane的速率可达1Gbps以上。

它的核心优势:

  • 高速率:4 lane配置下,总带宽可达4Gbps以上,轻松驱动2K甚至4K屏幕
  • 低功耗:采用低压差分,且支持多种省电模式
  • 协议灵活:支持命令模式和视频模式,可以控制屏幕寄存器
  • 线缆少:4 lane加时钟,总共10根线左右

我记得第一次用MIPI DSI时,被它的协议栈搞晕了。它分物理层、协议层和应用层。物理层就是差分信号,协议层定义了数据包格式,应用层负责解析显示数据。

MIPI DSI数据包结构:

数据包格式:
  - 包头:4字节(数据标识符 + 字计数 + ECC校验)
  - 数据:可变长度(最长65535字节)
  - 包尾:2字节(CRC校验)

  Lane分配示例(4 lane):
  Lane0: 像素字节0,4,8...
  Lane1: 像素字节1,5,9...
  Lane2: 像素字节2,6,10...
  Lane3: 像素字节3,7,11...

做游戏机时,MIPI DSI有个好处:支持命令模式。你可以直接往屏幕的GRAM里写数据,不需要持续刷新。这对静态画面很省电。但缺点是需要MCU有MIPI DSI控制器,或者外挂桥接芯片。

注意:MIPI DSI的布线要求很高。差分对之间要等长,阻抗要控制在100Ω±10%。我曾经因为PCB走线没做等长,导致高速信号眼图闭合,屏幕出现雪花。后来重新布线才解决。

2.4 HDMI接口:消费电子的标准

HDMI(High-Definition Multimedia Interface)大家最熟悉了。电视、显示器、投影仪都用它。它也是差分串行传输,但比前面几种复杂得多。

HDMI的核心特点:

  • 集成音频:视频和音频同一条线传输
  • TMDS编码:8位数据转10位传输,减少电磁干扰
  • 热插拔:支持即插即用,通过HPD引脚检测
  • EDID:屏幕自动报告分辨率、刷新率等参数
  • HDCP:内容保护,防止盗录

在嵌入式游戏机里用HDMI,通常是作为输出接口,连接外部显示器。比如你做一台复古游戏机,想输出到电视上玩,那就得用HDMI。

我的做法:在游戏机主板上,我一般用一颗HDMI发送器芯片,比如Silicon Image的SiI9022。MCU通过I2C配置芯片,然后把RGB数据送进去,芯片自动编码成HDMI信号。注意HDMI的ESD保护要做好,接口处加TVS管,不然插拔几次就烧了。

HDMI的缺点?协议复杂,芯片贵,而且有授权费。小批量做游戏机,成本压力不小。

2.5 四种接口对比

特性 RGB LVDS MIPI DSI HDMI
传输方式 并行 差分串行 差分串行 差分串行
线缆数量 20-30根 8-10根 6-10根 19根
最大速率 ~150MHz ~1Gbps/对 ~1.5Gbps/lane ~18Gbps (HDMI 2.0)
传输距离 <10cm <1m <30cm <10m
功耗 极低
协议复杂度 简单 中等 复杂 复杂
成本 中高
典型应用 小尺寸屏、MCU直驱 工业屏、车载屏 手机、平板、掌机 电视、显示器

2.6 选型建议

做嵌入式游戏机,怎么选?我根据经验给几个建议:

  • 屏幕尺寸小于3.5寸,分辨率低于480×320:用RGB接口。MCU直接驱动,成本最低,开发最快。我早期的掌机原型都这么干。
  • 屏幕尺寸3.5-7寸,分辨率800×480到1024×600:用LVDS。线缆少,抗干扰好,适合做手持设备。
  • 屏幕尺寸5寸以上,分辨率1280×720以上:用MIPI DSI。带宽够,功耗低,适合做高性能掌机。
  • 需要输出到外部显示器:用HDMI。这是标准接口,兼容性好。

核心原则:接口选型不是越高级越好。RGB虽然老,但在小尺寸低分辨率场景下,它最简单可靠。MIPI DSI虽然强,但开发难度和成本都高。你想想看,一个320×240的屏幕,用MIPI DSI不是杀鸡用牛刀吗?

嗯,四种接口的原理和对比就讲到这里。下一章咱们聊聊帧缓冲的具体实现,包括双缓冲、撕裂避免这些实战技巧。到时候我会拿一个实际项目来拆解,保证干货满满。