概述
在嵌入式系统(手机、车载、IoT、工业相机)中,CSI、DSI和D-PHY是 MIPI 联盟定义的三项核心标准。简单说:CSI 管摄像头,DSI 管显示屏,D-PHY 是它们底层的物理传输通道。三者分属协议栈的不同层次。
一、MIPI D-PHY — 物理层(PHY)
1.1 是什么?
D-PHY是 MIPI 联盟定义的源同步(Source-Synchronous)、高速、低功耗的串行物理层标准。它是 CSI 和 DSI 的传输基础,提供了从芯片到芯片(或芯片到外设)之间的电气和信号规范。
1.2 核心特性
| 特性 | 说明 |
|---|---|
| 信号模型 | 差分对(differential pair)+ 单端 LP(Low Power)信号 |
| 工作模式 | HS(High Speed)模式和LP(Low Power)模式双模切换 |
| 时钟方案 | 独立的差分时钟通道(DDR 源同步时钟) |
| 数据通道 | 1 ~ 4 个数据 lane(可扩展) |
| 带宽 | 每 lane 最高约 1.5 Gbps(v1.0)→ 4.5 Gbps(v2.0)→ 9 Gbps(v2.5) |
| 终端电阻 | HS 模式 100Ω 差分终端,LP 模式高阻 |
| 信号摆幅 | HS 差分约 200 mV(低摆幅省电),LP 单端 1.2 V |
1.3 双模式工作
这是 D-PHY 最核心的设计思想——一根 lane 上分时传输 LP 和 HS 信号:
Lane 状态机: Escape Mode ↑ LP Mode ───→ HS Mode ───→ LP Mode ───→ ... (低功耗) (高速传输) (低功耗) ↑ ↑ 控制命令 数据突发传输 (BTA、ULPS等) (图像/视频数据)| 模式 | 电压 | 速率 | 用途 |
|---|---|---|---|
| HS (High Speed) | 差分 ~200 mV | 80 Mbps ~ 4.5 Gbps/lane | 图像数据突发传输 |
| LP (Low Power) | 单端 0 / 1.2 V | ≤ 10 Mbps | 控制命令、低功耗待机 |
| ULPS (Ultra-Low Power State) | 特定电平组合 | — | 极低功耗休眠 |
| BTA (Bus Turn-Around) | LP 信号 | — | 总线方向反转(双向通信) |
LP 到 HS 的切换序列:
LP-11 → LP-01 → LP-00 → HS-0 (SoT: Start of Transmission) ↓ HS 数据突发 ↓ HS-0 → LP-11 (EoT: End of Transmission)1.4 Lane 互联拓扑
Clock Lane (必选) SoC ═══════════════════════ Sensor/Display (Master) Data Lane 0 (必选) (Slave) ═══════════════════════ Data Lane 1 (可选) ═══════════════════════ Data Lane 2 (可选) ═══════════════════════ Data Lane 3 (可选) ═══════════════════════- Clock Lane:提供 DDR 源同步时钟,HS 模式下双边沿采样
- Data Lane 0:最少配置时必须包含;在 LP 模式下还承担反压(Escape Mode)和BTA(双向通信)的职责
- Data Lane 1-3:纯数据带宽扩展
1.5 D-PHY 版本演进
| 版本 | 最大速率 / lane | 主要变化 |
|---|---|---|
| v1.0 (2009) | 1.0 Gbps | 初版 |
| v1.1 (2011) | 1.5 Gbps | 增加 ULPS |
| v1.2 (2014) | 2.5 Gbps | 支持 HS-Idle、降低 EMI |
| v2.0 (2015) | 4.5 Gbps | 支持 CPHY 共存 |
| v2.1 (2017) | 4.5 Gbps | 增强低功耗、改善 ESD |
| v2.5 (2020) | 9.0 Gbps | 适配更高分辨率传感器 |
二、MIPI CSI — 摄像头串行接口
2.1 是什么?
CSI(Camera Serial Interface)是 MIPI 联盟定义的应用层 + 链路层协议,用于连接图像传感器(CMOS Image Sensor)和主处理器(AP / SoC)的 ISP(Image Signal Processor)。
2.2 两个层面
CSI 不是一个单一的协议,而是一套协议族,分为CSI-2和CSI-3(极少使用)两层:
┌────────────────────────────────┐ │ 应用数据:RAW / YUV / RGB │ ← 像素格式层 ├────────────────────────────────┤ │ CSI-2 协议层(包/帧/虚拟通道) │ ← 链路层 ├────────────────────────────────┤ │ MIPI D-PHY(或 C-PHY) │ ← 物理层 └────────────────────────────────┘- CSI-2:目前绝对主流。几乎所有嵌入式摄像头都走 CSI-2 over D-PHY。也支持 over C-PHY。
- CSI-3:基于 M-PHY + UniPro 协议栈,主要用于高速高吞吐场景,生态极小。
2.3 CSI-2 协议核心概念
数据包层级
┌─────────┬──────────┬──────────────┬─────────┐ │ SoT │ Packet │ EoT │ │ │ (同步头) │ Header │ Payload │ (结束) │ │ │ (4B) │ (0~16383B) │ │ └─────────┴──────────┴──────────────┴─────────┘- Short Packet (SP):只有 4 字节包头,无 payload,用于同步信号(帧开始/结束、行开始/结束)
- Long Packet (LP):4 字节包头 + payload(像素数据)
虚拟通道(Virtual Channel)
- 4 bit VC ID(最多 16 个虚拟通道)
- 一个物理 CSI 接口可以同时传输多路图像流(如:主摄 + 深度 + 红外)
- 不同 VC 的数据在接收端被解复用给不同的 DMA 通道
数据类型(Data Type)
| DT 值 | 含义 |
|---|---|
| 0x2A | RAW8 |
| 0x2B | RAW10 |
| 0x2C | RAW12 |
| 0x1E | YUV422 8-bit |
| 0x24 | RGB888 |
| 0x12 | Embedded 8-bit non-image data(内嵌统计信息等) |
帧结构
Frame Start (SP) ↓ ┌──────────────────────────────────────────────┐ │ Line Start (SP) → Pixel Data (LP) → Line End (SP) │ ← 行 N │ Line Start (SP) → Pixel Data (LP) → Line End (SP) │ ← 行 N+1 │ ... │ │ Line Start (SP) → Pixel Data (LP) → Line End (SP) │ ← 最后一行 │ Frame End (SP) │ └──────────────────────────────────────────────┘ ↓ Vertical Blanking (可插入 LP 模式省电) ↓ Frame Start (下一帧)2.4 CSI 的典型拓扑
OV5640 SoC (i.MX8M) ┌─────────┐ ┌──────────────┐ │ Sensor │ CSI-2 │ MIPI CSI-2 │ │ (CSI-2 │──────────│ Host │ │ TX) │ 2-lane │ Controller │─── ISP ─── /dev/video0 │ │ + I²C │ (RX) │ └─────────┘ └──────────────┘ │ ├── PWDN (GPIO 控制) ├── RESET (GPIO 控制) ├── MCLK (主时钟,SoC 提供) └── I²C (配置寄存器,传曝光/增益等参数)I²C 不在 CSI 规范中,但在实际硬件设计中几乎总是与 CSI 共同出现。所有 Sensor 寄存器(分辨率、帧率、曝光、增益)通过 I²C(或 SCCB 兼容协议)配置。
2.5 内核驱动分层
用户态 /dev/video0 (V4L2) ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 内核态 V4L2 框架 (v4l2-core) │ ┌────────┴────────┐ │ CSI 主机驱动 │ ← drivers/media/platform/<soc>/csi.c │ (mipi-csi 控制器) │ 配置 D-PHY、lane 数、VC └────────┬────────┘ │ 内核 D-PHY API ┌────────┴────────┐ │ D-PHY 驱动 │ ← drivers/phy/<vendor>/phy-xxx-mipi-dphy.c │ (PHY 子系统) │ 配置 HS/LP、时钟速率 └────────┬────────┘ │ 寄存器操作 ┌────────┴────────┐ │ SoC MIPI PHY │ ← 硬件 IP │ (硬核) │ └─────────────────┘ ┌─────────────────┐ │ Sensor 驱动 │ ← drivers/media/i2c/ov5640.c │ (I²C 从设备) │ V4L2 subdev 模型 └─────────────────┘2.6 设备树示例
&mipi_csi { status = "okay"; #address-cells = <1>; #size-cells = <0>; /* 端口 0:连接到 sensor */ port@0 { reg = <0>; mipi_csi_ep: endpoint { remote-endpoint = <&ov5640_ep>; >三、MIPI DSI — 显示串行接口3.1 是什么?
DSI(Display Serial Interface)是 MIPI 联盟定义的应用层 + 链路层协议,用于连接主处理器(AP / SoC)的显示控制器和显示面板(LCD / OLED)。
3.2 协议分层(与 CSI 高度对称)
┌────────────────────────────────┐ │ 像素数据(RGB / YUV) │ ← 应用层 ├────────────────────────────────┤ │ DSI 协议层(包/虚拟通道/ECC) │ ← 链路层 ├────────────────────────────────┤ │ MIPI D-PHY(或 C-PHY) │ ← 物理层 └────────────────────────────────┘
3.3 DSI 协议核心概念
与 CSI 的关键差异
特性 CSI-2 DSI 方向 单向(Sensor → SoC) 单向为主,支持BTA 双向 数据来源 Sensor 主动推送 SoC 主动推送 LP 反压 无(Sensor 只管发) 有:面板可通过 LP 回报 TE(Tearing Effect)信号 视频模式 无(天然流式) 有:Video Mode和Command Mode两种 控制信息 I²C 独立通道 集成在 DSI 协议内(DCS 命令)
两种工作模式
Video Mode(视频模式):
- SoC 持续以固定帧率推送像素数据(类 HDMI / DP)
- 适用于大多数手机、平板、车载中控屏
- 分三个子模式:Non-Burst(带同步脉冲)、Non-Burst(带同步事件)、Burst(突发模式,最省电)
Video Mode 时序: VSS → VBP → VACT (有效行) → VFP → VSS → ... HSS → HBP → HACT (有效像素) → HFP → HSS → ...
Command Mode(命令模式):
- SoC 先将一帧写入面板的 GRAM(帧缓冲),面板自主刷新
- 适用于智能手表、副屏(需要极低功耗的常亮显示)
- 面板通过TE(Tearing Effect)信号告知 SoC 何时可以写入新帧,避免撕裂
DCS(Display Command Set)
DSI 协议内置了 DCS 标准命令集,通过 LP 模式或 HS 模式传输,无需外挂 I²C / SPI:
DCS 命令 功能 enter_sleep_mode面板休眠 exit_sleep_mode面板唤醒 set_display_on打开显示 set_display_off关闭显示 set_column_address设置列地址窗口 set_page_address设置行地址窗口 write_memory_start写入像素数据到 GRAM
数据包格式(与 CSI-2 相同)
┌─────────┬──────────┬──────────────┬─────────┬────────┐ │ SoT │ Packet │ Payload │ EoT │ ECC │ │ (同步头) │ Header │ (0~16383B) │ (结束) │ (1B) │ │ │ (4B) │ │ │ │ └─────────┴──────────┴──────────────┴─────────┴────────┘
- 包头格式与 CSI-2 完全一致(DI + VC + WC + ECC)
- 多了一个显式的ECC(Error Correction Code)在包尾
3.4 DSI 的典型拓扑
SoC (i.MX8M) ILI9881C LCD Panel ┌──────────────────┐ ┌──────────────────┐ │ Display │ DSI │ DSI Slave │ │ Controller ─────│────────│ (Peripheral) │ │ │ 4-lane │ │ │ MIPI DSI Host ──│────────│ → Column Driver │ │ Controller │ │ → Row Driver │ │ │ │ → GRAM │ │ MIPI D-PHY ─────│────────│ → MIPI D-PHY │ └──────────────────┘ └──────────────────┘ │ ├── TE (GPIO,面板撕裂信号,Command Mode 用) ├── RESET (GPIO,面板复位) ├── BACKLIGHT (PWM,背光控制) └── VCC / VCI (电源)
3.5 设备树示例
&mipi_dsi { status = "okay"; #address-cells = <1>; #size-cells = <0>; panel: panel@0 { compatible = "ilitek,ili9881c"; reg = <0>; reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>; backlight = <&backlight>; power-supply = <®_panel>; port { panel_ep: endpoint { remote-endpoint = <&dsi_out>; }; }; }; ports { port@1 { reg = <1>; dsi_out: endpoint { remote-endpoint = <&panel_ep>; >四、CSI、DSI、D-PHY 三者关系4.1 协议栈视角
最清晰的理解方式是把它们放进OSI 式分层模型:
┌─────────────────────────────────────────────┐ │ │ │ 应用层 CSI-2 协议 DSI 协议 │ │ (数据格式) RAW/YUV/RGB RGB/DCS │ │ │ ├─────────────────────────────────────────────┤ │ │ │ 链路层 包 / 虚拟通道 / 帧同步 │ │ (传输控制) CSI-2 Link DSI Link │ │ │ ├─────────────────────────────────────────────┤ │ │ │ 物理层 MIPI D-PHY(或 C-PHY) │ │ (电气信号) HS/LP 模式 / Lane 管理 │ │ │ └─────────────────────────────────────────────┘
4.2 一句话总结
概念 一句话 类比 D-PHY 物理传输通道——电信号怎么在线缆/PCB 走线上跑 “铁轨和枕木” CSI-2 摄像头数据的打包和传输协议 “铁路上跑的货运列车”(Sensor → SoC) DSI 显示数据的打包和传输协议 “铁路上跑的客运列车”(SoC → Panel)
CSI 和 DSI 是兄弟——共用同一套物理层(D-PHY),但方向相反、上层协议不同。
4.3 核心差异对比
维度 CSI-2 DSI 数据方向 Sensor→SoC(单向) SoC→Panel(单向为主,可 BTA) 数据内容 原始图像数据(RAW / YUV / RGB) 已渲染的像素数据(RGB) 控制通道 独立的 I²C(配置 Sensor 寄存器) 集成在 DSI 协议内(DCS 命令) 时钟源 Sensor 发出(或 SoC 发出 MCLK,Sensor 回送 DDR clk) SoC 发出 典型 lane 数 2 ~ 4 lane 4 lane(高清屏) 低功耗需求 中等(间歇工作) 较复杂(Command Mode 需保持面板刷新) 传输特性 连续流式(一帧接一帧) Video Mode(连续)或 Command Mode(按需) 内核子系统 V4L2+ PHY + I²C DRM+ PHY + DCS
4.4 SoC 内部数据流示意
┌──────────────────────────────────────────────────────┐ │ SoC │ │ │ │ ┌──────────┐ ┌──────────┐ │ │ │ Camera │ CSI-2 RX ──→ ISP → Display │ │ │ │ Sensor │ (D-PHY) │ Ctrlr │ DSI TX│ │ │ │ │ │ (D-PHY)│ │ └──────────┘ └────┬─────┘ │ │ │ │ │ │ ┌────┴─────┐ ┌────┴─────┐ │ │ │ D-PHY RX │ │ D-PHY TX │ │ │ │ (输入) │ │ (输出) │ │ │ └──────────┘ └──────────┘ │ │ │ └──────────────────────────────────────────────────────┘ ▲ │ │ 接收图像数据 │ 发送显示数据 │ ▼ ┌─────────┐ ┌─────────┐ │ CMOS │ │ LCD │ │ Sensor │ │ Panel │ └─────────┘ └─────────┘
五、C-PHY — 下一代物理层(进阶可选读)
5.1 与 D-PHY 的核心差异
D-PHY C-PHY 信号线 2 线差分(1 对 = 1 lane) 3 线(1 组 trio = 1 lane) 编码方式 传统的 DDR 源同步时钟 无独立时钟线,时钟嵌入数据信号中(3-phase 编码) 每 lane 带宽 ~4.5 Gbps(v2.0) ~5.7 Gsps × 2.28 bits/symbol ≈13 Gbps(等效带宽更高) 时钟 lane 必需独立时钟 lane 无需时钟 lane(时钟从 3-phase 编码恢复,CDR) 引脚数 2×N + 2(N data + 1 clock) 3×N(N trios,无独立时钟) 功耗 / 引脚效率 较低 更高(每引脚带宽约 2×) 应用 现有主流设备 高分辨率 Sensor(48MP+)、8K 显示
5.2 选择策略
低~中分辨率 高分辨率 超高分辨率 (1080p, <20MP) (4K, 20~48MP) (8K, 48MP+) │ │ │ ▼ ▼ ▼ D-PHY D-PHY C-PHY 2~4 lane 4~8 lane 3 trio (9 线 = 6 线 D-PHY 的带宽)
注意:CSI-2 和 DSI 都可以 over C-PHY。CSI-2 v4.0+ 和 DSI v1.3+ 支持 C-PHY,但需传感器或面板也支持。
六、内核驱动开发中的常见问题
6.1 D-PHY 初始化失败
[ 1.234] mipi_dphy: failed to initialize HS clock: -EIO
典型原因:
- SoC 的 D-PHY 供电未打开
assigned-clock-rates设置的速率超出了 D-PHY 范围- Lane 极性反转(
lane-polarities)未正确配置 - 硬件 Layout 阻抗不匹配导致信号质量差(需要示波器调试)
6.2 CSI 无法出图
排查清单(由底层往上):
□ D-PHY 初始化成功?(dmesg | grep dphy) □ Sensor 能通过 I²C 读到 ID?(i2cdetect / regmap_read Chip ID) □ MCLK 是否输出正确频率?(示波器量) □ RESET / PWDN 引脚时序是否正确?(逻辑分析仪抓) □ CSI 控制器 lane 配置与 sensor 端一致? □ V4L2 是否能打开设备节点?(v4l2-ctl --list-devices) □ media-ctl 拓扑是否配对?(media-ctl -p)
6.3 DSI 花屏/闪屏
常见原因:
- Timing 参数不匹配:HFP/HBP/VFP/VBP/HSW/VSW 必须与面板 Datasheet 严格一致
- 时钟精度不足:
pixel-clock或hs-clock偏差超过面板容忍度(通常 ±2%) - LP 模式下 HS 唤醒时序不对:面板进入 ULPS 后无法被正常唤醒
- TE 信号未使用但面板工作在 Command Mode:需补 TE GPIO 或切换为 Video Mode
- 电源上电时序:部分面板有严格的上电时序(VCC → VCI → RST → MIPI 信号),违反则概率性白屏
七、总结
MIPI 协议族 │ ┌─────────────┼─────────────┐ │ │ │ CSI-2 DSI (CSI-3 / DSI-2 ...) (摄像头协议) (显示协议) │ │ └──────┬──────┘ │ 共用物理层 ┌──────┴──────┐ │ │ D-PHY C-PHY (主流, 差分) (新一代, 3-phase)
- D-PHY:决定"信号怎么传"——电气层、时序、HS/LP 模式切换
- CSI:决定"摄像头数据怎么打包"——RAW 数据、虚拟通道、帧同步
- DSI:决定"显示数据怎么打包"——RGB 数据、Video/Command Mode、DCS 命令
三者是分层解耦的设计。同一个 SoC 的 D-PHY IP 可以被 CSI 控制器和 DSI 控制器复用(不同实例),但上层协议完全不同——一个对接 V4L2 框架,一个对接 DRM 框架。
编写日期: 2026-07-04 |适用范围: MIPI CSI-2 v1.0 ~ v4.0, DSI v1.0 ~ v1.3, D-PHY v1.0 ~ v2.5