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