4. CSI-2 协议层架构:分层模型与数据包格式

MIPI CSI-2 协议采用清晰的分层架构设计,将物理传输、通道管理、底层协议与像素处理解耦。理解每一层的职责与数据包格式,是进行链路调试与信号完整性分析的基础。本章将深入剖析 CSI-2 的五层模型及长短包结构。

4.1 分层模型(PHY / Lane Management / Low-Level Protocol / Pixel / Byte Unpack)

CSI-2 协议栈从下至上分为五层,每一层对上层提供透明服务,对下层封装具体实现。下图展示了完整的层次结构及其数据流方向。

CSI-2 协议层分层模型 CSI-2 协议层分层模型 数据流方向(从上至下:应用 → 物理) 应用层(图像传感器 / ISP) 像素/字节解包层 (Pixel/Byte Unpack) RAW8/10/12/16, YUV422, RGB888 → 字节对齐 底层协议层 (Low-Level Protocol) 数据标识符 (DI) / 字计数 (WC) / ECC / 校验和 通道管理层 (Lane Management) 数据分发 / 通道合并 / 通道间偏斜补偿 物理层 (PHY Layer - D-PHY / C-PHY) 差分信号 / 时钟 / 电气特性 / 线速率 Lane 0 Lane 1 Lane 2 (最多 4 Lane) 各层关键职责 • 解包层:像素格式转换 • 协议层:包封装/ECC • 通道层:多通道路由 • PHY层:串行/解串 调试关注点: 1. 解包层:格式匹配 2. 协议层:ECC错误 3. 通道层:偏斜 4. PHY层:眼图/抖动

4.1.1 物理层 (PHY Layer)

物理层定义了传输介质、电气特性、时钟机制与线速率。CSI-2 支持 D-PHY 和 C-PHY 两种物理层标准。D-PHY 使用源同步时钟,每个数据通道为一对差分线;C-PHY 则无专用时钟线,通过三线编码嵌入时钟。物理层负责将上层数据串行化,以高速差分信号在通道上传输。

4.1.2 通道管理层 (Lane Management)

通道管理层负责将底层协议层的数据包分发到多个物理通道上。主要功能包括:

  • 数据分发:将字节流按轮询方式分配到各通道。
  • 通道合并:接收端从多个通道收集数据,恢复原始字节顺序。
  • 偏斜补偿:处理通道间传播延迟差异,通过训练序列对齐数据。
调试要点: 通道偏斜是高速多通道链路中的常见问题。若图像出现水平条纹或错位,应优先检查 Lane Management 层的偏斜补偿是否生效,以及各通道的延迟差是否在接收端容限内。

4.1.3 底层协议层 (Low-Level Protocol)

底层协议层是 CSI-2 的核心,负责数据包的封装与解析。它定义了数据标识符(DI)、字计数(WC)、ECC 和校验和字段。该层确保接收端能正确识别包类型、长度和完整性。

4.1.4 像素/字节解包层 (Pixel/Byte Unpack)

该层将底层协议层输出的字节流,根据图像格式(如 RAW10、RAW12、YUV422、RGB888)解包为像素数据。不同格式的像素位宽不同,解包规则也不同。例如,RAW10 格式每 4 个像素占用 5 个字节,解包层需要按特定映射关系提取每个像素的 10 位数据。

常见像素格式与字节解包关系
像素格式每像素位数字节对齐方式典型应用
RAW881 像素 = 1 字节低端传感器
RAW10104 像素 = 5 字节主流手机传感器
RAW12122 像素 = 3 字节工业相机
YUV422 8-bit161 像素 = 2 字节视频传输
RGB888241 像素 = 3 字节显示处理

4.2 数据包格式:长包与短包

CSI-2 底层协议层定义了两种基本数据包类型:短包 (Short Packet) 和 长包 (Long Packet)。所有传输均以包为单位,包与包之间通过状态切换(HS 模式)分隔。

4.2.1 短包 (Short Packet)

