2. CSI-2 物理层(D-PHY):D-PHY Lane 结构、HS/LP 模式、差分信号、时钟与数据 Lane

CSI-2 物理层基于 MIPI D-PHY 标准,负责在摄像头传感器与应用处理器(AP)之间提供高速、低功耗的物理连接。D-PHY 采用源同步架构,通过专用的时钟 Lane 和可扩展的数据 Lane 实现数据传输。本章深入解析 D-PHY 的 Lane 结构、高速(HS)与低功耗(LP)模式、差分信号特性以及时钟与数据 Lane 的协同工作机制。

2.1 D-PHY Lane 结构

D-PHY 链路由一条时钟 Lane(Clock Lane)和一条或多条数据 Lane(Data Lane)组成。每个 Lane 由一对差分信号线构成,即 Dp(正极)和 Dn(负极)。这种结构提供了良好的共模噪声抑制能力。

关键概念: Lane 是 D-PHY 中独立的数据或时钟传输通道。一个 D-PHY 接口至少包含 1 个时钟 Lane + 1 个数据 Lane(1C1D),最高可配置为 1 个时钟 Lane + 4 个数据 Lane(1C4D)。

下表总结了 D-PHY Lane 的基本构成与功能:

Lane 类型 信号线 方向 主要功能
时钟 Lane CLKp / CLKn 单向(源同步) 提供 DDR 时钟,数据 Lane 在时钟的上升沿和下降沿均采样数据
数据 Lane 0 D0p / D0n 单向(从传感器到处理器) 传输像素数据、帧起始/结束包、行有效信号等
数据 Lane 1~N D1p/D1n ... DNp/DNn 单向(从传感器到处理器) 扩展带宽,多 Lane 间数据交错传输

2.1.1 Lane 内部模块

每个 Lane 内部包含发送端(TX)和接收端(RX)的物理层电路,主要包括:

  • 高速发送器(HS-TX): 用于 HS 模式下的差分信号驱动。
  • 低功耗发送器(LP-TX): 用于 LP 模式下的单端信号驱动。
  • 高速接收器(HS-RX): 用于接收 HS 差分信号。
  • 低功耗接收器(LP-RX): 用于接收 LP 单端信号。
  • 线路上拉/下拉电阻网络: 用于定义 LP 模式下的总线状态。
驱动开发提示: 在 Linux 内核 D-PHY 驱动中,通常通过 phy_configure() 和 phy_power_on() 调用来初始化 Lane 的电气特性,包括 HS 摆幅、LP 电平以及阻抗匹配。

2.2 HS(高速)与 LP(低功耗)模式

D-PHY 定义了两种主要的工作模式:高速模式(High-Speed, HS) 和 低功耗模式(Low-Power, LP)。这两种模式在信号电平、传输速率和功耗上存在显著差异。

2.2.1 模式对比

特性 高速模式(HS) 低功耗模式(LP)
信号类型 差分信号(Dp/Dn 互补) 单端信号(Dp/Dn 独立驱动)
电压摆幅 约 200mV(峰峰值) 1.2V(典型值)
传输速率 80 Mbps ~ 4.5 Gbps(每 Lane) ≤ 10 Mbps
功耗 高(用于突发数据传输) 极低(用于控制与空闲状态)
应用场景 传输像素数据、长包 总线初始化、状态切换、Escape 模式

2.2.2 模式切换与总线状态

D-PHY 总线状态由 LP 模式下 Dp 和 Dn 线的电平组合定义。HS 模式通过 LP 模式下的特定序列进入和退出。

下表列出了关键的 LP 总线状态:

状态 Dp 电平 Dn 电平 描述
LP-00 0 (低) 0 (低) 桥接状态(Bridged)
LP-01 0 (低) 1 (高) HS 请求(HS-Rqst)
LP-10 1 (高) 0 (低) LP 请求(LP-Rqst)
LP-11 1 (高) 1 (高) 停止状态(Stop State)

典型的 HS 进入序列为:LP-11 → LP-01 → LP-00,随后驱动 HS 差分信号。退出序列为:HS 信号结束 → LP-00 → LP-10 → LP-11,回到停止状态。

常见错误: 在驱动开发中,如果 HS 进入序列的时序不满足 D-PHY 规范(例如 LP-01 保持时间不足),接收端可能无法正确识别 HS 传输开始,导致数据丢失或 CRC 错误。

