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 模块完成。
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 模式
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)是骁龙平台最常用的传感器输出格式。
- 物理层电气特性直接影响信号完整性,眼图测试与端接匹配是调试关键。