2. MIPI CSI-2 协议基础

2.1 MIPI 联盟简介

MIPI(Mobile Industry Processor Interface,移动行业处理器接口)联盟成立于 2003 年,是一个全球性的开放标准制定组织,旨在为移动和嵌入式设备定义硬件与软件接口规范。其成员涵盖全球主要的 SoC 厂商、传感器供应商、IP 授权商以及设备制造商。

MIPI 联盟制定的接口标准覆盖了移动设备内部几乎所有关键互联场景:

接口标准 应用场景 典型速率
CSI-2 (Camera Serial Interface 2) 摄像头传感器 → 应用处理器 最高 4.5 Gbps / lane (D-PHY v2.5)
DSI-2 (Display Serial Interface 2) 应用处理器 → 显示面板 最高 4.5 Gbps / lane (D-PHY v2.5)
I3C (Improved Inter-Integrated Circuit) 传感器/外设控制总线 最高 12.5 MHz (SDR) / 25 MHz (HDR)
RFFE (RF Front-End Control) 射频前端器件控制 最高 52 MHz
关键认知: 在 RK 平台 Sensor 驱动开发中,CSI-2 是摄像头数据进入 SoC 的唯一高速串行通道。理解 CSI-2 协议栈是正确配置 RK ISP(图像信号处理器)和 VICAP(视频捕获)模块的前提。

2.2 CSI-2 分层架构

MIPI CSI-2 采用清晰的分层设计,从物理层到应用层共分为三个主要层次:PHY 层、LLP 层(Low-Level Protocol,底层协议层)和 Pixel 层(像素/字节到像素转换层)。

MIPI CSI-2 分层架构 Pixel / Byte-to-Pixel 层(应用层) 数据格式:RAW8/10/12/14、YUV422、RGB888、JPEG 功能:像素重组、数据格式解析、帧/行同步 LLP 层(底层协议层) 协议单元:长包(Long Packet)、短包(Short Packet) 功能:ECC 校验、CRC 校验、虚拟通道(VC)复用 PHY 层(物理层) 物理标准:D-PHY / C-PHY 功能:串行/解串、时钟恢复、差分信号驱动 数据流方向:Sensor → PHY 串化 → LLP 组包 → Pixel 层解析 → ISP

2.2.1 PHY 层(物理层)

PHY 层定义了 CSI-2 的电气特性和物理连接方式。MIPI 联盟主要定义了两种 PHY 标准:

  • D-PHY:最广泛使用的 PHY 标准,采用源同步差分时钟 + 差分数据 lane 架构。每个 lane 包含一对差分线(Dp/Dn),时钟 lane 独立于数据 lane。RK 平台 Sensor 接口几乎全部采用 D-PHY。
  • C-PHY:较新的 PHY 标准,使用三线(Triplet)传输,无需独立时钟 lane,通过 3 条线的电平组合编码数据和时钟。带宽密度更高,但兼容性不如 D-PHY。
RK 平台实战要点: RK3588 / RK3568 等主流芯片的 MIPI CSI 接口同时支持 D-PHY 和 C-PHY,但绝大多数 Sensor 模组使用 D-PHY。在设备树中通过 phy-mode 属性指定,例如 phy-mode = "mipi-dphy"。

2.2.2 LLP 层(底层协议层)

LLP 层负责将 PHY 层接收到的串行比特流解析为协议数据单元(PDU)。LLP 层定义了两种基本包类型:

包类型 数据标识符(DI) 结构 用途
长包(Long Packet) 0x00 ~ 0x3F PHI + DI + WC + Data + ECC + CRC 传输像素数据、嵌入式数据
短包(Short Packet) 0x40 ~ 0x7F PHI + DI + Data + ECC 帧同步(FS/FE)、行同步(LS/LE)

LLP 层的关键机制包括:

  • 虚拟通道(Virtual Channel, VC):通过 2-bit VC ID 支持最多 4 个独立数据流在同一物理链路上复用。在 RK 平台中,双摄或多摄场景下常使用 VC 区分不同 Sensor 的数据。
  • ECC(Error Correction Code):对包头的 16-bit 数据进行单比特纠错和双比特检错,确保控制信息的可靠性。
  • CRC(Cyclic Redundancy Check):对长包的数据负载进行校验,保证像素数据的完整性。
