1. MIPI CSI-2 概述:从摄像头接口到行业标准
CSI-2 的全称是 Camera Serial Interface,说白了就是摄像头和处理器之间传图像数据的协议。我最早接触它是在调手机摄像头模组的时候,那时候分不清物理层和协议层,结果 debug 了一周才发现是 D-PHY 的 LP 模式没配对。嗯,踩过的坑多了,也就慢慢摸透了。
1.1 什么是 MIPI CSI-2?
它定义了一套分层架构,把原始图像数据从 sensor 一路送到 ISP 或应用处理器。你想想看,摄像头每秒钟要传几千万甚至上亿个像素,如果不用高速串行接口,靠并行的 DVP 迟早会被板上的噪声干趴下。CSI-2 最大的贡献就是:
- 串行化传输:减少引脚数,从几十根降到四五根差分对
- 分层解耦:物理层升级不影响上层软件
- 灵活性:支持多通道、多虚拟通道、不同像素格式
我记得有一次客户要求把 2-lane 改成 4-lane,原本以为要改驱动,结果发现只需改 dts 里的 lane 数,硬件管脚没动,这就是分层的好处。
核心特征:CSI-2 是 MIPI 联盟制定的摄像头串行接口标准,目前最常用的是 v1.3 和 v2.0,底层可搭配 D-PHY 或 C-PHY。
1.2 协议的分层结构
分层是 CSI-2 的灵魂。它像洋葱一样,每层只关心自己该做的事。我从下往上讲:
- 物理层(D-PHY / C-PHY):负责电信号收发、时钟恢复、高速与低功耗模式切换。
- 通道管理层(Lane Management):处理多通道的拆分与合并,还有 CRC 校验。
- 低级协议层(LLP):定义数据包格式、包头、包尾、ECC 校验。
- 像素/字节打包层(Pixel/Byte Packing):把 raw 数据按格式打包成字节流,比如 RAW10、YUV422。
- 应用层:最上层,直接对 sensor 或 ISP 暴露接口,处理帧同步、曝光、增益等控制命令。
常见误区:很多工程师以为 CSI-2 只有 D-PHY 这一层。我曾经在排查图像花屏时,一直怀疑 PHY 的时序,最后发现其实是 LLP 层的包头 ECC 没通过,导致整帧被丢弃。所以调试时要分层定位。
个人习惯:在看 datasheet 时,我会先确认 sensor 输出的数据格式(比如 RAW10),然后反推打包方式,再参考 PHY 配置的速率和 lane 数——从顶向下思考不容易漏。
1.3 典型应用场景
CSI-2 已经不只在手机里了。我去年参与过一个车载环视项目,四路 200 万像素摄像头通过长距离 FPC 连接,要求每路 4-lane D-PHY 跑 1.5Gbps。下面这张表列出了常见场景的带宽需求:
| 应用场景 | 分辨率/帧率 | 数据格式 | 典型带宽 | 推荐通道 |
|---|---|---|---|---|
| 智能手机主摄 | 48M / 30fps | RAW10 | 约 1.6 Gbps | 4-lane D-PHY |
| 车载环视 | 1080P / 60fps | YUV422 8bit | 约 1.5 Gbps | 4-lane D-PHY |
| 安防监控 | 4K / 30fps | H.264 (编码) | 约 800 Mbps | 2-lane D-PHY |
| 工业视觉 | 5M / 120fps | RAW12 | 约 3.6 Gbps | 4-lane C-PHY |
带宽计算有个粗糙公式:帧率 × 分辨率 × 像素深度 × 通道数/通道速率。但实际还得算上打包开销、消隐区、CRC 等,我曾经在这里算漏了,导致选型时低估了带宽。
1.4 发展历程
CSI 标准其实从 2005 年左右就开始了。简单梳理一下:
- CSI-1 (2005):初代,只支持 D-PHY,像素格式少,现在已经很少见了。
- CSI-2 v1.0 (2008):引入分层结构,支持虚拟通道,成为主流。
- CSI-2 v1.3 (2014):加入了 RAW 系列格式、统一串行链路(SSL),我开始用它做项目时就是这个版本。
- CSI-2 v2.0 (2017):支持更高速率的 C-PHY 1.2,以及智能感测、嵌入式数据等特性。
- CSI-2 v3.0 (2021):增加了延时控制、多帧同步等,面向自动驾驶和 AR/VR。
我个人建议新项目直接选 v1.3 或 v2.0,因为 v1.0 的某些 PHY 配置在高速模式下容易出时序问题——嗯,我之前吃过这个亏。
避坑指南:我曾经设计了一款产品,用了 v1.0 的 sensor,结果发现无法支持 RAW10 压缩。后来被迫加上外部 FPGA 做格式转换,成本一下升了 30%。所以选版本时一定要先确认目标格式是否被协议版本完整支持。