4. MIPI D-PHY 物理层:电平规范、时钟通道与数据通道、LP/HS 模式详解
这一节咱们聊聊 D-PHY 物理层,很多做摄像头驱动的朋友在这上面吃过亏。
MIPI D-PHY 本质上是一套高速串行接口的物理层规范。它负责把摄像头采集到的像素数据,从传感器端搬到应用处理器端。说白了,就是图像数据的"搬运工"。
我个人习惯把 D-PHY 拆成三个核心要素来理解:电平标准、通道架构、模式切换。搞懂了这三点,寄存器配置里的那些时序参数就不是天书了。
4.1 电平规范:不是简单的 0 和 1
大家知道普通 GPIO 是 0V 和 3.3V 跳来跳去,但 MIPI 不一样。它用的是差分信号,正负两根线互补驱动。
核心指标:
- HS 模式(高速模式):差动电压摆幅约 200mV,共模电压在 200mV 左右。信号幅度小,压摆率快,功耗低,适合高速传输。
- LP 模式(低功耗模式):单端电压摆幅 1.2V(0V 到 1.2V),更像普通数字信号,但速率很低,主要用于控制命令和启动握手。
我在项目里遇到过这么个坑:有次调试一块 4-lane 的 sensor,图像一直有条纹,后来发现是 D-PHY 供电的纹波太大,导致共模电压波动了 50mV 以上。你说 200mV 的摆幅,波动 50mV 意味着啥?信号眼图基本闭眼了。
| 参数 | HS 模式(高速) | LP 模式(低功耗) |
|---|---|---|
| 电压摆幅 | ~200mV (差动) | 1.2V (单端) |
| 共模电压 | ~200mV | 0V (~GND) |
| 数据传输速率 | 80Mbps - 4.5Gbps | ~10Mbps |
| 功耗 | 较高 (但远低于 LVCMOS) | 极低 |
| 主要用途 | 图像数据流 | 总线控制、Ping-Pong、启动 |
关键点:HS 模式下,两线间的差动摆幅才是真正的逻辑电平。单端测量仅供参考,没法用于判断信号质量。我习惯用差分探棒点 D-PHY,直接看差分波形,这样才靠谱。
4.2 时钟通道与数据通道
MIPI D-PHY 采用源同步时钟架构。啥意思?就是时钟和数据由发送端(比如 sensor)一起发出来,接收端(比如 ISP/AP)直接用这个时钟采样数据,不需要 PLL 去恢复时钟。这样做的好处很明显:抗抖动、延迟低、设计简单。
通道拓扑:
- 1 条时钟通道 (CLK_P/N): 提供差分时钟,频率等于数据速率的一半。比如 1Gbps 的数据速率,CLK 就是 500MHz。
- 1~4 条数据通道 (DATA0_P/N ~ DATA3_P/N): 每条通道独立传输数据。多通道可以并行传输,提高总带宽。
- 未使用的数据通道: 必须保持上拉至 LP11 状态,防止误触发。
你想想看,为什么摄像头通常用 1、2 或 4 条 lane?因为 bandwith 不够就加 lane,但加 lane 会增加 PCB layout 的难度和功耗。我记得有个 4K60fps 的项目,最后评估下来 2-lane 勉强够用但余量不足,就果断上了 4-lane,省得后期改板子。
实战经验:Layout 时数据 lane 最好等长,和 CLK lane 的等长控制在 ±100mil 以内。我曾经因为没注意等长,导致高速信号 skew 过大,图像最后一列像素偏色。
4.3 LP/HS 模式详解
D-PHY 最灵活的地方在于能动态切换 LP 和 HS 模式。而且这个切换不是随意的,要遵循严格的时序协议。
4.3.1 模式切换的时序状态机
D-PHY 的数据通道状态由 Dp 和 Dn 两根线的电平决定。咱们记住 LP11、LP10、LP00、LP01 这四个基本状态就行。
典型切换流程(以 DATA lane 为例):
- 停靠状态: 总线空闲,Dp/Dn 都在高电平,即 LP11。
- 转向 HS-Prepare: 先进入 LP01(Dp 低,Dn 高),保持 TLP-PREPARE 时间。
- 进入 HS-Zero: 再进入 LP00(Dp 低,Dn 低),保持 THS-ZERO 时间。
- 数据高速传输: 线对驱动差动信号,进入 HS 模式,传输 N 个字节的数据。
- 发送 Trailer: 数据传输结束后,驱动进入 LP11,结束 HS 序列。
- 回到空闲: 线对稳定在 LP11,等待下一个传输周期。
重要提醒: 时序参数如 TLP-PREPARE、THS-ZERO、THS-TRAIL 等在 D-PHY 规范中有明确的范围。寄存器配置里的 UI 单位是基于 bit 时间的。我建议把 sensor 的 datasheet 和 D-PHY spec 对照着看,别只抄参考配置。
为什么会这样设计?因为从 LP 到 HS 的过程中,接收器的共模电压和差分偏置都需要重新建立,不能直接跳变。这些时序参数就是为了保信号靠谱。
4.3.2 数据传输中的时钟与数据关系
时钟通道在 HS 模式下持续输出差分时钟,数据通道在 HS 模式下在时钟的 DDR(双沿)上采样。简单说,时钟上升沿和下降沿都传输数据。一个 500MHz 的时钟,就能实现 1Gbps 的数据速率。
通道内数据格式:
- 每个字节被拆分为高 4 位和低 4 位,在时钟的上升沿和下降沿分别传输。
- 先传输 MSB(最高位),再传输 LSB(最低位)。
- 一个小包(Short Packet/ Long Packet)必须在连续的 HS 序列中完成。
举个例子:
数据速率 1Gbps,每条 data lane 传输 1 bit 数据。如果是 4-lane 配置,总带宽就是 4Gbps。但实测时要考虑 HS 传输之间的 LP 间隔,实际有效带宽大概能跑到 80-90%。
好了,这章就到这。核心就是记住:电平分为 LP 和 HS 两个世界,时钟和数据用差分对跑,模式切换必须卡时序。下次你们调 sensor 的时候,如果出图不正常,先检查 lane 的停靠状态对不对,再抓一下 HS 序列波形,八成能找到问题。