海思ISP AF对焦与Sensor配置联调实战 - 第2节

2.1 图像传感器类型:CMOS 与 CCD 的工程抉择

在 ISP 调试与 AF 对焦联调中,传感器是光信号到电信号的第一级转换器。当前主流方案为 CMOS(互补金属氧化物半导体) 与 CCD(电荷耦合器件) 两种类型。海思平台绝大多数项目采用 CMOS 传感器,但在某些特殊工业或安防场景下仍需了解 CCD 的差异。

对比维度 CMOS CCD
读出方式 每个像素独立放大与读出,行/列寻址 全局电荷逐行转移至输出放大器
功耗 低(单电源,集成度高) 高(多路偏压,垂直/水平驱动)
噪声水平 固定模式噪声(FPN)较明显,需 ISP 校正 读出噪声低,均匀性好
帧率 高(支持 ROI 窗口裁剪提速) 较低(全局转移限制)
AF 对焦适配 支持 PDAF/Contrast AF 混合,海思主流 仅 Contrast AF,速度慢
典型应用 手机、安防、车载、AI 相机 工业检测、天文、医疗
工程提示: 海思 ISP 链路对 CMOS 传感器的 MIPI/Sub-LVDS 接口原生支持,无需额外电平转换。若项目必须使用 CCD,需外接 AFE(模拟前端)与 FPGA 桥接,增加 BOM 成本与调试周期。
CMOS 与 CCD 像素读出架构对比 CMOS 有源像素(APS) 像素 像素 像素 像素 像素 像素 列读出 CCD 电荷转移 像素 像素 像素 像素 像素 像素 → 水平移位寄存器 → 输出

2.2 Sensor 驱动模型:I2C 与 SPI 总线

海思 ISP 通过 I2C 或 SPI 总线与 sensor 进行寄存器读写,完成初始化、曝光控制、增益设置、AF 马达驱动等操作。两种总线在速率、引脚数、从机数量上各有优劣。

2.2.1 I2C 总线(最常用)

  • 物理层: SCL(时钟)+ SDA(数据),2 线制,半双工。
  • 速率: 标准模式 100kHz,快速模式 400kHz,高速模式 3.4MHz。海思平台常用 400kHz。
  • 寻址: 7 位或 10 位从机地址,sensor 通常为 7 位(如 0x30、0x6C)。
  • 优点: 引脚少,支持多从机,适合寄存器配置类操作。
  • 缺点: 速率受限,长帧配置时需拆分写入。

2.2.2 SPI 总线(高速场景)

  • 物理层: SCLK(时钟)+ MOSI(主出从入)+ MISO(主入从出)+ CS(片选),4 线制,全双工。
  • 速率: 典型 10~50MHz,适合批量寄存器下载或固件升级。
  • 优点: 速率高,无应答延迟,可连续 burst 写入。
  • 缺点: 引脚多,每个从机需独立 CS,PCB 布局要求高。
对比项 I2C SPI
引脚数 2(SCL+SDA) 4(SCLK+MOSI+MISO+CS)
最大速率 3.4MHz(HS 模式) 50MHz+
传输方式 半双工,带应答 全双工,无应答
多从机 地址复用,无需额外引脚 每从机需独立 CS
海思典型用途 sensor 寄存器配置、AF 马达控制 sensor 固件升级、高速数据读取
联调要点: 海思 ISP 驱动中,I2C 控制器通常挂载在 I2C-2 或 I2C-3 总线上。调试时务必用示波器测量 SCL/SDA 波形,确认地址应答位(ACK)是否正常。常见问题:上拉电阻缺失导致 ACK 丢失、总线电容过大导致上升沿变缓。
I2C 与 SPI 总线拓扑对比 I2C 总线(2 线) 主控(ISP) SCL SDA Sensor1 Sensor2 AF IC SPI 总线(4 线) 主控(ISP) SCLK MOSI MISO Sensor CS Flash CS2

2.3 Sensor 寄存器配置基础

sensor 的寄存器配置是 ISP 调试的起点。每个寄存器控制一个具体的模拟或数字功能,配置错误将直接导致图像异常或 AF 无法对焦。以下为海思平台最常见的寄存器分类与配置方法。

