2. Camera 系统架构:手机 Camera 硬件组成与数据流

好,我们正式开始第二讲。上一章我们聊了 ISP 在整个成像链路里的位置,这一章咱们把镜头盖拧开,看看手机 Camera 里面到底有哪些硬件,它们之间怎么说话,数据又是怎么一路跑到 AP 那边去的。

说白了,手机 Camera 就是一个微型的光机电一体化系统。我当年刚入行时,以为就是个镜头加个传感器,后来被项目教做人——任何一个器件选型没对齐,整机效果都可能翻车。

2.1 手机 Camera 硬件组成

一个典型的手机后置摄像头模组,拆开来看,主要由下面这几大件构成:

组件 英文缩写 核心作用 我踩过的坑
镜头 Lens 汇聚光线,决定进光量和解析力 镜片镀膜划伤,Flare 满天飞
图像传感器 Sensor 光电转换,把光信号变成电信号 暗电流不均,画面出现固定噪声
音圈马达 VCM 推动镜头对焦 共振频率没避开,录像时画面抖动
驱动 IC Driver IC 控制 VCM 电流,实现精确对焦 I2C 时序不稳,马达乱跳
红外滤光片 IR-Cut 过滤红外光,防止偏色 滤光片偏移,画面边缘发红

2.1.1 Lens(镜头)

镜头是相机的眼睛。手机镜头通常是多片塑料或玻璃镜片叠在一起,用来矫正像差。我个人习惯先看两个参数:有效焦距(EFL)和F 数(光圈)。F 数越小,进光量越大,但景深也越浅。

避坑指南: 我曾经遇到过一款镜头,在实验室 MTF 数据很好看,但一上整机,边缘解析力掉得厉害。后来排查发现是镜筒压环力度不均匀,导致镜片产生了微变形。所以,镜头模组的结构公差比镜片本身的设计更考验供应链能力。

2.1.2 Sensor(图像传感器)

Sensor 是核心中的核心。目前主流是索尼和三星的 CMOS 传感器。你需要关注这几个关键指标:

  • 像素尺寸(Pixel Pitch):1.0μm、0.8μm 甚至更小。越小分辨率越高,但信噪比越差。
  • 动态范围(DR):决定了能同时看清亮部和暗部的能力。
  • 帧率(FPS):30fps 是基础,60fps 是门槛,120fps 以上需要高速接口。
  • 读出噪声(Read Noise):直接影响暗光下的画质。

嗯,这里要注意,Sensor 的 HDR 模式 现在越来越重要。我见过不少项目,Sensor 支持多帧 HDR,但 ISP 的 pipeline 没对齐,导致合成时出现鬼影。所以选 Sensor 时,一定要和 ISP 的 HDR 融合算法一起评估。

2.1.3 VCM 与 Driver IC

VCM 本质上是一个微型电磁铁,通过改变电流大小来调整磁场,从而推动镜头上下移动。Driver IC 就是控制这个电流的。

为什么要把它们放在一起讲?因为这两个器件是闭环控制的关系。Driver IC 需要读取 VCM 的位置反馈(通常是霍尔传感器),然后做 PID 调节。你想想看,如果 Driver IC 的 PID 参数没调好,对焦就会来回震荡,也就是我们常说的“呼吸效应”。

警告: 我曾经在一个项目中,为了省成本,用了便宜的 Driver IC,结果它的 DAC 精度不够,导致对焦步进不均匀。拍近物时还好,一拍远景,画面总是差那么一点点清晰度。最后不得不换料,项目延期了两周。所以,Driver IC 的 DAC 位数和线性度,千万别省。

2.2 MIPI 接口协议

Sensor 把图像数据传出来,走的是什么路?目前手机 Camera 领域,MIPI(Mobile Industry Processor Interface) 是的主流。它是一套差分信号协议,专门为移动设备设计,功耗低、抗干扰强。

