1. MIPI CSI-2 协议基础:物理层、协议层、应用层架构与 D-PHY/C-PHY 电气特性

MIPI CSI-2(Camera Serial Interface 2)是移动与嵌入式领域最广泛使用的摄像头串行接口标准。理解其分层架构与物理层电气特性,是进行骁龙平台驱动移植与信号调试的前提。本章从协议栈分层模型出发,深入解析 D-PHY 与 C-PHY 的电气特性差异。

1.1 CSI-2 协议栈分层模型

CSI-2 采用经典的三层架构:应用层(Application Layer)、协议层(Protocol Layer) 与 物理层(Physical Layer)。各层职责清晰,层间通过标准接口交互。

关键概念: CSI-2 的分层设计使得上层协议与底层物理传输解耦。驱动开发者在移植时,通常只需关注协议层的包格式与应用层的帧结构,物理层配置则由硬件抽象层(HAL)或 PHY 驱动处理。
调试提示: 在骁龙平台上,物理层配置通常位于 dtsi 设备树文件中,通过 phy-supply、clocks 与 mipi-csi-phy 节点控制。协议层解析则由 msm_camera 驱动框架中的 csid 模块完成。
CSI-2 协议栈三层架构 应用层(Application Layer) 像素格式封装 · 帧/行/数据包 · 数据类型(RAW10/YUV/JPEG) 协议层(Protocol Layer) 长包/短包 · ECC 校验 · CRC 校验 · 虚拟通道(VC) 物理层(Physical Layer) D-PHY / C-PHY · 差分信号 · 时钟/数据 Lane · 电气特性 传感器数据 包解析 串行传输 驱动关注点 像素格式配置 驱动关注点 VC 映射 · ECC 驱动关注点 时序 · 电压 · 预加重

1.2 物理层:D-PHY 与 C-PHY

MIPI 物理层定义了两种标准:D-PHY(经典差分信令)与 C-PHY(三线编码信令)。骁龙平台通常同时支持两者,但默认配置以 D-PHY 为主。下表对比了二者的核心电气特性。

特性参数 D-PHY(v1.2 / v2.0) C-PHY(v1.0 / v1.1)
信令方式 差分对(Dp/Dn),每 Lane 2 线 三线编码(A/B/C),每 Trio 3 线
每 Lane 数据率 最高 2.5 Gbps(v1.2)/ 4.5 Gbps(v2.0) 最高 2.5 Gsym/s(等效 ~5.7 Gbps/Trio)
时钟传输 独立差分时钟 Lane(CLKp/CLKn) 时钟嵌入数据线,无独立时钟 Lane
摆幅(Vcm) 200 mV(低功耗模式 1.2V) 200 mV(三线差分)
功耗效率 中等,需额外时钟 Lane 更优,减少线数降低动态功耗
抗干扰能力 强(差分共模抑制) 强(三线共模抑制 + 编码冗余)
骁龙平台支持 全系列(SM8250/8350/8450 等) SM8450 起部分支持
移植注意: 在骁龙平台切换 D-PHY 与 C-PHY 时,必须同步修改 csiphy 设备树节点中的 phy-type 属性(0 为 D-PHY,1 为 C-PHY),并确保 PHY 供电电压与参考时钟匹配。错误配置会导致链路无法训练(Link Training Failure)。

1.3 D-PHY 电气特性详解

D-PHY 采用差分信号对(Data Lane 与 Clock Lane),支持两种工作模式:高速模式(HS) 与 低功耗模式(LP)。HS 模式用于数据传输,LP 模式用于控制与总线周转(BTA)。

1.3.1 高速模式(HS)电气参数

  • 差分摆幅(Vod): 140 mV ~ 270 mV(典型 200 mV)
  • 共模电压(Vcm): 150 mV ~ 250 mV
  • 上升/下降时间(tr/tf): 150 ps ~ 350 ps(取决于数据率)
  • 端接电阻: 100 Ω(差分)
  • 数据率范围: 80 Mbps ~ 2.5 Gbps(v1.2)

1.3.2 低功耗模式(LP)电气参数

  • 逻辑高电平(VIH): 1.1 V ~ 1.3 V
  • 逻辑低电平(VIL): 0 V ~ 0.3 V
  • 信号摆率: 较慢,约 5 ns ~ 20 ns
  • 用途: 总线初始化、电源状态切换、Escape 模式
