2. Sensor 硬件接口:MIPI CSI-2 协议基础、D-PHY 电气特性、Lane 配置与时钟恢复机制
在瑞芯微 RK 平台 Sensor 驱动开发中,MIPI CSI-2 是连接图像传感器与 SoC 的最主流物理层与协议层标准。本章深入解析 MIPI CSI-2 协议栈、D-PHY 电气特性、Lane 动态配置以及时钟数据恢复(CDR)机制,为后续 RAW 数据采集性能调优奠定硬件基础。
2.1 MIPI CSI-2 协议分层架构
MIPI CSI-2 采用分层设计,从物理层到应用层共分为五层。每一层职责清晰,便于跨平台兼容与驱动抽象。
| 层级 | 名称 | 功能描述 | RK 驱动关注点 |
|---|---|---|---|
| Layer 4 | 应用层 | 定义像素格式(RAW8/10/12/14)、帧结构、元数据 | V4L2 像素格式映射、CSI 接收器配置 |
| Layer 3 | 协议层 | 长包/短包格式、ECC 校验、CRC 校验 | 包头解析、错误统计、重传机制 |
| Layer 2 | 链路层 | Lane 合并/拆分、字对齐、低功耗模式控制 | D-PHY 初始化序列、LP/HS 模式切换 |
| Layer 1 | 物理层 | D-PHY 电气特性、时钟 Lane、数据 Lane | 电压摆幅、预加重、阻抗匹配 |
| Layer 0 | 互连层 | PCB 走线、连接器、ESD 防护 | 信号完整性、眼图测试 |
关键概念: CSI-2 协议层使用“长包”传输像素数据,使用“短包”传输帧同步、行同步等控制信息。短包只有 32 位数据头,长包包含 32 位头 + 可变长度数据 + 16 位 CRC。
2.2 D-PHY 电气特性与信号完整性
D-PHY 是 MIPI 联盟定义的物理层标准,采用差分信号传输,支持高速(HS)和低功耗(LP)两种模式。RK 平台 SoC 的 CSI 接口兼容 D-PHY v1.2/v2.0。
2.2.1 关键电气参数
| 参数 | HS 模式 | LP 模式 | RK 平台典型值 |
|---|---|---|---|
| 差分电压摆幅 | 200 mV (min) ~ 300 mV (typ) | 1.2 V (单端) | 200 mV (HS) / 1.2V (LP) |
| 共模电压 | 200 mV | 0 ~ 1.2 V | 200 mV (HS) |
| 数据传输速率 | 80 Mbps ~ 2.5 Gbps / Lane | ≤ 10 Mbps | 1.2 Gbps (RK3588) |
| 上升/下降时间 | ≤ 150 ps | ≤ 25 ns | 100 ps (HS) |
| 端接电阻 | 100 Ω (差分) | 高阻 | 100 Ω (内部端接) |
信号完整性警告: 在 RK 平台调试中,HS 模式下差分电压摆幅低于 150 mV 将导致眼图闭合,引发 CRC 错误或 Lane 失锁。务必使用示波器测量 Sensor 输出端与 SoC 接收端的眼图。
2.2.2 LP 与 HS 模式切换时序
D-PHY 在 LP 和 HS 模式之间切换时,需要遵循严格的时序序列。驱动初始化时必须正确实现以下状态机:
- Stop → HS 准备: LP-11 → LP-01 → LP-00 → HS-0 (桥接) → HS 数据传输
- HS → Stop: HS 数据传输结束 → HS-0 → LP-00 → LP-10 → LP-11 (Stop)
- 时钟 Lane 持续运行: 时钟 Lane 在 HS 数据传输期间必须保持连续时钟,不可进入 LP 模式
2.3 Lane 配置与动态重配
MIPI CSI-2 支持 1/2/4 Lane 配置,RK 平台 SoC 最多支持 4 Lane 输入。Lane 数量的选择直接影响带宽上限和 PCB 布局复杂度。
2.3.1 Lane 带宽计算
总带宽计算公式:
总带宽 (Gbps) = Lane 速率 (Gbps) × Lane 数量 × (8 / 10) // 8b10b 编码开销
有效像素带宽 (MP/s) = 总带宽 (Gbps) / (像素位深 × 10^6)
示例:4 Lane @ 1.2 Gbps,RAW10 格式:
总带宽 = 1.2 × 4 × 0.8 = 3.84 Gbps
有效像素带宽 = 3.84 / (10 × 10^-6) = 384 MP/s
支持 4K@60fps (3840×2160×60 ≈ 498 MP/s) 需要 5.2 Gbps 总带宽 → 需提升 Lane 速率或增加 Lane
2.3.2 Lane 映射与重配流程
RK 平台通过 rockchip-csi2-dphy 驱动管理 Lane 映射。Sensor 端与 SoC 端的 Lane 顺序可以不同,驱动需在初始化时完成重映射。
| 步骤 | 操作 | 驱动接口 | 说明 |
|---|---|---|---|
| 1 | 解析设备树 Lane 映射 | of_property_read_u32_array |
读取 data-lanes 属性 |
| 2 | 配置 D-PHY PLL | phy_set_mode_ext |
设置 Lane 速率和参考时钟 |
| 3 | 设置 Lane 使能掩码 | phy_configure |
使能实际使用的 Lane |
| 4 | 启动时钟 Lane | phy_power_on |
时钟 Lane 先于数据 Lane 启动 |
| 5 | 启动数据 Lane | phy_power_on |
按映射顺序依次启动 |
调优建议: 在 RK3588 平台上,如果使用 4 Lane 配置,建议将 Lane 速率设置在 1.0 ~ 1.5 Gbps 之间。超过 1.5 Gbps 时,PCB 走线长度差必须控制在 ±5 mm 以内,否则会出现 Lane 间 skew 导致数据错位。
2.4 时钟恢复机制与 CDR
时钟数据恢复(CDR)是 MIPI CSI-2 接收端的核心模块。RK 平台 SoC 使用基于 PLL 的 CDR 电路,从数据 Lane 的跳变边沿中提取时钟信息,与时钟 Lane 的参考时钟进行相位对齐。
2.4.1 CDR 工作原理
CDR 电路包含三个关键子模块:
- 相位检测器(PD): 比较数据跳变沿与本地时钟相位,输出超前/滞后信号
- 环路滤波器(LF): 低通滤波,抑制高频抖动,输出控制电压
- 压控振荡器(VCO): 根据控制电压调整输出时钟频率
CDR 锁定过程分为两个阶段:
- 频率捕获: VCO 频率被牵引至接近数据速率,误差 ≤ ±5%
- 相位锁定: 相位检测器将时钟边沿对齐到数据眼图中心,抖动 ≤ ±0.1 UI
2.4.2 RK 平台 CDR 调试参数
| 参数 | 寄存器/接口 | 典型值 | 调优方向 |
|---|---|---|---|
| CDR 带宽 | GRF_CSI2PHY_CON0[7:4] |
0x5 (约 5 MHz) | 带宽过小 → 锁定慢;过大 → 抖动传递 |
| VCO 增益 | GRF_CSI2PHY_CON1[3:0] |
0x8 | 增益过高 → 振荡;过低 → 无法锁定 |
| 锁定检测阈值 | GRF_CSI2PHY_STATUS[1:0] |
0x3 (锁定) | 读取状态寄存器确认锁定 |
| 眼图采样位置 | GRF_CSI2PHY_CON2[5:0] |
0x20 (中心采样) | 根据眼图测试结果微调 |
调试技巧: 在 RK 平台中,如果遇到“CRC 错误持续增长”或“帧丢失”,首先检查 CDR 锁定状态寄存器。若 CDR 未锁定,优先调整 VCO 增益和 CDR 带宽,而非盲目增加 Lane 速率。
2.5 常见硬件调试问题与对策
| 现象 | 可能原因 | 排查方法 | 解决方案 |
|---|---|---|---|
| CDR 无法锁定 | VCO 增益过低 / 数据跳变不足 | 读取锁定状态寄存器 | 增大 VCO 增益;检查 Sensor 是否输出测试图案 |
| CRC 错误持续增长 | 信号完整性差 / Lane 间 skew 过大 | 示波器测量眼图 | 调整 PCB 走线长度差;降低 Lane 速率 |
| 帧丢失或花屏 | Lane 映射错误 / 时钟 Lane 失锁 | 检查设备树 data-lanes 属性 | 确认 Lane 顺序与硬件一致;重新初始化 D-PHY |