2.3 差分信号

D-PHY 在 HS 模式下使用差分信号传输。差分信号由一对物理线(Dp 和 Dn)组成,信息编码在两者电压差上。

  • 信号定义: 当 VDp - VDn > 0 时,表示逻辑 '1';当 VDp - VDn < 0 时,表示逻辑 '0'。
  • 共模抑制: 外部噪声会同时耦合到 Dp 和 Dn 线上,由于接收器只关心差分电压,共模噪声被有效抵消。
  • 低摆幅: HS 模式下差分摆幅仅约 200mV,这有助于降低功耗和电磁干扰(EMI)。
PCB 布局要点: 差分对 Dp/Dn 必须等长、紧耦合布线,以确保信号时序一致并最大化共模抑制。阻抗通常控制在 100Ω ± 10%。

2.4 时钟与数据 Lane

时钟 Lane 为所有数据 Lane 提供同步时钟。D-PHY 使用 DDR(Double Data Rate) 时钟方案,即数据在时钟的上升沿和下降沿都被采样。

2.4.1 时钟 Lane 特性

  • DDR 时钟: 时钟频率等于数据速率的 1/2。例如,1 Gbps 的数据速率对应 500 MHz 的时钟频率。
  • 连续时钟: 在 HS 数据传输期间,时钟 Lane 必须连续翻转,提供稳定的同步信号。
  • 时钟与数据对齐: 数据 Lane 的 HS 传输与时钟 Lane 的 HS 传输同时开始和结束,确保数据采样窗口稳定。

2.4.2 数据 Lane 特性

  • 数据交错: 在多 Lane 配置中,像素数据按字节或字交错分布在各个数据 Lane 上,以提升总带宽。
  • 低功耗数据传输: 在 LP 模式下,数据 Lane 可用于传输控制信息(如 Escape 模式命令)或低速数据。

下图展示了 1 个时钟 Lane 与 2 个数据 Lane 的典型连接与信号关系:

D-PHY 时钟与数据 Lane 结构图 D-PHY 时钟与数据 Lane 结构 发送端 (摄像头传感器) HS/LP 控制器 差分驱动器 接收端 (应用处理器) HS/LP 控制器 差分接收器 时钟 Lane (CLKp/CLKn) DDR 时钟,连续翻转 数据 Lane 0 (D0p/D0n) 像素数据、包控制 数据 Lane 1 (D1p/D1n) 数据交错,扩展带宽 说明: 数据 Lane 在时钟 Lane 的上升沿和下降沿均采样数据(DDR)。多 Lane 间数据交错传输,由发送端和接收端的协议层协调。

2.5 驱动开发关键点

在 Linux 内核中对接 D-PHY 时,需要关注以下硬件相关配置:

  1. PHY 初始化: 通过 devm_phy_get() 获取 PHY 句柄,调用 phy_init() 和 phy_set_mode() 设置模式为 PHY_MODE_MIPI_DPHY。
  2. Lane 配置: 使用 phy_configure() 传递 struct phy_configure_opts_mipi_dphy 结构体,设置 Lane 数量、HS 速率、LP 时序参数。
  3. 电源管理: 在 CSI-2 接收器启动时调用 phy_power_on(),停止时调用 phy_power_off(),以控制 D-PHY 的功耗状态。
  4. 时序校准: 部分 SoC 需要软件协助进行 D-PHY 的 skew 校准,确保时钟与数据 Lane 之间的延迟在允许范围内。
代码示例: 配置 D-PHY 速率与 Lane 数的典型内核代码片段如下:
struct phy_configure_opts_mipi_dphy dphy_cfg;
phy_mipi_dphy_get_default_config(pix_clk_rate, 
                                 num_data_lanes, 
                                 &dphy_cfg);
dphy_cfg.hs_clk_rate = 500000000; // 500 MHz DDR clock
dphy_cfg.lanes = 2;               // 2 data lanes
phy_configure(phy, &dphy_cfg);
phy_power_on(phy);

2.6 本章小结

D-PHY 作为 CSI-2 的物理层基石,其 Lane 结构、HS/LP 模式切换、差分信号特性以及时钟与数据 Lane 的协同机制,直接决定了摄像头接口的性能与稳定性。理解这些底层细节,对于正确配置 Linux 内核 D-PHY 驱动、解决信号完整性问题和优化功耗至关重要。