1. MIPI 基础概念:从联盟到物理层

做嵌入式驱动这些年,我接触最多的接口就是 MIPI。无论是手机摄像头、平板显示屏,还是车载摄像头模块,背后几乎都是 MIPI 在干活。今天咱们就从根上捋一捋——MIPI 联盟、CSI‑2/DSI 协议、D‑PHY 物理层,这三块搞明白了,后面调试信号、写驱动才不会发懵。

1.1 MIPI 联盟:谁定的规矩?

MIPI 联盟全称 Mobile Industry Processor Interface Alliance,2003 年成立。说白了,就是一群芯片公司(ARM、ST、TI、Nokia 等)凑在一起,想给移动设备内部接口定一套统一标准。

为什么要搞这个联盟?

  • 减少混乱:以前摄像头、显示屏各用各的并行接口,排线多、功耗高、速度上不去。
  • 降低门槛:有了统一标准,SoC 厂商和模组厂商可以各自专注,不用互相迁就。
  • 推动演进:从 D‑PHY 到 C‑PHY,从 CSI‑2 到 CSI‑3,联盟持续迭代。
个人习惯:我每次拿到新 Sensor 的 datasheet,第一件事就是翻到 "MIPI Compliance" 章节。如果它说兼容 CSI‑2 v1.3,我就知道 Lane 数、速率范围、ECC 校验这些参数大概在什么档次。

1.2 CSI‑2 与 DSI 协议:摄像头 vs 显示屏

MIPI 协议族里,咱们嵌入式工程师打交道最多的就是两个:

协议 全称 用途 典型设备
CSI‑2 Camera Serial Interface 2 图像传感器 → 处理器 摄像头模组、ISP
DSI Display Serial Interface 处理器 → 显示屏 LCD 屏、OLED 屏

CSI‑2 的核心特点:

  • 分层架构:应用层、协议层、物理层。
  • 支持多数据流:同一链路上可以传 RAW、YUV、JPEG 等多种格式。
  • 内建 ECC 和 CRC:传输可靠性有保障。

DSI 的核心特点:

  • 支持命令模式和视频模式。
  • 命令模式适合小尺寸屏(手表、IoT),视频模式适合大尺寸屏(手机、平板)。
  • 低功耗模式(LP)和高速模式(HS)动态切换。
避坑指南:我曾经在一个项目里把 CSI‑2 的 Lane 映射配反了——Sensor 输出 4 Lane,但 SoC 端只配了 2 Lane 的映射表。结果图像花屏,查了三天才发现是协议层的 Lane 分配没对齐。所以,CSI‑2 的 "Virtual Channel" 和 "Data Type" 一定要和 Sensor 端严格对应。

1.3 D‑PHY 物理层架构:信号长什么样?

D‑PHY 是 MIPI 最常用的物理层标准。它定义了信号如何在线路上传输。咱们调试时拿示波器抓的波形,就是 D‑PHY 的电气表现。

D‑PHY 的关键概念:

  • Lane:一条差分对(Dp/Dn)。CSI‑2 最少 1 Lane,最多 4 Lane。
  • Clock Lane:差分时钟,始终存在。
  • Data Lane:差分数据,可以单向或双向。
  • 两种模式:LP(低功耗,1.2V 单端)和 HS(高速,200mV 差分)。

D‑PHY 的传输状态:

状态 电平 用途
LP‑00 Dp=0, Dn=0 停止 / 空闲
LP‑01 Dp=0, Dn=1 HS 请求
LP‑10 Dp=1, Dn=0 LP 请求
LP‑11 Dp=1, Dn=1 控制 / 停止
注意:HS 模式下信号摆幅只有 200mV 左右,共模电压约 200mV。示波器探头要用差分探头,或者用 AC 耦合 + 50Ω 端接。普通 10× 探头直接测,波形会严重失真。

1.4 D‑PHY 的 Lane 结构图

下面这张图是我自己画的一个 D‑PHY Lane 的典型连接结构。你可以看到 Clock Lane 和 Data Lane 如何连接到 SoC 和 Sensor。

D‑PHY Lane 结构图 D‑PHY Lane 典型连接结构 SoC / ISP MIPI Host Sensor MIPI Device Clock Lane (Dp/Dn) Data Lane 0 (Dp/Dn) Data Lane 1 (Dp/Dn) 说明: • Clock Lane 始终由 Host 驱动,Device 只接收。 • Data Lane 在 CSI‑2 中为单向(Sensor → SoC),在 DSI 中可为双向。 • 每个 Lane 都是一对差分线,HS 模式下速率可达 1.5 Gbps / Lane。

1.5 小结:这三块怎么串起来?

MIPI 联盟定标准,CSI‑2/DSI 定协议格式,D‑PHY 定电气传输。咱们调试时,从上往下查:

  1. 协议层:检查 Virtual Channel、Data Type、帧格式对不对。
  2. 物理层:看 Lane 数、速率、端接、共模电压。
  3. 电气层:用示波器抓 HS 和 LP 状态,确认信号完整性。
我的经验:很多新手一上来就调驱动代码,其实先拿示波器看一眼 Clock Lane 有没有波形,能省一半时间。Clock 没有,后面全是白费。