LLP 长包(Long Packet)结构 PHI 8-bit DI 8-bit WC 16-bit Data Payload 0 ~ 65535 字节 ECC 8-bit CRC 16-bit PHI: 包头部标识 | DI: 数据标识符(含 VC + DT) | WC: 字计数(数据负载长度) ECC: 纠错码(覆盖 PHI + DI + WC) | CRC: 循环冗余校验(覆盖 Data Payload)

2.2.3 Pixel 层(字节到像素转换层)

Pixel 层位于 CSI-2 协议栈的最上层,负责将 LLP 层解析出的字节流重新组织为应用层可识别的像素格式。该层的主要职责包括:

  • 数据格式识别:根据 LLP 包头中的 Data Type(DT)字段判断当前数据流是 RAW、YUV 还是 JPEG 等格式。
  • 像素重组:将串行字节按像素位宽重新排列。例如 RAW10 格式需要将 4 个像素的 40-bit 数据打包为 5 个字节。
  • 帧/行同步:识别短包中的帧起始(Frame Start, FS)、帧结束(Frame End, FE)、行起始(Line Start, LS)和行结束(Line End, LE)信号,构建完整的帧结构。
常见陷阱: 在 RK 平台驱动开发中,Pixel 层的配置错误是导致图像花屏、错位或颜色异常的最常见原因。务必确认 Sensor 输出的 Data Type 与 RK ISP 接收端配置的格式完全一致。例如 Sensor 输出 RAW10(DT=0x2B),但 ISP 配置为 RAW8(DT=0x2A),则每个像素会丢失 2-bit 数据。

2.3 数据传输模式:HS 与 LP

MIPI D-PHY 定义了两种数据传输模式,分别用于高速数据传输和低功耗控制:

特性 HS(High Speed,高速模式) LP(Low Power,低功耗模式)
信号电平 差分信号(200 mV 摆幅) 单端信号(1.2V CMOS 电平)
传输速率 80 Mbps ~ 4.5 Gbps / lane ≤ 10 Mbps
功耗 高(约 2.5 mW / Gbps / lane) 极低(约 0.1 mW)
传输内容 像素数据、嵌入式数据 控制命令、总线周转(BTA)
时钟状态 时钟 lane 持续翻转 时钟 lane 停止翻转(静态)

HS 和 LP 模式之间的切换由 PHY 层的 LPS(Low-Power State) 和 HS 序列 控制。典型的传输序列如下:

  1. LP → HS 准备:数据 lane 从 LP-11 状态进入 LP-01 → LP-00 序列,标记 HS 传输即将开始。
  2. HS 同步序列:发送 00011101 同步码,接收端 PLL 锁定。
  3. HS 数据传输:以差分信号传输 LLP 包数据,时钟 lane 持续提供 2 倍于数据速率的时钟。
  4. HS 结束 → LP:发送 LP-00 → LP-11 序列,回到低功耗空闲状态。
D-PHY 数据 Lane 状态切换序列 LP-11 (Idle) LP-01 LP-00 HS Sync (00011101) HS Data HS 传输结束后,数据 lane 回到 LP-11 状态,时钟 lane 停止翻转,进入低功耗模式 LP 模式下可通过 LP-00 → LP-10 → LP-00 序列实现总线周转(BTA),允许接收端发送数据 RK 平台中,LP 模式 用于 Sensor 寄存器配置(通过 I2C/SPI),HS 模式 用于图像数据传输
RK 平台调试技巧: 当遇到 Sensor 无法出图或图像不稳定时,首先检查 PHY 层是否成功进入 HS 模式。在 RK 内核中,可以通过 cat /sys/kernel/debug/mipi_dphy/status 查看 PHY 的锁定状态和当前速率。如果 PHY 状态显示 "HS-Idle" 而非 "HS-Burst",说明 Sensor 未正确启动 HS 传输。

2.4 本章小结