硬件接口基础:MIPI CSI-2、UVC与Parallel接口的电气特性与物理层对比
做摄像头热插拔,第一关就是选接口。我见过不少项目,软件调得差不多了,结果硬件接口选型翻车——信号串扰、线序不对、驱动不兼容,最后全盘重来。今天咱们就把三种主流接口的电气特性和物理层掰开揉碎讲清楚。
一、MIPI CSI-2:高速串行的王者
MIPI CSI-2 是目前手机和嵌入式平台最主流的摄像头接口。它用差分信号传输,说白了就是一对线传一个信号,抗干扰能力强,速率能跑到 2.5Gbps 甚至更高。
电气特性
- 差分对结构:每个通道由 Dp(正)和 Dn(负)两根线组成,信号互为反向。
- 电压摆幅:典型值 200mV ~ 400mV,低功耗模式可降到 100mV 左右。
- 共模电压:通常 200mV ~ 1.2V,具体看 PHY 芯片规格。
- 阻抗要求:差分阻抗 100Ω ± 10%,单端对地阻抗 50Ω。
我踩过的坑:曾经有一款模组,CSI-2 时钟通道走线长了 15mm,结果 4K@30fps 画面出现条纹。后来查手册才发现,MIPI 对时钟和数据通道的等长要求是 ±5mm。嗯,从那以后我画板子都强制等长约束。
物理层结构
CSI-2 物理层分三层:
- PHY 层(D-PHY / C-PHY):负责电气信号转换、时钟恢复、串并转换。
- Lane 管理层:把数据分发到多个通道,支持 1、2、4 通道模式。
- 协议层:打包成短包(控制)和长包(数据),包含 ECC 校验。
我个人习惯用 D-PHY,因为它成熟、工具链完善。C-PHY 虽然带宽更高,但调试起来麻烦不少。
二、USB Video Class (UVC):即插即用的通用方案
UVC 是 USB 组织定义的视频设备标准。你想想看,市面上大部分 USB 摄像头插上就能用,靠的就是这个协议。它的物理层就是 USB 2.0 或 USB 3.0 的差分对。
电气特性
| 参数 | USB 2.0 (High-Speed) | USB 3.0 (SuperSpeed) |
|---|---|---|
| 信号类型 | 差分对 (D+/D-) | 两组差分对 (SSTX+/-, SSRX+/-) |
| 电压摆幅 | 400mV (HS模式) | 800mV ~ 1.2V |
| 阻抗要求 | 90Ω 差分 | 85Ω 差分 |
| 最大速率 | 480Mbps | 5Gbps |
| 线缆长度 | 5m (标准) | 3m (标准) |
注意:UVC 虽然方便,但延迟比 MIPI 大。我曾经在工业相机项目里用 UVC 做实时检测,发现帧到帧的抖动有 2-3ms,后来换成 MIPI 才降到 0.5ms 以内。如果你做的是实时性要求高的热插拔方案,这个差异必须考虑。
UVC 的优势与局限
- 优势:驱动通用,Windows/Linux/macOS 原生支持;热插拔机制成熟;线缆长。
- 局限:带宽受 USB 控制器限制;多路摄像头需要 USB Hub,存在带宽竞争。
三、Parallel 接口:老当益壮的并行方案
Parallel 接口也叫 DVP(Digital Video Port),是早期摄像头常用的接口。它用多根数据线同时传输像素数据,时钟频率不高,但布线复杂。
电气特性
- 信号线:8/10/12 位数据线 + 行同步 (HSYNC) + 场同步 (VSYNC) + 像素时钟 (PCLK)。
- 电压:通常 1.8V 或 3.3V CMOS 电平。
- 时钟频率:典型值 10MHz ~ 100MHz,受限于信号完整性。
- 阻抗要求:单端 50Ω,但实际布线时更关注等长和串扰。
关键对比:Parallel 接口的功耗通常比 MIPI 高 30%-50%,因为同时翻转的线多,动态电流大。但它的优点是控制器简单,很多低端 MCU 都支持。
四、三种接口的物理层对比
我把核心差异整理成一张表,方便你选型时快速参考:
| 特性 | MIPI CSI-2 | UVC (USB) | Parallel (DVP) |
|---|---|---|---|
| 信号类型 | 差分串行 | 差分串行 | 单端并行 |
| 最大带宽 | ~10Gbps (4通道) | 5Gbps (USB 3.0) | ~1Gbps (100MHz 12位) |
| 抗干扰能力 | 强 | 强 | 弱 |
| 布线复杂度 | 中 (等长要求高) | 低 (标准USB) | 高 (多线等长) |
| 热插拔支持 | 需额外设计 | 原生支持 | 需额外设计 |
| 典型应用 | 手机、嵌入式 | PC摄像头、工业 | 低端MCU、老平台 |
五、接口选型建议
做热插拔方案时,我的建议是:
- 追求高性能和低延迟:选 MIPI CSI-2,但要做好热插拔保护电路(ESD、缓启动)。
- 追求通用性和快速开发:选 UVC,驱动不用写,但要注意 USB 带宽分配。
- 成本敏感或 MCU 平台:选 Parallel,但布线要小心,信号完整性容易出问题。
避坑指南:我曾经在一个项目里用 Parallel 接口做热插拔,结果每次插拔都会导致系统死机。查了三天发现是 VSYNC 信号没有做上拉,浮空时产生毛刺触发了中断。加了个 10kΩ 上拉电阻就解决了。嗯,这种细节往往最坑人。
六、接口物理层结构图
下面这张图展示了三种接口的物理层结构对比,方便你理解它们的信号流向: