1. MIPI基础与协议概览

各位同学,咱们今天聊聊MIPI。说实话,我刚接触这个接口时,也被那一堆缩写搞得头晕。MIPI联盟、D-PHY、CSI-2……这些到底是个啥?别急,我带你一层层剥开。

1.1 MIPI联盟:谁在制定规则?

MIPI联盟,说白了就是一个行业组织。它由ARM、ST、TI这些大厂牵头,专门给移动设备定接口标准。你手机里的摄像头、显示屏、射频模块,几乎都跑在MIPI总线上。

我个人习惯把MIPI联盟看作「交通管理局」。它不造车,但规定车道多宽、限速多少、红绿灯怎么闪。没有它,各家芯片连在一起就是灾难。

核心要点:MIPI标准不是强制性的,但你不遵守,产品就卖不出去。我在项目中见过一款国产传感器,号称兼容MIPI,结果时序参数差了一点点,整块板子花了两周才调通。

1.2 D-PHY物理层:信号怎么跑?

D-PHY是MIPI的物理层标准。它定义了信号怎么传输、电压多高、速率多快。嗯,这里要注意——D-PHY用的是差分信号,不是单端。

为什么用差分?抗干扰强啊。你想想看,摄像头数据线在手机里绕来绕去,旁边还有射频天线、电源走线,单端信号早就被污染了。差分对一正一反,噪声一抵消,干干净净。

D-PHY有两种模式:

  • 高速模式(HS): 数据真正传输的时候用。速率从80 Mbps到4.5 Gbps不等。我做过一个项目,跑1.2 Gbps,眼图打开得挺好。
  • 低功耗模式(LP): 空闲或控制时用。电压低、功耗小,但速率也慢。

这里有个坑——我曾经以为HS和LP可以随便切换。结果发现,切换需要特定的时序序列,叫「Escape Mode」。如果控制不好,接收端会误判,数据全乱。

避坑指南:我曾经在D-PHY的LP→HS切换时,没留够准备时间(T-SETTLE)。结果FPGA采集到的图像全是条纹。后来查手册才发现,这个时间至少得145 ns。嗯,从此我写代码前必看时序图。

1.3 CSI-2协议栈:数据怎么组织?

物理层搞定信号传输,那数据本身怎么打包?这就是CSI-2的事了。CSI-2是MIPI的摄像头接口协议,定义了数据包的格式。

一个典型的CSI-2数据包长这样:

包结构:
+----------------+----------------+------------------+----------------+
| 包首 (SoT)     | 数据ID (DI)    | 字计数 (WC)      | 有效数据 (Data) |
| 8-bit          | 8-bit          | 16-bit           | N-byte          |
+----------------+----------------+------------------+----------------+
| 错误检测码 (ECC)| 校验和 (Checksum)|
| 8-bit          | 16-bit         |
+----------------+----------------+

你看,每个包都有头有尾。数据ID告诉接收端这是哪一路数据(比如RAW10还是YUV422),字计数说明有多长。最后还有ECC和校验和,保证数据没被篡改。

我个人习惯在FPGA里先解析数据ID,再根据字计数分配FIFO深度。如果字计数和实际数据长度不匹配,那肯定是传输出错了。

1.4 为什么时序收敛是MIPI采集的关键?

好,重点来了。MIPI跑得那么快,FPGA怎么保证每个bit都采对?

你想想看,D-PHY的时钟和数据是DDR方式传输的——时钟上升沿和下降沿都采样数据。如果时钟抖动大一点,或者数据延迟变了,采到的就是错的。

我在一个项目中遇到过:FPGA采集MIPI信号,板子刚上电能跑,跑半小时后图像开始花屏。查了半天,原来是温度升高导致PCB走线延迟变了,时序裕量不够了。

这就是时序收敛的意义——保证在所有条件下(温度、电压、工艺偏差),数据都能被正确采样。

关键指标:

参数 说明 典型值
T-SETUP 数据在时钟沿前必须稳定的时间 ≥ 0.15 UI
T-HOLD 数据在时钟沿后必须保持的时间 ≥ 0.15 UI
T-SKEW 时钟与数据之间的最大偏移 ≤ 0.2 UI
UI 单位间隔,即一个bit的时间 1 / (2 × 数据速率)

说白了,时序收敛就是让setup和hold都满足要求。FPGA里的时序分析工具会告诉你每条路径的裕量。如果裕量是负的,那就得改代码或约束。

个人经验:我建议你在做MIPI采集时,先跑一个简单的loopback测试。把发送端的数据直接环回给接收端,看能不能正确接收。如果连这个都过不了,那时序约束肯定有问题。

1.5 知识体系总览

下面这张图,是我自己画的MIPI采集知识体系。你看一眼,心里就有谱了。

MIPI采集时序收敛知识体系 MIPI联盟 D-PHY 物理层 高速模式 (HS) 低功耗模式 (LP) CSI-2 协议栈 数据包格式 时序收敛 Setup / Hold / Skew 满足要求 FPGA 采集实现与约束

从这张图你能看到,MIPI联盟定标准,D-PHY管传输,CSI-2管数据组织。最终所有东西都要落到FPGA的时序收敛上。没有时序收敛,前面都是白搭。

我的建议:学MIPI采集,别一上来就啃协议文档。先搭一个最小系统——一个时钟、一对差分数据线、一个FPGA。跑通最简单的RAW8数据,再慢慢加功能。我当年就是这么过来的。

好了,这一章就到这里。记住:MIPI不是黑魔法,它只是一套精心设计的规则。你理解了规则,就能驾驭它。

可可精品资料库