短包用于传输控制信息,如帧起始(FS)、帧结束(FE)、行起始(LS)、行结束(LE)以及事件触发。短包固定为 4 字节,不携带图像数据。

短包格式:

+--------+--------+--------+--------+
|  DI    |  Data  |  Data  |  ECC   |
| (1 B)  |  (2 B) |  (2 B) | (1 B)  |
+--------+--------+--------+--------+
- DI (Data Identifier): 包类型 + 虚拟通道
- Data Field (16-bit): 帧号、行号或事件码
- ECC (Error Correction Code): 保护前 3 字节
短包 DI 编码与类型
DI[7:6]包类型Data Field 含义
00帧起始 (FS)帧号
01帧结束 (FE)帧号
10行起始 (LS)行号
11行结束 (LE)行号

4.2.2 长包 (Long Packet)

长包用于传输图像数据负载。它由包头、数据负载和包尾三部分组成。包头包含数据标识符和字计数;数据负载为字节流;包尾为 16 位校验和。

长包格式:

+--------+--------+--------+--------+------------------+--------+--------+
|  DI    |  WC    |  WC    |  ECC   |   Data Payload   |  CS    |  CS    |
| (1 B)  | (1 B)  | (1 B)  | (1 B)  |   (WC 字节)      | (1 B)  | (1 B)  |
+--------+--------+--------+--------+------------------+--------+--------+
- DI: 虚拟通道 + 数据类型(如 RAW10、YUV422)
- WC (Word Count): 16 位,表示数据负载的字节数
- ECC: 保护包头 4 字节
- Data Payload: 图像数据,长度由 WC 指定
- CS (Checksum): 16 位 CRC,保护数据负载
CSI-2 长包与短包结构对比 长包 (Long Packet) 与 短包 (Short Packet) 结构 短包 (4 字节): DI Data (16-bit) ECC 用途:帧起始/结束、行起始/结束、事件 长包 (可变长度): DI WC (16-bit) ECC Data Payload (WC 字节) CS (16-bit) 包头 (4 字节) — 包含虚拟通道、数据类型、数据长度、ECC 数据负载 — 图像数据,长度由 WC 指定,最大 65535 字节 包尾 (2 字节) — 16 位 CRC 校验和,保护数据负载完整性 关键区别 • 短包:无数据负载 • 长包:有数据负载 + CRC • 短包 ECC 保护 3 字节 • 长包 ECC 保护 4 字节包头 • 长包 CRC 保护整个负载 • 短包用于帧/行同步

4.2.3 虚拟通道 (Virtual Channel)

CSI-2 支持最多 4 个虚拟通道(VC0 ~ VC3),通过 DI 字节的高 2 位标识。虚拟通道允许在同一物理链路上复用多个独立的图像数据流,例如同时传输预览流和拍照流。

实际案例: 某双摄手机使用 CSI-2 单链路 4 Lane 传输主摄和广角数据。主摄分配 VC0,广角分配 VC1。接收端通过 DI 中的 VC 字段区分数据流,实现分时传输。调试时若发现图像数据交错,应检查发送端 VC 配置是否与接收端解复用逻辑一致。

4.3 分层模型与包格式的调试关联

在链路调试过程中,不同层次的错误会呈现不同的现象。下表总结了常见问题与对应层次:

链路调试问题与协议层关联
现象可能原因涉及协议层
无图像输出PHY 未锁定、时钟丢失物理层
图像错位/撕裂通道偏斜、Lane 映射错误通道管理层
ECC 错误计数增加信号完整性差、包头发送错误底层协议层
颜色异常/像素错乱像素格式解包错误、位宽不匹配像素/字节解包层
帧同步丢失短包 FS/FE 丢失或损坏底层协议层
注意: 在调试 CSI-2 链路时,建议从物理层开始逐层向上排查。先确认 PHY 是否进入 HS 模式、时钟是否稳定、眼图是否合格;再检查通道管理层的数据分发与偏斜补偿;最后分析底层协议层的包结构与 ECC/CRC 错误。跳过物理层直接分析协议层,往往会导致误判。