1. 课程导论与硬件基础:瑞芯微平台Camera子系统概述

各位同学,欢迎来到《瑞芯微Camera Sensor驱动与3A算法协同调优》的第一章。

做嵌入式图像这行,尤其是跟瑞芯微平台打交道,你首先得搞清楚一件事:Camera子系统到底长什么样?它怎么跟外界通信的?

我刚开始接触RK平台时,也踩过不少坑。比如MIPI的D-PHY电平没配对,导致图像全是条纹。后来才明白,硬件基础不牢,后面调3A算法就是空中楼阁。

这一章,我们就从硬件层面把Camera子系统拆开看看。

1.1 瑞芯微Camera子系统整体架构

先看一张整体框图,我习惯把Camera子系统分成三层:

核心分层:

  • 物理层: Sensor、镜头、补光灯、电源管理
  • 接口层: MIPI CSI / DVP 物理接口、I2C/SPI控制总线
  • 处理层: ISP(图像信号处理器)、VIP(视频输入处理器)、DDR

说白了,Sensor拍到的原始数据,通过MIPI或DVP传给ISP,ISP做完坏点校正、去噪、白平衡等处理,再送到编码器或显示设备。而I2C/SPI总线,就是CPU用来控制Sensor的“手”——设置曝光、增益、帧率,全靠它。

瑞芯微Camera子系统架构图 物理层 CMOS Sensor 镜头 / VCM 补光灯 / 电源 接口层 MIPI CSI / DVP I2C / SPI 控制总线 GPIO / 中断 处理层 ISP (图像信号处理) VIP (视频输入) DDR / 编码器 I2C/SPI 控制 💡 关键说明: • 数据流方向:Sensor → MIPI/DVP → ISP → 内存/显示 • 控制流方向:CPU → I2C/SPI → Sensor 寄存器 • 我在项目中遇到过:MIPI时钟和数据线的PCB等长没做好,导致 高速信号眼图闭合,图像出现随机条纹。后来重新Layout才解决。 • 建议:设计阶段就要跟硬件工程师对齐MIPI走线规则。

1.2 Sensor硬件接口:MIPI CSI 与 DVP

目前主流的Sensor接口就两种:MIPI CSI(Camera Serial Interface)和DVP(Digital Video Port)。

MIPI是差分串行接口,速度快、抗干扰强,适合高分辨率高帧率场景。DVP是并行接口,老一些,但调试起来直观。

特性 MIPI CSI (D-PHY) DVP
信号类型 差分对(CLK+/-,DATA+/-) 并行数据线 + 同步信号
最大速率 单Lane可达2.5Gbps 一般不超过100MHz
抗干扰 强(共模抑制) 弱(易受串扰)
线数 1~4 Lane + 时钟 10~12根(数据+同步)
适用场景 高清、高速、长距离 低分辨率、低成本

我的经验: 调试MIPI时,一定要先确认D-PHY的电压域。RK平台的MIPI RX通常支持1.2V或1.8V,如果Sensor输出1.8V而RK侧配成1.2V,图像会直接黑屏。我曾经因为这个排查了整整两天,最后发现是原理图上的电平标错了。

1.3 电气特性与信号完整性

嗯,这里要注意。MIPI是高速信号,电气特性非常敏感。

几个关键参数:

  • 差分阻抗: 100Ω ±10%(PCB走线必须严格匹配)
  • 共模电压: 200mV(D-PHY v1.2)
  • 摆幅: 200~400mV(差分)
  • 上升时间: 150ps左右

你想想看,如果PCB上MIPI走线长了5mm,或者打了两个过孔,信号质量可能就崩了。我建议在调试阶段,先用示波器测一下MIPI眼图。眼图清晰、开口大,说明硬件没问题;如果眼图闭合,先查PCB走线,再查电源纹波。

⚠️ 避坑指南: 我曾经在一个项目里,Sensor和SoC距离超过20cm,用了FPC排线连接。结果MIPI信号衰减严重,图像全是噪点。后来加了retimer芯片才解决。所以,MIPI走线尽量短,超过15cm就要考虑加驱动芯片。

1.4 I2C/SPI控制总线详解

控制总线是CPU和Sensor沟通的桥梁。Sensor的寄存器配置、曝光、增益、白平衡参数,全通过它来写。

瑞芯微平台最常用的是I2C,偶尔也用SPI(比如一些高帧率Sensor)。

特性 I2C SPI
线数 2线(SCL, SDA) 4线(SCLK, MOSI, MISO, CS)
速率 标准100kHz / 快速400kHz / 高速3.4MHz 可达几十MHz
寻址方式 7位或10位地址 片选CS选择设备
通信方式 半双工 全双工
适用场景 配置寄存器、读取状态 批量数据传输、高帧率配置

在驱动开发中,I2C的时序很重要。比如Sensor的I2C地址是0x6C还是0x36?这取决于芯片的ADDR引脚电平。我见过不少新手,地址配错了,I2C通信一直NACK,还以为是硬件坏了。

调试I2C的步骤(我的习惯):

  1. 用示波器抓SCL和SDA波形,确认有正常的Start/Stop条件。
  2. 检查设备地址是否正确(7位地址左移1位才是写地址)。
  3. 确认ACK信号:Sensor在第9个SCL周期拉低SDA。
  4. 如果一直NACK,先测Sensor供电和复位引脚。

SPI用得少一些,但有些Sensor(比如全局快门的)会用它。SPI的优势是速度快,适合一次性写入大量寄存器配置。但要注意,SPI的片选信号必须干净,否则容易误触发。

1.5 本章小结

这一章我们覆盖了瑞芯微Camera子系统的三层架构、MIPI与DVP的硬件差异、电气特性要点,以及I2C/SPI控制总线的使用细节。

说白了,硬件基础是驱动开发的根基。MIPI的差分阻抗、I2C的地址配置、电源的纹波,任何一个环节出问题,都会让后面的3A算法调优无从下手。