3. MIPI CSI-2 物理层详解:差分信号、Lane 配置、时钟与数据通道、LP/HS 模式切换、眼图测试
MIPI CSI-2 物理层,说白了就是摄像头和处理器之间那条“高速公路”。路修得好不好,直接决定数据能不能跑得快、跑得稳。我早年调第一款 MIPI 摄像头时,总觉得物理层是硬件工程师的事,结果被眼图测试狠狠上了一课——从那以后,我再也不敢轻视这层了。
3.1 差分信号:为什么是两根线?
MIPI 物理层用的是低压差分信号(LVDS)。简单说,就是每个信号都用一对线来传:一根传正相(Dp),一根传反相(Dn)。接收端看的是两根线的电压差,而不是对地电压。
这样做的好处很明显:
- 抗干扰强:外部噪声同时耦合到两根线上,差分一减,噪声就抵消了。
- 功耗低:电压摆幅只有 200mV 左右,比传统 LVTTL 省电得多。
- 速率高:每 Lane 能跑到 1Gbps 甚至更高。
3.2 Lane 配置:一条还是四条?
MIPI CSI-2 的 Lane 数可以配成 1、2、3 或 4 条。每条 Lane 都是独立的差分对,数据在 Lane 之间交错传输。
| Lane 数 | 典型分辨率 | 帧率 | 适用场景 |
|---|---|---|---|
| 1 Lane | VGA (640x480) | 30 fps | 低端摄像头、安防 |
| 2 Lane | 720p / 1080p | 30 fps | 手机副摄、行车记录仪 |
| 4 Lane | 4K / 8K | 60 fps | 旗舰手机、工业相机 |
配置 Lane 数时,要考虑带宽够不够。我一般这样算:
所需带宽 = 分辨率宽 × 分辨率高 × 帧率 × 每像素位数
每 Lane 可用带宽 = Lane 速率 × 0.8(留 20% 余量)
所需 Lane 数 = ceil(所需带宽 / 每 Lane 可用带宽)
3.3 时钟与数据通道:谁跟谁走?
MIPI CSI-2 物理层有两类通道:
- 时钟通道(Clock Lane):专门传差分时钟,所有数据 Lane 共用这一个时钟。
- 数据通道(Data Lane):传像素数据、同步信号、帧头帧尾等。
时钟和数据是同步的。数据 Lane 在时钟的上升沿和下降沿都采样,这叫 DDR(双倍数据率)。举个例子:如果时钟频率是 500MHz,那每 Lane 的数据率就是 1Gbps。
这里有个坑:时钟 Lane 必须比数据 Lane 先稳定。我遇到过启动时数据先来了,时钟还没锁住,结果整帧数据都丢了。解决办法是在驱动里加个延时,等时钟稳定后再使能数据接收。
3.4 LP/HS 模式切换:省电与高速的平衡
MIPI 物理层有两种工作模式:
- LP(Low Power)模式:电压摆幅 1.2V,速率低(约 10Mbps),用于控制信号和空闲状态。
- HS(High Speed)模式:电压摆幅 200mV,速率高(最高 4.5Gbps),用于传输像素数据。
两种模式之间切换,靠的是“状态序列”。具体来说:
- 从 LP-11(空闲态)进入 LP-01 → LP-00 → 进入 HS 模式。
- HS 传输结束后,回到 LP-00 → LP-10 → LP-11(空闲态)。
这个切换过程必须在几个纳秒内完成。我调试时用示波器抓过这个序列,发现有个摄像头在 LP→HS 切换时多花了 20ns,结果第一行像素就丢了。后来在驱动里把 HS 使能提前了 50ns,才解决。
3.5 眼图测试:物理层的“体检报告”
眼图是衡量信号质量最直观的方法。把示波器探头接到差分对上,用余辉模式累积采样,就能看到“眼睛”一样的图案。
眼图能告诉我们什么?
- 眼高:信号幅度的余量。眼高越大,抗噪声能力越强。
- 眼宽:采样窗口的大小。眼宽越大,时序余量越足。
- 抖动:信号边沿的随机偏移。抖动越小越好。
我一般要求眼图满足以下指标:
| 参数 | 合格线 | 优秀线 |
|---|---|---|
| 眼高 | > 150mV | > 200mV |
| 眼宽 | > 0.5 UI | > 0.7 UI |
| 抖动(RMS) | < 0.1 UI | < 0.05 UI |
如果眼图闭合(眼睛睁不开),先检查 PCB 布线:差分对等长吗?阻抗匹配吗?有没有过孔太多?我遇到过一块板子,眼图怎么都调不好,最后发现是差分对下面有个电源层分割,破坏了阻抗连续性。
嗯,物理层的内容就这些。说白了,MIPI CSI-2 物理层就是一套精心设计的“信号规矩”。你遵守它,数据就能跑得又快又稳;你不遵守它,摄像头就给你“脸色看”。我建议你在做板子之前,先把这些概念吃透,省得到时候抓瞎。