2、Sensor 接口与 RAW 数据:MIPI CSI/LVDS 接口协议、RAW Bayer 格式详解、DPHY/CPHY 区别
好,我们直接进入正题。Sensor 接口这块,说白了就是图像传感器怎么把拍到的原始数据传给 ISP。我这些年调过不少 sensor,从手机上的小底到工业上的大靶面,接口来来去去就那么几种,但坑是真不少。今天我把 MIPI CSI、LVDS、RAW Bayer 格式,还有 DPHY 和 CPHY 的区别,一次性给你讲透。
2.1 MIPI CSI 与 LVDS:两大主流接口协议
先说说 MIPI CSI。这是移动端和嵌入式领域最通用的接口。CSI 是 Camera Serial Interface 的缩写,它定义了一套完整的协议栈,从物理层到应用层都有规范。我个人习惯把 CSI 理解成一条「图像高速公路」——sensor 把数据打包成 packet,通过差分信号线高速传输给 ISP。
CSI 的物理层可以是 DPHY 或 CPHY,这个我们后面细说。协议层上,CSI-2 是最常见的版本,它支持多通道(lane)传输,每个通道可以跑几百 Mbps 到几 Gbps。我遇到过不少新手问:「为什么我的 sensor 明明支持 4 lane,但图像就是花屏?」嗯,这里要注意,lane 数越多,PCB 走线的等长要求就越严格,稍有偏差就会导致数据错位。
再说 LVDS。LVDS 是 Low-Voltage Differential Signaling 的缩写,它比 MIPI 出现得更早,在工业相机、车载摄像头里用得很多。LVDS 的优点是抗干扰能力强,传输距离远——我见过一些工业现场,sensor 和 ISP 板子之间用 LVDS 能拉 1 米以上的线缆,MIPI 一般撑死 30 厘米。
但 LVDS 也有缺点:它没有像 MIPI 那样完善的协议层。说白了,LVDS 只定义了物理层的电气特性,数据怎么打包、怎么同步,全靠各家厂商自己定。这就导致不同厂家的 LVDS sensor 互不兼容,你换一个 sensor 就得重新调时序。我曾经被一个 LVDS 的同步信号折腾了两天,最后发现是 sensor 的「帧有效」信号极性跟 ISP 的预期反了。
- MIPI CSI:协议完整,适合短距离、高带宽,移动端和消费电子首选。
- LVDS:物理层简单,抗干扰强,适合长距离、工业场景,但协议不统一。
2.2 RAW Bayer 格式详解
不管用 MIPI 还是 LVDS,sensor 传出来的数据绝大多数都是 RAW Bayer 格式。为什么叫 Bayer?因为大部分 sensor 的像素阵列上覆盖了一层 Bayer 滤色片——每个像素只感测红、绿、蓝中的一种颜色。你想想看,一个 1920x1080 的 sensor,实际上只有 1/4 的像素是红色,1/4 是蓝色,1/2 是绿色(人眼对绿色更敏感,所以绿色像素多一倍)。
RAW Bayer 数据就是这些未经插值的原始像素值。每个像素通常用 8bit、10bit、12bit 甚至 14bit 表示。我建议你记住一个关键点:RAW 数据不是图像,它只是「感光元件上的电荷量读数」。你直接把它当图像看,会看到一片马赛克——这就是 Bayer 模式。
常见的 Bayer 排列有四种:RGGB、BGGR、GRBG、GBRG。名字里的字母顺序代表左上角 2x2 像素块的颜色排列。举个例子,RGGB 表示左上角是红,右上和左下是绿,右下是蓝。为什么会有这么多排列?因为 sensor 的安装方向不同,或者 sensor 本身的设计不同。我在项目中遇到过最坑的一次:sensor 输出的是 BGGR,但 ISP 默认配置成了 RGGB,结果整张图像偏色到离谱,调了半天白平衡都没用,最后发现是 Bayer 顺序搞反了。
2.3 DPHY 与 CPHY 的区别
好,终于到了 DPHY 和 CPHY 的区别。这两个都是 MIPI 联盟定义的物理层标准,但工作方式完全不同。
DPHY 是差分信号,每个通道用两根线(Dp/Dn)传输数据,时钟信号单独用一对线。数据线是 DDR 模式——时钟的上升沿和下降沿都采样数据。DPHY 的速率通常从 80 Mbps 到 2.5 Gbps 每 lane。我最早接触 MIPI 时用的就是 DPHY,那时候 sensor 输出 1080p 30fps,4 lane 的 DPHY 完全够用。
CPHY 是后来推出的,它用三根线组成一个 trio,没有独立的时钟线。时钟信息是嵌入在数据信号里的。CPHY 的每个 trio 可以传输 2.28 个 bit 每 symbol(DPHY 每 lane 是 1 bit 每 symbol),所以 CPHY 的带宽密度更高。说白了,同样的线数,CPHY 能跑更高的数据量。
为什么会推出 CPHY?因为手机 sensor 的分辨率越来越高,4K、8K 甚至更高,DPHY 需要很多 lane 才能满足带宽。但手机内部空间有限,多一根线都是成本。CPHY 用更少的线实现了更高的带宽——3 根线的 CPHY 相当于 2 对线的 DPHY 的带宽。我最近调的一个 48M sensor,用的就是 CPHY,3 trio 就能跑 4K 60fps,换成 DPHY 至少需要 4 lane。
但 CPHY 也有代价:它的协议更复杂,对 PCB 走线的要求更高。三根线之间的 skew 必须严格控制,否则数据解不出来。我建议你在选型时这样考虑:如果带宽需求不高(比如 1080p 以下),DPHY 更成熟、更容易调通;如果追求高分辨率高帧率,CPHY 是更好的选择。
| 特性 | DPHY | CPHY |
|---|---|---|
| 线数 | 每 lane 2 根数据线 + 1 对时钟线 | 每 trio 3 根线(无独立时钟) |
| 带宽密度 | 1 bit/symbol/lane | 2.28 bit/symbol/trio |
| 最高速率 | ~2.5 Gbps/lane | ~5.7 Gbps/trio |
| 复杂度 | 较低,成熟 | 较高,协议复杂 |
| 适用场景 | 中低带宽,成熟产品 | 高带宽,旗舰手机 |
2.4 知识体系总览
下面这张图是我画的 Sensor 接口与 RAW 数据的知识结构图,帮你理清本章的核心逻辑。
这张图把本章的核心内容串起来了。从上往下看:sensor 通过 MIPI CSI 或 LVDS 接口把 RAW Bayer 数据传给 ISP。MIPI 内部又分 DPHY 和 CPHY 两种物理层。LVDS 则没有统一协议,各家自己定。数据到了 ISP 之后,第一步就是解析 RAW Bayer 格式,确认排列顺序和位深,然后才能做后续的 ISP 处理。
嗯,这一章的内容就到这里。接口协议和 RAW 数据格式是 ISP 管线的「入口」,如果这里搞错了,后面所有处理都是白搭。我建议你拿到一块新 sensor 板子时,先用示波器抓一下 MIPI 或 LVDS 的波形,确认信号质量没问题,再开始调 ISP。这一步能省你后面很多 debug 时间。