MIPI CSI(Camera Serial Interface) 是 Camera 专用的物理层和协议层。我们通常关注这几个点:

  • Lane 数量:1-lane、2-lane、4-lane。数据量越大,需要的 Lane 越多。4K@60fps 通常需要 4-lane。
  • 速率:每 Lane 的速率,单位是 Mbps。比如 2.5Gbps/lane。
  • DPHY 与 CPHY:DPHY 是经典方案,CPHY 是后来推出的,用三线差分,带宽更高。

我个人的经验是,MIPI 的走线布局是硬件工程师最容易出问题的地方。差分对之间要等长,阻抗要控制,屏蔽要做好。否则,你会在图像上看到一些莫名其妙的条纹或噪点。

关键点: MIPI 不仅仅是物理层。它还定义了 CSI-2 协议层,包括帧起始(FS)、帧结束(FE)、行起始(LS)、行结束(LE)等同步包。ISP 就是靠这些包来解析数据流的。如果 Sensor 输出的同步包时序不对,ISP 就会丢帧或错位。

2.3 ISP 与 AP 之间的数据流

好,现在 Sensor 的数据通过 MIPI 传出来了,接下来怎么到 ISP,再到 AP(应用处理器)?

这里有两种主流架构:

  1. 独立 ISP 架构:Sensor -> MIPI -> 独立 ISP 芯片 -> 处理完的 YUV/RAW -> AP。
  2. 集成 ISP 架构:Sensor -> MIPI -> AP 内部的 ISP 模块 -> 处理完的数据直接给 AP 的显示或编码模块。

现在大多数中高端手机用的是第二种,也就是 ISP 集成在 SoC 里。但不管哪种,数据流的逻辑是一样的:

  • RAW 域:Sensor 直接输出的原始数据,包含拜耳阵列信息。ISP 在这里做黑电平校正、去噪、去马赛克等。
  • RGB 域:经过去马赛克后,变成 RGB 三通道数据。这里做白平衡、颜色校正。
  • YUV 域:最终输出给 AP 或编码器的格式。Y 是亮度,UV 是色度。这里做边缘增强、降噪、色调映射。

你想想看,如果 ISP 和 AP 之间的带宽不够,或者 buffer 管理不当,就会出现预览卡顿或拍照延迟。我遇到过最头疼的一个 case,是 ISP 处理完一帧数据后,AP 的驱动层没有及时释放 buffer,导致整个 pipeline 被堵死,预览帧率直接掉到 15fps。

下面这张图,是我自己总结的 Camera 系统数据流框架,你可以对照着理解:

Camera 系统数据流框架图 Lens + VCM Sensor MIPI CSI ISP AP / Memory 数据流说明: 1. 光线经 Lens 聚焦到 Sensor 感光面 2. Sensor 完成光电转换,输出 RAW 数据 3. 通过 MIPI CSI 接口传输到 ISP ISP 处理流程: RAW 域:BLC、去噪、去马赛克 RGB 域:AWB、CCM、Gamma YUV 域:边缘增强、NR、色调映射

从这张图你可以看到,整个链路是串行的,任何一个环节的延迟都会影响最终体验。我建议你在做系统设计时,一定要把 端到端延迟 作为关键指标来约束。比如从 Sensor 曝光开始,到 AP 拿到第一帧预览数据,这个时间不能超过 100ms,否则用户就会觉得“相机启动慢”。

个人经验: 我曾经在一个项目中,为了优化启动速度,把 ISP 的初始化流程和 Sensor 的 streaming 流程做了并行化。Sensor 一边出图,ISP 一边加载参数。这样大概节省了 30ms 的启动时间。但前提是,ISP 的 pipeline 必须支持动态参数更新,否则容易出问题。

好了,这一章的内容就到这里。Camera 硬件组成和 MIPI 接口是基础中的基础,数据流是理解整个系统的骨架。把这些搞清楚了,后面讲 ISP 的各个模块时,你就能知道它们各自在哪个环节发挥作用。