2.3.1 寄存器分类

  • 芯片 ID 寄存器: 只读,用于验证 sensor 型号与通信是否正常。例如 OV5640 的 CHIP_ID 为 0x300A~0x300B。
  • 模式控制寄存器: 设置分辨率、帧率、HDR 模式、binning/subsampling 等。
  • 曝光与增益寄存器: 粗曝光(COARSE_INTEGRATION_TIME)、细曝光(FINE_INTEGRATION_TIME)、模拟增益(ANALOG_GAIN)、数字增益(DIGITAL_GAIN)。
  • AF 控制寄存器: VCM 马达驱动电流、位置码、步进模式、回零操作。
  • 输出格式寄存器: 数据位宽(10bit/12bit)、输出顺序(BGGR/RGGB)、MIPI 通道数。

2.3.2 典型配置流程(I2C 写入示例)

以下为海思 HI3516 平台通过 I2C 配置 sensor 初始化序列的伪代码:

// 海思 I2C 写入 sensor 寄存器示例(基于 HI_MPI_I2C 接口)
HI_S32 sensor_i2c_write(HI_U32 dev_addr, HI_U16 reg_addr, HI_U8 reg_val)
{
    HI_I2C_DATA_S stI2cData;
    HI_U8  au8Data[3];

    au8Data[0] = (reg_addr >> 8) & 0xFF;   // 寄存器高字节
    au8Data[1] = reg_addr & 0xFF;          // 寄存器低字节
    au8Data[2] = reg_val;                  // 写入值

    stI2cData.devAddr   = dev_addr;        // sensor I2C 从机地址
    stI2cData.regAddr   = 0;               // 无需额外 regAddr
    stI2cData.data      = au8Data;
    stI2cData.len       = 3;
    stI2cData.bIsRegAddr8Bit = HI_FALSE;   // 16 位寄存器地址

    return HI_MPI_I2C_Write(&stI2cData);
}

// 初始化序列示例:设置 1920x1080 @30fps
sensor_i2c_write(0x30, 0x0100, 0x00);     // 软件 standby
sensor_i2c_write(0x30, 0x0340, 0x0465);   // 帧高 lines
sensor_i2c_write(0x30, 0x0342, 0x0B40);   // 行长度 PCLK
sensor_i2c_write(0x30, 0x3008, 0x02);     // 输出格式 RAW10
sensor_i2c_write(0x30, 0x0100, 0x01);     // 启动 streaming
常见陷阱: 寄存器地址位宽(8bit vs 16bit)必须与 sensor datasheet 一致。部分 sensor 使用 8 位地址 + 8 位数据,另一些使用 16 位地址 + 8 位数据。配置错误会导致写入位置偏移,图像出现条纹或全黑。

2.3.3 寄存器配置与 AF 对焦的关联

AF 对焦依赖 sensor 的 VCM 马达驱动寄存器 与 帧同步信号。典型配置参数包括:

寄存器功能 典型地址(OV5640) 配置值说明
VCM 使能 0x3600 bit[0]=1 开启马达驱动
VCM 位置码 0x3601~0x3602 10bit 或 12bit 位置值,对应镜头位移
VCM 步进模式 0x3603 0x01 单步模式,0x02 连续扫描模式
VCM 回零 0x3604 写 0x01 触发镜头回到初始位置
帧同步触发 0x3820 bit[1] 控制 VSYNC 与 VCM 更新时序
联调技巧: 在 AF 调试初期,建议先通过 I2C 直接写入 VCM 位置码(如 0x3601=0x80, 0x3602=0x00),观察镜头是否物理移动。若镜头不动,优先检查 VCM 供电(通常为 2.8V)与 I2C 通信波形。这是排除 sensor 驱动层问题的快速方法。
Sensor 寄存器配置与 AF 控制链路 ISP 主控 I2C 控制器 Sensor 寄存器 VCM 马达驱动 曝光/增益 输出格式 AF 位置码 AF 联调关键寄存器 VCM 位置码(0x3601~0x3602) 帧同步触发(0x3820 bit[1])

2.4 本章小结

  • CMOS 传感器凭借低功耗、高帧率、PDAF 支持成为海思 ISP 平台首选;CCD 仅在特殊工业场景保留。
  • I2C 总线是 sensor 寄存器配置与 AF 马达控制的主要通信方式,SPI 用于高速批量传输。
  • 寄存器配置必须严格遵循 datasheet 的地址位宽、时序要求,曝光/增益与 AF 位置码是联调的核心寄存器组。
  • 工程调试中,通过 I2C 直接写入 VCM 位置码验证马达响应,是快速定位 sensor 驱动层问题的有效手段。