1. MIPI DSI 协议基础:从物理层到应用层

做嵌入式显示驱动,绕不开 MIPI DSI。说实话,我第一次接触 DSI 时也被那一堆分层、模式、时序搞得头大。但后来我发现,只要把它的骨架理清楚,剩下的就是填肉。今天我们就从最底层开始,把 DSI 的协议基础掰开揉碎。

1.1 MIPI 联盟与 DSI 协议概述

MIPI 联盟,全称 Mobile Industry Processor Interface Alliance。说白了,就是一群手机芯片公司凑在一起,想把内部接口标准化。我当年做第一款平板驱动时,用的还是并口 RGB 屏,排线粗、干扰大、速率上不去。后来换成 DSI,一根差分线就能搞定高清显示,真是天壤之别。

DSI(Display Serial Interface)是 MIPI 联盟定义的串行显示接口标准。它基于 MIPI 的物理层规范 D-PHY,专门用来在主机(应用处理器)和显示设备(LCD/OLED 面板)之间传输图像数据和控制命令。

核心特点:

  • 串行差分传输,抗干扰能力强
  • 支持多数据通道(1/2/3/4 Lane),可扩展带宽
  • 低功耗模式(LP)与高速模式(HS)动态切换
  • 同时支持命令模式和视频模式

1.2 DSI 物理层与分层架构

DSI 协议栈分为四层,从上到下依次是:应用层、协议层、物理层。嗯,其实严格来说是三层,但很多人把 Lane Management 也算作一层。我个人习惯画成四层,这样更容易理解数据是怎么从 CPU 跑到屏幕上的。

DSI 协议分层架构 应用层(Application Layer) 像素数据打包 / 命令解析 / 显示刷新控制 协议层(Protocol Layer) 短包 / 长包封装 / CRC / ECC / 包重组 通道管理层(Lane Management) 数据分发 / Lane 合并 / 时序校准 物理层(D-PHY) 差分信号 / HS/LP 模式切换 / 时钟与数据 Lane 数据流向:主机 → 显示设备

你想想看,每一层各司其职。应用层只管把像素数据扔下去,物理层只管把 0 和 1 变成差分电压。中间两层负责打包、校验、分发。这种分层设计最大的好处是——换物理层不用改上层代码。我记得有次项目从 D-PHY 换到 C-PHY,协议层代码几乎没动。

1.3 DSI 数据传输模式:HS 与 LP

DSI 有两种数据传输模式:高速模式(HS)和低功耗模式(LP)。这是 DSI 最巧妙的设计之一。

特性 高速模式(HS) 低功耗模式(LP)
信号电平 差分(200mV 摆幅) 单端(1.2V CMOS)
传输速率 80 Mbps ~ 4.5 Gbps / Lane ~10 Mbps
功耗 高(约 2-5 mW / Lane) 极低(约 0.1 mW)
用途 传输图像像素数据 传输控制命令、配置寄存器
总线状态 HS-Idle / HS-Data LP-00 / LP-01 / LP-10 / LP-11

我的经验:调试时最常踩的坑就是 HS/LP 切换时序。DSI 规范要求从 LP 切换到 HS 必须先进入 LP-11 状态,再经过一段 T_HS_PREPARE 时间。我曾经因为 D-PHY 的 T_HS_PREPARE 配置少了 50ns,导致屏幕上半部分花屏。查了两天才定位到问题,后来我习惯在驱动里把切换时序参数留出 20% 的余量。

为什么会这样设计?很简单——显示一帧图像的数据量巨大,必须用高速传输;但配置屏幕寄存器只需要几十个字节,用高速模式反而浪费功耗。所以 DSI 的做法是:传图像时切 HS,发命令时切 LP。两者动态切换,互不干扰。

1.4 DSI 命令模式与视频模式

DSI 支持两种工作模式:命令模式(Command Mode)和视频模式(Video Mode)。这是 DSI 协议里最容易混淆的概念,我当年也花了很长时间才搞明白。

命令模式

命令模式下,主机通过 DSI 总线向显示模块发送命令和数据包。显示模块内部有帧缓冲(Frame Buffer),主机只需要把图像数据写到帧缓冲里,剩下的刷新工作由显示模块自己完成。

  • 优点:主机不需要持续刷新,省带宽、省功耗
  • 缺点:显示模块需要自带 RAM,成本高
  • 典型应用:智能手表、手机副屏、低功耗 IoT 设备

命令模式数据流:

主机 → DSI 命令(写寄存器/写帧缓冲) → 显示模块(内部刷新) → 面板

视频模式

视频模式下,显示模块没有帧缓冲,或者帧缓冲很小。主机必须实时、连续地通过 DSI 总线发送像素数据。显示模块收到一行就刷新一行,收到一帧就刷新一帧。

  • 优点:显示模块不需要 RAM,成本低
  • 缺点:主机必须持续发送数据,带宽占用高
  • 典型应用:平板电脑、车载显示屏、工业 HMI

视频模式数据流:

主机 → DSI 视频流(HS 连续传输) → 显示模块(实时刷新) → 面板
对比项 命令模式 视频模式
帧缓冲 显示模块内部有 显示模块无(或很小)
主机负载 低(仅需发送命令) 高(需持续发送像素)
功耗 低(可进入休眠) 高(必须持续工作)
刷新率控制 由显示模块内部定时器控制 由主机发送时序控制
典型场景 低功耗、小尺寸屏 大尺寸、高刷新率屏

避坑指南:我曾经在一个项目中,选了一款只支持命令模式的 OLED 屏,但主控的 DSI 控制器只实现了视频模式。结果就是——屏幕点不亮。后来只能换屏。所以选型时一定要确认主控 DSI 控制器支持哪种模式,或者是否支持模式切换。

1.5 本章小结

DSI 协议基础就这些。记住几个关键点:

  • 四层架构:应用层 → 协议层 → Lane 管理 → 物理层
  • 两种传输模式:HS 传数据、LP 传命令
  • 两种工作模式:命令模式(带缓冲)和视频模式(实时刷新)