2. 硬件基础:MIPI CSI-2 物理层与协议层简介、D-PHY 电气特性、RK3588/RK356x 的 CSI Host 接口特性
在嵌入式 Camera 驱动开发中,理解硬件接口是初始化 Sensor 的前提。本章聚焦于 MIPI CSI-2 标准的核心分层、D-PHY 电气特性以及瑞芯微 RK3588/RK356x 系列处理器的 CSI Host 接口设计。掌握这些基础,能帮助你在调试 MIPI 信号、配置 DTS 以及分析驱动时序时做到心中有数。
2.1 MIPI CSI-2 协议分层架构
MIPI CSI-2(Camera Serial Interface 2)采用分层设计,将物理传输、协议解析与应用控制分离。这种分层结构使得不同厂商的 Sensor 和 SoC 能够通过统一的标准互联。
核心分层(从底向上): 物理层 (D-PHY) → 协议层 (UniPro/CSI-2 Protocol) → 像素/字节打包层 (Pixel/Byte Packing) → 应用层 (Camera Control)。
下表总结了各层的主要职责与关键术语:
| 分层 | 主要职责 | 关键术语/概念 |
|---|---|---|
| 应用层 | 定义图像数据格式(RAW8/10/12、YUV、JPEG)及控制命令(CCI/I2C) | 帧格式、行有效、帧有效、曝光控制 |
| 像素/字节打包层 | 将像素数据打包成字节流,支持不同位宽对齐 | DT (Data Type)、像素打包模式 |
| 协议层 | 管理数据包的传输、错误检测、帧同步 | 长包 (Long Packet)、短包 (Short Packet)、ECC、CRC |
| 物理层 (D-PHY) | 提供高速串行差分信号传输、时钟恢复、电气特性 | HS (High-Speed) 模式、LP (Low-Power) 模式、Lane、Skew |
驱动开发提示: 在初始化 Sensor 时,驱动主要操作的是应用层(通过 I2C 配置寄存器)和物理层(通过 DTS 配置 D-PHY 参数,如电压摆幅、预加重)。协议层和打包层通常由 SoC 的 CSI Host 硬件自动处理,驱动只需关注帧格式与 DT 的匹配。
2.2 D-PHY 电气特性与信号模型
D-PHY 是 MIPI 联盟定义的物理层标准,专为 Camera 和 Display 应用设计。它使用差分信号对(D-P/N)进行高速数据传输,并支持两种工作模式:高速模式 (HS) 和 低功耗模式 (LP)。
2.2.1 关键电气参数
| 参数 | HS 模式典型值 | LP 模式典型值 | 说明 |
|---|---|---|---|
| 差分电压摆幅 | 200 mV (峰峰值) | 1.2 V (单端) | HS 使用低压差分信号,LP 使用单端 CMOS 电平 |
| 数据传输速率 | 80 Mbps ~ 2.5 Gbps / Lane | ≤ 10 Mbps | HS 用于图像数据流,LP 用于控制/状态信号 |
| 共模电压 | 200 mV | 0 V / 1.2 V | HS 模式下共模电平固定,LP 模式下为轨到轨 |
| 上升/下降时间 | ≤ 150 ps | ≤ 5 ns | HS 要求极快的边沿速率以降低 EMI |
| 端接电阻 | 100 Ω (差分) | 高阻 (无端接) | HS 模式下接收端需端接匹配 |
硬件设计避坑: 在 RK3588/RK356x 平台上,D-PHY 的 HS 模式端接电阻通常集成在 SoC 内部,但 PCB 走线仍需严格遵循差分 100Ω 阻抗控制。如果走线阻抗不匹配,会导致信号反射、眼图闭合,进而引发帧错位或数据 CRC 错误。
2.2.2 HS 与 LP 模式切换时序
D-PHY 的 Lane 状态机定义了 HS 与 LP 之间的切换序列。典型的切换过程包括:
- LP → HS 切换: 先进入 LP-11 状态(空闲),然后通过 LP-01 → LP-00 序列进入 HS 模式。
- HS 数据传输: 在 HS 模式下,时钟 Lane 提供 DDR 时钟,数据 Lane 在时钟的上升沿和下降沿各传输 1 bit。
- HS → LP 切换: 通过 LP-00 → LP-10 → LP-11 序列退出 HS 模式,回到空闲状态。
2.3 RK3588/RK356x CSI Host 接口特性
瑞芯微 RK3588 和 RK356x 系列处理器集成了高性能的 MIPI CSI Host 控制器,支持多路 Sensor 输入、多 Lane 配置以及丰富的接口复用。理解这些特性是正确配置 DTS 和编写驱动的基础。
2.3.1 接口数量与 Lane 配置
| 特性 | RK3588 | RK3568 / RK3566 |
|---|---|---|
| CSI Host 控制器数量 | 4 个 (CSI0 ~ CSI3) | 2 个 (CSI0, CSI1) |
| 每个控制器最大 Lane 数 | 4 Lane (支持 1x4, 2x2, 4x1 组合) | 4 Lane (支持 1x4, 2x2, 4x1 组合) |
| 总 Lane 数 | 16 Lane (4 × 4) | 8 Lane (2 × 4) |
| 支持 Sensor 数量 | 最多 8 路 (通过虚拟通道 VC 复用) | 最多 4 路 |
| 最高速率 / Lane | 2.5 Gbps | 1.5 Gbps |
| D-PHY 版本 | D-PHY v2.0 | D-PHY v1.2 |
多路复用场景: 在 RK3588 上,一个 CSI Host 控制器可以同时连接多个 Sensor,通过虚拟通道 (Virtual Channel, VC) 区分不同数据流。例如,CSI0 可以配置为 2 Lane 连接主摄 + 2 Lane 连接广角,通过 VC0 和 VC1 分别传输。
2.3.2 CSI Host 内部架构
RK3588/RK356x 的 CSI Host 内部包含以下关键模块:
- D-PHY 接收器: 负责差分信号接收、时钟恢复、串并转换。
- 协议解析器: 解析长包/短包、ECC 纠错、CRC 校验。
- 虚拟通道管理器: 根据 VC ID 将数据分发到不同的 DMA 通道。
- ISP 接口: 将解析后的图像数据直接送入 ISP 或内存。
2.3.3 DTS 配置示例
在 RK3588 的 DTS 中,CSI Host 的典型配置片段如下。注意 data-lanes 属性定义了物理 Lane 到逻辑 Lane 的映射关系。
// RK3588 DTS: CSI0 节点配置示例
csi0: csi@fdc00000 {
compatible = "rockchip,rk3588-csi2";
reg = <0x0 0xfdc00000 0x0 0x10000>;
interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru PCLK_CSI_HOST_0>,
<&cru SCLK_CSI_HOST_0>;
clock-names = "pclk", "sclk";
status = "disabled";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi_in_ucam0: endpoint@0 {
reg = <0>;
remote-endpoint = <&sensor_out>;
data-lanes = <1 2>; // 使用 Lane1 和 Lane2
clock-lanes = <0>; // 时钟 Lane 为 Lane0
bus-type = <4>; // MIPI CSI-2 D-PHY
};
};
};
};
Lane 映射规则:
data-lanes 中的数字是物理 Lane 编号(从 0 开始),顺序表示逻辑 Lane 顺序。例如 <1 2> 表示物理 Lane1 作为逻辑 Lane0,物理 Lane2 作为逻辑 Lane1。时钟 Lane 通常固定为 Lane0,但也可通过 clock-lanes 指定其他 Lane。
2.4 本章小结
- MIPI CSI-2 采用四层架构,驱动开发重点关注应用层(I2C 控制)和物理层(D-PHY 参数)。
- D-PHY 的 HS 模式使用低压差分信号,LP 模式用于控制;切换时序必须严格遵循 LP-11 → LP-01 → LP-00 → HS 序列。
- RK3588 提供 4 个 CSI Host 控制器,每个支持 4 Lane,总带宽可达 40 Gbps(16 Lane × 2.5 Gbps)。
- DTS 中
data-lanes和clock-lanes的配置直接决定硬件连接的正确性,是初始化流程的第一步。