传感器硬件接口:MIPI CSI-2、LVDS、HiSPi协议详解
做嵌入式视觉这些年,我调试过的传感器接口少说也有几十种。说实话,很多项目出问题,根源不在算法,而在硬件接口没选对、没布好。今天咱们就把MIPI CSI-2、LVDS、HiSPi这三个主流接口掰开揉碎了讲清楚。
一、三大接口的定位与差异
先看一张总览图,把三个接口的核心特征说清楚。
二、MIPI CSI-2 协议详解
MIPI CSI-2 是目前最主流的传感器接口。我接触的项目里,80%以上用的都是它。为什么这么火?说白了,它把物理层和协议层分得很清楚,扩展性极强。
2.1 物理层:D-PHY vs C-PHY
MIPI 物理层有两种选择,我习惯这么区分:
| 特性 | D-PHY | C-PHY |
|---|---|---|
| 信号线 | 差分对 (Dp/Dn) | 三线 (A/B/C) |
| 每lane速率 | 最高 4.5 Gbps | 最高 5.7 Gbps (等效) |
| 时钟 | 独立时钟线 | 时钟嵌入数据 |
| 功耗 | 较低 | 略高 |
| PCB布线难度 | 中等 | 较高 |
我个人更推荐 D-PHY 做新项目。原因很简单:调试工具多,参考设计多,遇到问题容易找到人问。C-PHY 虽然速率高,但布线要求苛刻,我曾经在一个项目里被 C-PHY 的时序折腾了两周,后来换回 D-PHY 才搞定。
2.2 协议层:CSI-2 数据包结构
CSI-2 的数据传输以包为单位。每个包包含:
- 包首 (PH):数据类型、虚拟通道、字计数
- 包数据:RAW8/10/12、YUV、RGB 等格式
- 包尾 (PF):CRC 校验
关键点:CSI-2 支持最多 4 个虚拟通道。这意味着一条 MIPI 总线可以同时传输 4 路不同的图像数据。我在做多目视觉项目时,就用这个特性把左右两个摄像头的图像合并到一条 CSI-2 总线上,省了一组接口。
三、LVDS 接口详解
LVDS 是个老将了。虽然速率不如 MIPI,但它的抗干扰能力和长距离传输能力是独一档的。工业相机里,LVDS 仍然是主流。
3.1 LVDS 的工作原理
LVDS 的核心是差分信号。一对线上,一个信号是另一个的反相。接收端只关心两者的差值。这样做的好处很明显:
- 共模噪声被抵消
- 电磁辐射小
- 可以传 10 米以上
我记得有一次在工厂调试,传感器离主板有 5 米远。MIPI 信号根本过不去,换成 LVDS 后,图像稳稳的。这就是经验。
3.2 LVDS 的典型配置
| 参数 | 典型值 | 说明 |
|---|---|---|
| 数据对数量 | 4 对 | 每对传输 7 位数据 |
| 时钟对 | 1 对 | 随路时钟 |
| 单对速率 | 600 Mbps | 常见值 |
| 总带宽 | 4.2 Gbps | 4对×600Mbps×7/7 |
| 电压摆幅 | 350 mV | 差分峰峰值 |
小技巧:LVDS 的终端电阻一定要靠近接收端放置。我见过不少工程师把电阻放在 PCB 中间,结果信号反射严重,图像出现条纹。正确做法是:电阻放在接收器引脚旁边,误差不超过 1%。
四、HiSPi 协议详解
HiSPi 是安森美半导体推的接口。说实话,用的人不多,但在安森美的传感器上,它是标配。如果你用 PYTHON 系列或 XGS 系列的传感器,就绕不开它。
4.1 HiSPi 的包结构
HiSPi 的数据也是包结构,但比 CSI-2 简单。它只有三种包:
- 帧起始包 (FS):标记一帧的开始
- 行数据包:包含一行像素数据
- 帧结束包 (FE):标记一帧的结束
每个包都有同步码和 CRC。同步码是固定的 0xAAAA_AAAA 模式,接收端用它来对齐数据。
4.2 HiSPi 的四种模式
HiSPi 有四种工作模式,我刚开始接触时也被搞晕过:
| 模式 | 数据线 | 时钟 | 典型应用 |
|---|---|---|---|
| SP | 1 对 | 随路 | 低分辨率 |
| DP | 2 对 | 随路 | 中等分辨率 |
| QP | 4 对 | 随路 | 高分辨率 |
| SP-DDR | 1 对 | 双沿采样 | 节省引脚 |
注意:HiSPi 的同步码在低光照条件下可能被噪声干扰。我曾经遇到过一个案例,传感器在暗光下输出花屏,排查了两天才发现是同步码被噪声淹没。解决方案是降低同步码检测阈值,或者在硬件上加一个带通滤波器。
五、差分信号与PCB布局要点
这部分是实战中的重灾区。很多工程师把原理图画对了,但 PCB 布局一塌糊涂,信号根本跑不起来。下面是我总结的几条铁律。
5.1 差分信号的核心原则
- 等长:差分对内的两根线长度差不超过 5 mil。我习惯控制在 2 mil 以内。
- 等距:两根线的间距要保持一致。间距变化会导致阻抗不连续。
- 阻抗控制:100Ω 差分阻抗,±10% 的容差。
- 参考平面:差分对下方必须有完整的参考地平面。
5.2 PCB 布局的避坑指南
我曾经在一个 8 层板项目上栽过跟头。MIPI 信号从传感器到处理器走了 12 厘米,中间跨了一个电源分割区。结果图像时不时出现横纹。后来发现是参考平面不连续,导致阻抗突变。
从那以后,我给自己定了几条规矩:
- 不要跨分割:差分对必须走在一个完整的参考平面上
- 少打过孔:每个过孔都会引入 0.5-1 pF 的寄生电容。能不过孔就不过
- 远离干扰源:差分对离时钟线、电源开关管至少 3 倍线宽
- 包地处理:在差分对两侧加地线,间距 2 倍线宽
实战经验:MIPI D-PHY 的时钟线必须比数据线短。为什么?因为接收端用时钟的上升沿采样数据。如果时钟比数据晚到,采样点就偏了。我一般让时钟线比数据线短 2-3 mm,留出裕量。
5.3 布局流程速查表
| 步骤 | 操作 | 检查项 |
|---|---|---|
| 1 | 确定差分对位置 | 远离电源、时钟、电感 |
| 2 | 设置阻抗规则 | 100Ω ±10% |
| 3 | 布线 | 等长、等距、少过孔 |
| 4 | 添加终端电阻 | 靠近接收端 |
| 5 | 仿真验证 | 眼图、时序裕量 |
| 6 | 打样测试 | 信号完整性测试 |
推荐工具:做信号完整性仿真时,我用 HyperLynx 比较多。免费的可以用 KiCad 的差分对布线功能,配合开源仿真工具也能凑合。但说实话,高速信号还是建议用商业工具,省得走弯路。
六、接口选型决策树
最后,给一个我常用的选型思路。你想想看,拿到一个项目,怎么选接口?
嗯,接口选型没有的对错。关键是你得清楚自己的项目约束:距离、速率、功耗、成本、传感器型号。把这些列出来,对着上面的决策树走一遍,答案就出来了。