1. MIPI DSI 协议基础

MIPI DSI(Display Serial Interface)是移动设备与嵌入式显示面板之间最主流的高速串行接口标准。本章从 MIPI 联盟的定位出发,逐层剖析 DSI 协议的分层架构、D-PHY 电气特性与数据通道机制,为后续驱动开发与性能调优奠定基础。

1.1 MIPI 联盟简介

MIPI(Mobile Industry Processor Interface)联盟成立于 2003 年,由 ARM、Intel、Nokia、Samsung、STMicroelectronics 等公司共同发起,旨在制定移动设备内部芯片间接口的开放标准。MIPI 联盟不生产硬件,而是定义规范,成员企业据此实现互操作的芯片与模组。

关键事实 说明
成立时间 2003 年
核心目标 降低移动设备内部接口复杂度,提高互操作性
主要工作组 DSI(显示)、CSI(摄像头)、I3C(控制总线)、RFFE(射频前端)等
DSI 版本演进 DSI-1(2005)→ DSI-2(2015)→ DSI-2 v2.0(2021)
当前主流 DSI-1(v1.3.1)用于 FHD 以下;DSI-2 用于 4K/高刷新率
课程提示: 在 Linux 内核中,DSI 驱动通常基于 DSI-1 规范实现,但 DSI-2 的 C-PHY 模式在部分高端 SoC 中已开始支持。理解 DSI-1 的 D-PHY 是掌握 DSI 协议的基础。

1.2 DSI 协议分层架构

DSI 协议采用经典的三层架构:物理层(Physical Layer)、链路层(Link Layer) 和 应用层(Application Layer)。这种分层设计使得上层协议与底层物理传输解耦,便于驱动在不同硬件平台间移植。

DSI 协议分层架构 应用层(Application Layer) 像素数据打包、命令集(DCS)、视频模式/命令模式选择 像素格式:RGB565 / RGB666 / RGB888 链路层(Link Layer) 数据包封装、CRC 校验、ECC 纠错、LPDT/HS 传输模式切换 短包(16-bit) / 长包(16-bit header + payload + 16-bit footer) 物理层(Physical Layer) D-PHY / C-PHY 电气特性、时钟通道、数据通道、差分信号 高速模式(HS)80 Mbps ~ 4.5 Gbps / Lane;低功耗模式(LP)≤ 10 Mbps 数据流方向:应用层 → 链路层 → 物理层 → DSI 总线 → 显示面板 反向(读取寄存器/状态)则从物理层向上传递

1.2.1 应用层

应用层负责将帧缓冲中的像素数据转换为 DSI 协议规定的数据格式,并决定使用 视频模式(Video Mode) 还是 命令模式(Command Mode) 发送给面板。

  • 视频模式: 实时流式传输,逐行/逐帧发送像素,面板自带时序控制器(TCON)较少,依赖主机持续提供数据。
  • 命令模式: 将帧数据写入面板内部 GRAM(图形 RAM),面板自行刷新,主机可休眠省电。

1.2.2 链路层

链路层负责将应用层数据封装为 DSI 数据包,添加包头(Header)、包尾(Footer)、CRC 和 ECC 校验。DSI 定义了两种包类型:

包类型 长度 用途
短包(Short Packet) 4 字节(2 字节数据 + 2 字节 ECC) 命令、同步信号、读取请求
长包(Long Packet) Header(4B) + Payload(0~65535B) + Footer(2B CRC) 像素数据、大块命令参数

1.2.3 物理层

物理层定义了 D-PHY 或 C-PHY 的电气特性、时钟与数据通道的差分信号标准,以及高速(HS)与低功耗(LP)两种传输模式。Linux 内核中的 phy 子系统负责管理物理层配置。

1.3 D-PHY 电气特性与数据通道

D-PHY 是 DSI-1 标准使用的物理层,采用 源同步差分信号 传输,包含 1 条时钟通道(Clock Lane)和 1~4 条数据通道(Data Lanes)。

1.3.1 电气特性

参数 高速模式(HS) 低功耗模式(LP)
信号类型 差分(Dp/Dn) 单端(Dp 或 Dn)
电压摆幅 200 mV(典型) 1.2 V(典型)
数据传输速率 80 Mbps ~ 4.5 Gbps / Lane ≤ 10 Mbps
功耗 高(每 Lane 约 5~20 mW) 极低(约 0.5 mW)
应用场景 像素数据传输 命令、初始化、总线控制

1.3.2 数据通道与时钟通道

时钟通道提供差分时钟信号(Dp/Dn),数据通道在时钟的上升沿和下降沿各采样一次数据(DDR 采样)。数据通道数量直接影响总带宽:

D-PHY 数据通道与时钟通道连接拓扑 主机 SoC DSI 控制器 D-PHY TX 显示面板 DSI 接收器 D-PHY RX 时钟通道(Clock Lane) 差分对 Dp/Dn,连续时钟或突发时钟 数据通道 0(Data Lane 0) 双向,用于命令/像素/状态读取 数据通道 1(Data Lane 1) 单向(主机→面板),仅用于像素数据 数据通道 2(Data Lane 2) 可选,增加带宽 总带宽 = 时钟频率 × 2(DDR)× 数据通道数 × 每通道数据位宽(通常 8/16 bit)

1.3.3 数据通道带宽计算

以 4 通道 D-PHY、1 GHz 时钟频率为例:

总带宽 = 1 GHz × 2 (DDR) × 4 (Lanes) × 8 bit = 64 Gbit/s = 8 GB/s
有效像素带宽(考虑 20% 协议开销)≈ 6.4 GB/s
可支持分辨率:3840×2160 @ 120 Hz × 24 bpp ≈ 23.9 Gbit/s → 远低于 64 Gbit/s,带宽充裕
驱动开发要点: 在 Linux 内核中,DSI 驱动通过 struct mipi_dsi_device 描述设备,通过 mipi_dsi_transfer() 发送数据包。物理层配置由 phy_configure() 和 phy_power_on() 控制。性能调优时需关注时钟频率、通道数、LP/HS 切换延迟三个关键参数。

1.3.4 LP 与 HS 模式切换

D-PHY 支持在 LP 和 HS 模式之间动态切换,切换过程由链路层控制,遵循特定的时序序列:

  1. LP→HS 切换: 先进入 LP-11(高阻态),然后 Dp 拉低(LP-00),等待 TLPX(约 50 ns),再进入 HS-0 状态,最后开始 HS 数据传输。
  2. HS→LP 切换: 发送 HS 结束序列(Trailer),Dp/Dn 回到 LP-11 状态。

切换延迟(TLPX + THS-PREPARE + THS-TRAIL)通常在 100~300 ns 之间,频繁切换会降低有效带宽。

常见陷阱: 部分低端面板在 LP→HS 切换时对时序要求严格,若 TLPX 过短可能导致数据错位。驱动中应通过设备树属性 dsi-lp-clock-frequency 和 dsi-hs-clock-frequency 分别配置 LP 和 HS 时钟,避免使用默认值。