2. MIPI CSI-2 协议基础:物理层、协议层与数据格式
MIPI CSI-2(Camera Serial Interface 2)是移动和嵌入式领域最主流的摄像头串行接口标准。本章深入剖析其三层架构:物理层(D-PHY / C-PHY)、协议层(LLP、Packet)以及常见的数据格式(RAW、YUV、JPEG)。理解这些基础是后续 Sensor 初始化与调试的必备前提。
2.1 物理层:D-PHY 与 C-PHY
物理层定义了 Camera Sensor 与 SoC 之间的电气连接、时钟同步和信号编码方式。CSI-2 支持两种物理层标准:D-PHY(主流)和 C-PHY(更高带宽)。
2.1.1 D-PHY 架构
D-PHY 使用差分信号对(Dp/Dn)传输数据,每个 Lane 包含一对差分线。典型配置为 1 个 Clock Lane + 1~4 个 Data Lane。
- Clock Lane: 提供 DDR(Double Data Rate)时钟,数据在时钟的上升沿和下降沿各采样一次。
- Data Lane: 传输串行化的像素数据或控制指令。
- 工作模式: High-Speed (HS) 模式(80 Mbps ~ 2.5 Gbps per Lane)和 Low-Power (LP) 模式(~10 Mbps,用于控制信号)。
- 电压摆幅: HS 模式下差分电压约 200 mV,LP 模式下单端电压 1.2V。
2.1.2 C-PHY 架构
C-PHY 使用 3 线(Triplet)代替差分对,每个 Lane 包含 3 根信号线(A、B、C)。通过 3 线的电压状态组合(共 7 种有效状态)在单个 Symbol 中传输 2.28 bits 数据,带宽密度更高。
| 特性 | D-PHY | C-PHY |
|---|---|---|
| 信号线 / Lane | 2 根(差分对) | 3 根(Triplet) |
| 每 Lane 峰值带宽 | 2.5 Gbps | ~5.7 Gbps(等效) |
| 时钟传输 | 独立 Clock Lane | 内嵌时钟(无独立 CLK) |
| 功耗 | 较低 | 略高(3 线同时翻转) |
| 应用场景 | 主流 Sensor(IMX/OV/AR 系列) | 高分辨率、高帧率(> 48MP) |
2.2 协议层:LLP 与 Packet 结构
协议层(Low-Level Protocol, LLP)负责将物理层传输的比特流组织成有意义的 Packet(数据包)。CSI-2 协议层定义了两种 Packet 类型:长包(Long Packet) 和 短包(Short Packet)。
2.2.1 短包(Short Packet)
短包用于传输帧同步、行同步等控制信息,不包含像素数据。长度为 4 字节(32 bits)。
短包结构(32 bits):
+--------+--------+--------+--------+
| Data | Word | ECC | VC + |
| ID | Count | | DT |
+--------+--------+--------+--------+
- Data ID (8 bits): 虚拟通道 (VC[1:0]) + 数据类型 (DT[5:0])
- Word Count (16 bits): 对于短包固定为 0x0000
- ECC (8 bits): 纠错码,保护前 24 bits
常见的短包类型:
- Frame Start (FS): 数据类型 0x00,标志一帧图像的开始。
- Frame End (FE): 数据类型 0x01,标志一帧图像的结束。
- Line Start (LS): 数据类型 0x02,标志一行的开始(可选)。
- Line End (LE): 数据类型 0x03,标志一行的结束(可选)。
2.2.2 长包(Long Packet)
长包用于传输实际的像素数据。结构包含包头(Packet Header)、数据负载(Payload)和包尾(Packet Footer)。
长包结构:
+----------------+------------------+------------------+----------------+
| Packet Header | Payload | Packet Footer | |
| (4 bytes) | (Word Count | (2 bytes CRC) | |
| | 字节数据) | | |
+----------------+------------------+------------------+----------------+
Packet Header (32 bits):
+--------+--------+--------+--------+
| Data | Word | ECC | VC + |
| ID | Count | | DT |
+--------+--------+--------+--------+
- Data ID: 同短包定义
- Word Count (16 bits): Payload 的字节数(0 ~ 65535)
- ECC (8 bits): 保护 Header 的前 24 bits
Packet Footer (16 bits):
+----------------+----------------+
| CRC (16 bits) | |
+----------------+----------------+
- CRC: 对 Payload 进行循环冗余校验
2.3 数据格式:RAW、YUV、JPEG
应用层定义了 Sensor 输出数据的格式。CSI-2 通过 数据类型(Data Type, DT) 字段标识当前长包中负载的格式。常见格式如下:
| 数据类型 (DT) | 格式名称 | 位深 / 描述 | 典型应用 |
|---|---|---|---|
| 0x2A | RAW8 | 8 bits / 像素,Bayer 模式 | 低端 Sensor、快速预览 |
| 0x2B | RAW10 | 10 bits / 像素,4 像素打包为 5 字节 | 主流手机 Sensor(IMX586 等) |
| 0x2C | RAW12 | 12 bits / 像素,2 像素打包为 3 字节 | 高动态范围(HDR)Sensor |
| 0x1E | YUV422 8-bit | YUV 4:2:2 采样,每个像素 16 bits | ISP 处理后输出、视频通话 |
| 0x1C | YUV420 8-bit | YUV 4:2:0 采样,节省带宽 | 视频编码(H.264/H.265) |
| 0x40 | JPEG | 压缩图像数据,可变长度 | 拍照、压缩输出 |
2.3.1 RAW 格式详解
RAW 格式直接输出 Sensor 像素阵列的原始值,未经过 ISP 处理。每个像素对应一个颜色通道(R/G/B),通过 Bayer 模式排列。
RAW10 打包示例(4 像素 -> 5 字节):
像素: P0[9:0] P1[9:0] P2[9:0] P3[9:0]
字节: [P0[9:2]] [P1[9:2]] [P2[9:2]] [P3[9:2]] [P3[1:0] P2[1:0] P1[1:0] P0[1:0]]
Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 (低 2 bits 拼接)
2.3.2 YUV 格式详解
YUV 格式将亮度(Y)与色度(UV)分离,便于压缩和显示。CSI-2 常用 YUV422 和 YUV420。
- YUV422: 每 2 个像素共享一组 UV,水平分辨率减半。每个像素 16 bits(Y8 + U8/V8 交替)。
- YUV420: 每 4 个像素(2x2 块)共享一组 UV,水平和垂直分辨率均减半。每个像素平均 12 bits。
2.3.3 JPEG 格式
部分 Sensor(如自带 JPEG 编码器的型号)可直接输出 JPEG 压缩数据。JPEG 在 CSI-2 中以长包形式传输,Word Count 表示压缩后的字节数。
2.4 本章小结
MIPI CSI-2 协议的分层设计使得物理传输、数据打包和格式解析解耦。调试时,应遵循“从下至上”的原则:
- 物理层: 确认 D-PHY/C-PHY 电压、时钟频率、Lane 数量与 Sensor 配置一致。
- 协议层: 使用逻辑分析仪捕获 Packet,检查 FS/FE 短包和长包 CRC 是否正常。
- 数据格式: 确认 DT 字段与 Sensor 输出格式匹配,ISP 端正确配置解包方式。