D-PHY 差分信号 HS 模式眼图示意 Vod 高(~270 mV) Vod 低(~140 mV) Vcm(~200 mV) UI(单位间隔) HS 模式 差分眼图

1.4 C-PHY 电气特性详解

C-PHY 使用三线(A/B/C)编码,每 Trio 可传输 2.28 比特/符号(16/7 编码)。其核心优势在于无需独立时钟 Lane,且每线对地摆幅更低,有助于降低 EMI。

1.4.1 C-PHY 关键电气参数

  • 三线差分摆幅: 140 mV ~ 270 mV(与 D-PHY HS 类似)
  • 符号率(Symbol Rate): 最高 2.5 Gsym/s(v1.0)
  • 等效数据率: 每 Trio 约 5.7 Gbps(2.5 Gsym/s × 2.28 bit/sym)
  • 时钟恢复: 基于三线状态机(3 线 6 状态)嵌入时钟
  • 端接: 每线对地 50 Ω(三线星形端接)
信号完整性要点: C-PHY 对线间时滞(Skew)更敏感,因为三线必须同时跳变才能正确解码。在 PCB 布局时,A/B/C 三线等长误差应控制在 ±5 ps 以内,否则会导致符号错误(Symbol Error)。骁龙平台 C-PHY 调试时,建议使用 csi_phy_timing 工具进行眼图扫描。

1.5 协议层:包格式与虚拟通道

协议层负责将应用层数据封装为 长包(Long Packet) 与 短包(Short Packet)。长包包含像素数据,短包用于帧同步与行同步。

1.5.1 长包结构

字段 长度(字节) 说明
数据标识符(DI) 1 虚拟通道 ID(VC[1:0]) + 数据类型(DT[5:0])
字计数(WC) 2 有效数据字节数(16 位,小端序)
ECC 1 对 DI + WC 的 6 位纠错码
有效数据 WC 像素数据(RAW8/10/12、YUV422、JPEG 等)
CRC 2 对有效数据的 16 位循环冗余校验

1.5.2 短包结构

短包仅包含 DI、ECC 与 2 字节数据字段(无 WC 与 CRC),用于帧开始(FS)、帧结束(FE)、行开始(LS)与行结束(LE)同步。

// 短包示例:帧开始(Frame Start)
// DI = 0x00(VC=0, DT=0x00 表示 FS)
// ECC = 0x1F(根据 DI + Data 计算)
// Data = 0x0001(帧序号)
//
// 物理层发送序列:
// LP->HS 进入高速模式
// 000000 000000 011111 00000000 00000001
// ^DI    ^ECC   ^Data (2 bytes)

1.6 应用层:数据类型与像素格式

应用层定义数据类型(DT)与像素格式映射。CSI-2 标准预定义了 64 种数据类型(DT 0x00 ~ 0x3F),常见格式如下:

数据类型(DT) 像素格式 每像素位数 典型应用
0x2A RAW8 8 低端传感器、快速预览
0x2B RAW10 10 主流手机摄像头(IMX586/IMX766)
0x2C RAW12 12 高动态范围(HDR)传感器
0x1E YUV422 8-bit 16 视频流、ISP 输入
0x1F YUV420 8-bit 12 视频编码(H.264/H.265)
0x37 JPEG 可变 静态图像压缩输出
驱动移植要点: 在骁龙平台 cam_sensor 驱动中,数据类型通过 mipi_csi2_dt 枚举定义。若传感器输出 RAW10,但驱动配置为 RAW8,会导致 ISP 解析错误,表现为图像偏色或条纹。务必核对传感器数据手册中的 DT 值。

1.7 本章小结

  • CSI-2 协议栈分为应用层、协议层与物理层,各层职责独立,驱动移植需分层验证。
  • D-PHY 使用差分对 + 独立时钟,HS 模式摆幅 200 mV,LP 模式 1.2V;C-PHY 使用三线编码,无需时钟 Lane,等效带宽更高。
  • 协议层长包包含 DI、WC、ECC、数据与 CRC;短包用于帧/行同步。
  • 应用层数据类型(DT)决定像素格式,RAW10(0x2B)是骁龙平台最常用的传感器输出格式。
  • 物理层电气特性直接影响信号完整性,眼图测试与端接匹配是调试关键。