2. Sensor硬件接口详解:MIPI CSI-2、LVDS、HiSPi

做工业相机驱动,绕不开的就是Sensor和主控芯片之间的“对话通道”。说白了,就是数据怎么从Sensor传出来,主控怎么把它接住。我这些年调试过的接口,主流就三种:MIPI CSI-2、LVDS、HiSPi。它们各有脾气,物理层和协议层的差异很大,PCB布局更是藏着不少坑。

今天咱们就把这三个接口掰开揉碎,看看它们到底怎么工作,以及布板时哪些地方容易翻车。

2.1 物理层差异:电压、差分对、时钟

先看物理层,这是信号能传多远、多稳的基础。

接口 电压摆幅 差分对数量 时钟方式 典型速率
MIPI CSI-2 200mV ~ 1.2V (D-PHY) 1~4 Lane + 时钟 源同步DDR 80Mbps ~ 2.5Gbps/Lane
LVDS 350mV (典型) 4~8对 + 时钟 源同步SDR 100Mbps ~ 800Mbps/对
HiSPi 200mV ~ 1.2V 1~4 Lane + 时钟 源同步DDR 最高约1Gbps/Lane

MIPI CSI-2 的 D-PHY 电压摆幅最低,只有 200mV 左右。好处是功耗低,坏处是对噪声特别敏感。我遇到过一块板子,MIPI 信号走线长了 3 厘米,结果图像边缘全是雪花点。后来把走线缩短到 5 厘米以内,问题才解决。

LVDS 的电压摆幅固定 350mV,抗干扰能力比 MIPI 强一些。但它的差分对数量多,占 PCB 面积大。HiSPi 是 Aptina(现安森美)搞的,物理层和 MIPI 很像,但协议层完全不同。现在新项目基本都用 MIPI 了,HiSPi 只在老款 Sensor 上还能见到。

注意: 三种接口的共模电压范围不同。MIPI D-PHY 的共模电压是 200mV,LVDS 是 1.2V。如果主控芯片不支持共模调整,直接连上可能无法锁定信号。我建议先查芯片手册的接收端共模范围。

2.2 协议层差异:数据打包、同步、控制

物理层搞定后,协议层决定了数据怎么组织、怎么同步。

MIPI CSI-2 协议层

MIPI CSI-2 用“短包”和“长包”来传输数据。短包传控制信息(比如帧开始、帧结束),长包传像素数据。每个长包都有 16 位 CRC 校验,保证数据完整性。

我个人习惯把 MIPI 的协议层想象成“快递包裹”:短包是快递单,长包是货物。快递单上写着“这是第几帧、第几行”,货物里装着像素值。主控收到后,先看快递单,再拆货物。

// MIPI CSI-2 长包结构示例
// 0x1E 是帧开始短包,0x2A 是行有效数据
// 0x1F 是帧结束短包
[0x1E] [0x2A + 像素数据 + CRC] [0x2A + 像素数据 + CRC] ... [0x1F]

LVDS 协议层

LVDS 在工业相机里常用“Channel Link”或“FPD-Link”协议。它没有 MIPI 那么复杂的包结构,而是直接把像素数据按位映射到差分对上。比如 4 对 LVDS 传输 10 位像素,每对传 2.5 位,再加上同步信号。

LVDS 的同步靠“行同步”和“帧同步”信号线。这些信号是独立的,不像 MIPI 那样嵌入在数据包里。所以 LVDS 的布线要多几根线,但调试起来更直观——用示波器抓一下同步信号就知道有没有问题。

HiSPi 协议层

HiSPi 的协议层介于 MIPI 和 LVDS 之间。它也有包结构,但比 MIPI 简单。HiSPi 支持“SP”和“MP”两种模式:SP 模式类似 MIPI 的短包,MP 模式类似长包。不过 HiSPi 的 CRC 校验是可选的,很多老 Sensor 干脆不实现。

经验之谈: 如果你在调试 HiSPi 接口的 Sensor,建议先确认主控是否支持 HiSPi 协议。有些 FPGA 的 IP 核只支持 MIPI,不支持 HiSPi。我曾经被这个坑过,花了三天才发现是 IP 核不兼容。

2.3 PCB 布局注意事项

PCB 布局是硬件调试的“硬功夫”。布局不好,再好的芯片也白搭。下面是我总结的几个关键点。

2.3.1 差分对等长与阻抗

MIPI 和 LVDS 都是差分信号,要求差分阻抗 100Ω。走线必须等长,误差控制在 5mil 以内。我习惯在布线时给差分对加“蛇形线”来调整长度,但蛇形线的间距要大于 3 倍线宽,否则会产生串扰。

  • 等长要求: 同一 Lane 内的 P/N 走线长度差 < 5mil
  • Lane 间等长: 不同 Lane 之间的长度差 < 50mil
  • 阻抗控制: 差分阻抗 100Ω ± 10%

2.3.2 参考层与过孔

差分对必须有连续的参考层(通常是 GND)。如果跨分割,阻抗会突变,信号反射严重。我建议在 Sensor 和主控之间不要打太多过孔,每对差分线最多 2 个过孔。过孔多了,信号质量会下降。

避坑指南: 我曾经在一块 4 层板上把 MIPI 走线跨过了电源分割区,结果图像出现“水波纹”。后来把走线移到 GND 层上方,波纹消失。记住:差分对的参考层必须是 GND,不是电源。

2.3.3 时钟走线

MIPI 和 LVDS 的时钟线是源同步的,必须和数据线等长。时钟线的包地处理也很重要——在时钟线两侧加 GND 过孔,间距小于 1/10 波长。对于 1Gbps 的 MIPI 信号,过孔间距大约 3mm。

2.3.4 电源去耦

Sensor 的电源纹波会影响接口信号质量。我建议在 Sensor 的电源引脚附近放 0.1μF 和 10μF 的电容,电容要靠近引脚,走线尽量短。如果 Sensor 有多个电源域(比如模拟 3.3V、数字 1.8V),每个域都要单独去耦。

2.4 接口对比与选型建议

下面这张图是我自己整理的接口选型逻辑,帮你快速判断该用哪种。

工业相机 Sensor 接口选型逻辑 Sensor 接口选型 速率 < 800Mbps/Lane? LVDS 抗干扰强,布线简单 MIPI CSI-2 高速,低功耗,主流 HiSPi 老Sensor兼容,慎用 选型建议 • 新项目首选 MIPI CSI-2,生态好,IP核多 • 长距离传输(>30cm)或强干扰环境用 LVDS • HiSPi 仅用于维护老产品,新设计不建议

2.5 调试实战:如何快速定位接口问题

调试接口时,我一般按这个顺序排查:

  1. 测电压: 先量 Sensor 和主控的电源电压,确保在规格范围内。
  2. 看时钟: 用示波器抓时钟信号,看频率对不对,抖动大不大。
  3. 查差分对: 用差分探头测数据 Lane 的眼图。眼图张开度 > 70% 才算合格。
  4. 抓协议: 用逻辑分析仪或 FPGA 内部 ILA 抓包,看短包和长包是否完整。
关键指标: MIPI 信号的眼图张开度如果低于 50%,基本无法锁定数据。这时候先检查 PCB 走线等长和阻抗,再考虑加均衡器。

嗯,接口这部分内容比较多,但都是硬知识。你只要把物理层和协议层搞清楚了,PCB 布局再注意那几个坑,调试起来会顺手很多。