2. RK平台MIPI D-PHY物理层详解
2.1 MIPI D-PHY物理层概述
MIPI D-PHY是MIPI CSI-2/DSI接口的物理层标准,负责在主机(Host)与外设(Peripheral)之间提供高速、低功耗的串行数据传输。在瑞芯微RK平台(如RK3588、RK3568、RV1126)中,D-PHY作为Camera Sensor与ISP之间的桥梁,其配置正确与否直接决定图像采集的稳定性与带宽上限。
关键概念: D-PHY并非独立的PHY芯片,而是集成在RK SoC内部的硬核IP(如Synopsys或Mixel D-PHY)。驱动开发者通过操作CRU(Clock & Reset Unit)和GRF(General Register Files)中的寄存器来配置PHY的工作模式、阻抗匹配与时钟频率。
2.2 D-PHY工作模式:HS与LP
D-PHY定义两种主要工作模式,用于平衡高速数据传输与低功耗控制:
| 模式 | 全称 | 电压摆幅 | 传输速率 | 典型用途 |
|---|---|---|---|---|
| HS (High-Speed) | 高速模式 | 差分信号,约200mV | 80 Mbps ~ 2.5 Gbps / Lane | 图像数据负载传输 |
| LP (Low-Power) | 低功耗模式 | 单端信号,1.2V | ~10 Mbps | 控制指令、总线初始化、Escape模式 |
- HS模式: 使用差分对(Dp/Dn)传输高速串行数据,时钟通道提供DDR(双沿)时钟参考。RK平台通过配置PHY的HS-TX阻抗(通常为100Ω差分)和摆率来优化信号完整性。
- LP模式: 使用单端信号线传输控制序列(如SoT、EoT、ULPS)。RK平台在进入/退出LP状态时,需严格遵循D-PHY规定的时序(如TLPX、THS-PREPARE)。
驱动注意点: 在RK3588上,D-PHY的HS/LP模式切换由PHY内部状态机自动完成,但驱动必须确保在发送HS数据前,PHY已通过LP序列完成“高速准备”(HS-PREPARE + HS-ZERO)。错误的LP时序会导致CSI-2链路无法锁定。
2.3 时钟通道与数据通道结构
一个标准的MIPI D-PHY链路包含1条时钟通道(Clock Lane)和1~4条数据通道(Data Lanes)。RK平台通常支持4数据通道配置,以提供足够的带宽(例如RK3588的CSI-2 Host支持4x4 Lane)。
2.4 RK平台D-PHY配置寄存器映射
瑞芯微RK平台的D-PHY寄存器通常映射在GRF(General Register Files)或PHY独立地址空间内。以RK3588为例,D-PHY寄存器分为三大类:
2.4.1 时钟与复位控制(CRU相关)
驱动需先使能D-PHY的时钟源(如MIPI_DPHY_CLK_REF)并释放复位:
// RK3588 CRU 寄存器示例(地址偏移)
#define CRU_CLK_GATE0_CON 0x0000
#define CRU_SOFTRST_CON 0x0200
// 使能 D-PHY 参考时钟(bit 8)
writel(0x01000100, cru_base + CRU_CLK_GATE0_CON);
// 释放 D-PHY 复位(bit 8,写1复位,写0释放)
writel(0x01000100, cru_base + CRU_SOFTRST_CON);
writel(0x01000000, cru_base + CRU_SOFTRST_CON);
2.4.2 PHY配置寄存器(GRF)
GRF寄存器用于配置PHY的模拟参数,如偏置电流、阻抗校准、HS-TX摆幅等。下表列出RK3588 D-PHY的关键GRF寄存器:
| 寄存器名称 | 偏移地址 | 位域 | 功能描述 |
|---|---|---|---|
GRF_DPHY_CON0 |
0x0000 | [3:0] | Lane 0 使能(bit0)~ Lane 3 使能(bit3) |
GRF_DPHY_CON1 |
0x0004 | [7:4] | HS-TX 摆幅控制(0x0=200mV, 0xF=400mV) |
GRF_DPHY_CON2 |
0x0008 | [1:0] | 阻抗校准模式:00=手动, 01=自动, 10=旁路 |
GRF_DPHY_CON3 |
0x000C | [15:8] | LP 模式驱动强度(影响TLPX时序) |
GRF_DPHY_STATUS |
0x0010 | [0] | PHY 锁定状态(1=已锁定,0=未锁定) |
常见错误: 在RK3568上,如果
GRF_DPHY_CON2的阻抗校准未设置为“自动”模式,PHY可能无法在高温下保持稳定的差分阻抗,导致HS模式下出现CRC错误。建议在驱动初始化时始终启用自动校准。
2.4.3 时序参数配置
D-PHY的HS/LP切换时序需根据PHY的时钟频率和PCB走线延迟进行调整。RK平台通过一组时序寄存器来定义THS-PREPARE、THS-TRAIL、TCLK-POST等参数:
// RK3588 D-PHY 时序寄存器(示例)
#define GRF_DPHY_TIMING0 0x0020 // HS-PREPARE + HS-ZERO
#define GRF_DPHY_TIMING1 0x0024 // HS-TRAIL + HS-EXIT
#define GRF_DPHY_TIMING2 0x0028 // CLK-PREPARE + CLK-ZERO
#define GRF_DPHY_TIMING3 0x002C // CLK-POST + CLK-TRAIL
// 典型配置值(对应 1.5 Gbps / Lane)
writel(0x000A000A, grf_base + GRF_DPHY_TIMING0); // HS-PREPARE=10, HS-ZERO=10
writel(0x00080008, grf_base + GRF_DPHY_TIMING1); // HS-TRAIL=8, HS-EXIT=8
writel(0x000C000C, grf_base + GRF_DPHY_TIMING2); // CLK-PREPARE=12, CLK-ZERO=12
writel(0x000A000A, grf_base + GRF_DPHY_TIMING3); // CLK-POST=10, CLK-TRAIL=10
2.5 D-PHY状态机与链路初始化流程
RK平台D-PHY的链路初始化遵循MIPI标准状态机,驱动需按顺序触发以下状态:
- LP-11 停止状态: 所有通道处于LP-11(Dp=1, Dn=0),等待启动。
- Mark-1 序列: 时钟通道发送LP-01 → LP-00 → LP-01,进入HS准备。
- HS-ZERO 桥接: 数据通道发送HS-ZERO(差分0),建立共模电压。
- SoT(Start of Transmission): 数据通道发送HS同步序列(00011101),接收端PLL锁定。
- HS数据传输: 发送图像数据包(长包或短包)。
- EoT(End of Transmission): 发送LP-11,返回停止状态。
2.6 RK平台D-PHY调试与性能优化要点
- 眼图测试: 使用示波器测量HS模式下Dp/Dn差分信号的眼图,确保眼高≥200mV、眼宽≥0.5UI。RK3588的GRF_DPHY_CON1可微调摆幅以优化眼图。
- 阻抗匹配: PCB走线需保持100Ω差分阻抗,RK平台支持内部阻抗校准(通过GRF_DPHY_CON2),建议在驱动初始化时触发一次校准。
- 时序余量: 在高温或长走线场景下,适当增加THS-PREPARE和TCLK-POST的值(每次增加2个UI),避免链路失锁。
- 通道去偏斜: 多数据通道场景下,RK平台支持每通道独立的去偏斜(Deskew)校准,通过GRF_DPHY_DESKEW寄存器配置。
性能指标参考(RK3588): 在4 Lane配置下,D-PHY理论带宽为 4 × 2.5 Gbps = 10 Gbps。实际驱动中,受限于CSI-2协议开销和ISP处理能力,推荐配置为 4 Lane @ 1.5 Gbps,可稳定支持 4K@60fps 12-bit RAW 图像传输。