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 层(像素/字节到像素转换层)。
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):对长包的数据负载进行校验,保证像素数据的完整性。
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 序列 控制。典型的传输序列如下:
- LP → HS 准备:数据 lane 从 LP-11 状态进入 LP-01 → LP-00 序列,标记 HS 传输即将开始。
- HS 同步序列:发送 00011101 同步码,接收端 PLL 锁定。
- HS 数据传输:以差分信号传输 LLP 包数据,时钟 lane 持续提供 2 倍于数据速率的时钟。
- HS 结束 → LP:发送 LP-00 → LP-11 序列,回到低功耗空闲状态。
RK 平台调试技巧: 当遇到 Sensor 无法出图或图像不稳定时,首先检查 PHY 层是否成功进入 HS 模式。在 RK 内核中,可以通过
cat /sys/kernel/debug/mipi_dphy/status 查看 PHY 的锁定状态和当前速率。如果 PHY 状态显示 "HS-Idle" 而非 "HS-Burst",说明 Sensor 未正确启动 HS 传输。