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(负极)。这种结构提供了良好的共模噪声抑制能力。
下表总结了 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 模式下的总线状态。
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,回到停止状态。
2.3 差分信号
D-PHY 在 HS 模式下使用差分信号传输。差分信号由一对物理线(Dp 和 Dn)组成,信息编码在两者电压差上。
- 信号定义: 当 VDp - VDn > 0 时,表示逻辑 '1';当 VDp - VDn < 0 时,表示逻辑 '0'。
- 共模抑制: 外部噪声会同时耦合到 Dp 和 Dn 线上,由于接收器只关心差分电压,共模噪声被有效抵消。
- 低摆幅: HS 模式下差分摆幅仅约 200mV,这有助于降低功耗和电磁干扰(EMI)。
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 的典型连接与信号关系:
2.5 驱动开发关键点
在 Linux 内核中对接 D-PHY 时,需要关注以下硬件相关配置:
- PHY 初始化: 通过
devm_phy_get()获取 PHY 句柄,调用phy_init()和phy_set_mode()设置模式为PHY_MODE_MIPI_DPHY。 - Lane 配置: 使用
phy_configure()传递struct phy_configure_opts_mipi_dphy结构体,设置 Lane 数量、HS 速率、LP 时序参数。 - 电源管理: 在 CSI-2 接收器启动时调用
phy_power_on(),停止时调用phy_power_off(),以控制 D-PHY 的功耗状态。 - 时序校准: 部分 SoC 需要软件协助进行 D-PHY 的 skew 校准,确保时钟与数据 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 驱动、解决信号完整性问题和优化功耗至关重要。