2. RK平台AF硬件架构:VCM马达类型、IR-CUT驱动与LED补光灯联动

自动对焦(AF)系统的硬件架构是决定对焦速度、精度和稳定性的物理基础。在瑞芯微RK平台上,AF硬件主要由三大部分构成:VCM(音圈马达)、IR-CUT(红外截止滤光片切换器)以及LED补光灯。这三者并非独立工作,而是通过ISP(图像信号处理器)的调度实现联动,以应对不同光照和场景下的对焦需求。

2.1 VCM马达类型:开环与闭环

VCM是驱动镜头移动的核心执行器。根据反馈机制的不同,分为开环(Open Loop)和闭环(Closed Loop)两种类型。两者的差异直接影响AF的精度、功耗和调试复杂度。

特性 开环VCM 闭环VCM
反馈机制 无位置反馈,依赖驱动电流估算位置 内置霍尔传感器,实时反馈镜头位置
对焦精度 中等,受温度、重力、老化影响较大 高,可精确控制到亚微米级
对焦速度 快(无反馈延迟) 较快(需处理反馈信号,但可快速收敛)
功耗 低 较高(传感器持续工作)
调试复杂度 低(仅需标定电流-位置曲线) 高(需标定霍尔ADC-位置曲线,PID参数整定)
典型应用 低端摄像头、固定场景监控 高端手机、车载、工业相机
调试提示: 在RK平台上,开环VCM的调试重点在于 DAC Code与镜头位移的线性度标定;而闭环VCM则需要重点关注 霍尔ADC值的稳定性 以及 PID控制器的比例、积分、微分参数,避免震荡或响应过慢。

2.1.1 开环VCM驱动与标定

开环VCM通过I2C接口向驱动芯片(如DW9714、AK7348)写入DAC值,驱动芯片输出对应的电流驱动马达。镜头位置与DAC值呈近似线性关系,但存在迟滞(Hysteresis)和非线性区。

// RK平台开环VCM驱动示例(基于Linux V4L2子设备)
static int rk_vcm_set_position(struct v4l2_subdev *sd, u32 code)
{
    struct rk_vcm_device *vcm = to_rk_vcm(sd);
    u16 dac_code;

    // 将归一化code(0-1023)映射到实际DAC范围
    dac_code = (code * vcm->dac_max) / 1023;

    // 通过I2C写入驱动芯片
    return regmap_write(vcm->regmap, vcm->dac_reg, dac_code);
}

2.1.2 闭环VCM驱动与PID控制

闭环VCM除了写入目标位置外,还需读取霍尔传感器的ADC值作为反馈。RK平台的ISP驱动通常内置一个PID控制器,用于计算误差并调整输出。

// 闭环VCM PID控制简化逻辑
static int rk_af_pid_controller(struct rk_af_device *af, u16 target_adc)
{
    int error = target_adc - af->current_adc;
    af->integral += error;
    int derivative = error - af->prev_error;
    int output = (af->kp * error) + (af->ki * af->integral) + (af->kd * derivative);
    af->prev_error = error;

    // 限幅并写入DAC
    output = clamp(output, 0, af->dac_max);
    return rk_vcm_set_dac(af, output);
}
关键参数对比: 开环VCM的标定表通常为 16x16 或 32x32 的网格插值;闭环VCM的标定表则为 霍尔ADC值与实际位移 的映射表,精度要求更高。
开环 vs 闭环 VCM 架构对比 开环 VCM ISP 计算 DAC 写入 VCM 驱动 镜头移动 闭环 VCM PID 控制器 DAC 写入 VCM + 霍尔 镜头位置反馈 霍尔 ADC 反馈 开环无反馈,闭环通过霍尔传感器形成位置闭环,精度更高但调试更复杂

2.2 IR-CUT驱动与AF联动

IR-CUT(红外截止滤光片)用于在白天(可见光模式)和夜晚(红外模式)之间切换。在RK平台上,IR-CUT的切换时机必须与AF的搜索策略联动,否则会导致对焦失败或图像偏色。

  • 白天模式: IR-CUT切入,滤除红外光。AF使用可见光下的对比度(Contrast)或相位差(PDAF)进行对焦。
  • 夜晚模式: IR-CUT切出,允许红外光进入。AF需要切换到红外光下的对焦曲线,因为红外光的折射率与可见光不同,导致最佳焦平面偏移。
  • 联动策略: RK平台通过ISP的AEC(自动曝光控制)检测环境照度,当照度低于阈值时,先切换IR-CUT,再触发AF重新对焦。
常见问题: 如果IR-CUT切换后没有重新触发AF,图像会出现 “焦点漂移” 现象,即画面变模糊。务必在驱动中注册IR-CUT切换的回调函数,通知AF模块重置对焦状态。
// IR-CUT切换回调示例
static int rk_ircut_switch_callback(struct rk_ircut_device *ircut, bool ir_mode)
{
    struct rk_af_device *af = ircut->af_priv;
    
    // 通知AF模块:IR-CUT已切换,需要重新对焦
    af->need_restart = true;
    
    // 如果是红外模式,加载红外对焦曲线
    if (ir_mode) {
        af->focus_curve = &af->ir_curve;
    } else {
        af->focus_curve = &af->visible_curve;
    }
    
    return 0;
}
IR-CUT 与 AF 联动流程 AEC 检测环境照度 照度 < 阈值? 否 保持可见光模式 是 切换 IR-CUT 至红外 触发 AF 重新对焦

2.3 LED补光灯与AF联动

在极暗光环境下(< 1 lux),即使IR-CUT切出,传感器也可能无法获得足够的对比度进行AF。此时需要LED补光灯提供辅助照明。RK平台的LED补光灯通常支持两种模式:常亮照明 和 AF辅助脉冲。

  • AF辅助脉冲: 在AF搜索期间,LED以高亮度短脉冲方式点亮,提供瞬时照明,帮助AF算法找到峰值。对焦完成后,LED熄灭或转为低亮度常亮。
  • 联动时序: LED脉冲的触发必须与AF的扫描窗口同步。通常由ISP的AF硬件状态机直接控制GPIO,延迟要求 < 1ms。
  • 避免闪烁: 如果LED脉冲频率与传感器帧率不匹配,可能导致图像出现明暗条纹。建议将LED脉冲频率设置为帧率的整数倍。
性能指标: 在RK3588平台上,配合闭环VCM和LED辅助脉冲,暗光(0.5 lux)下的AF对焦时间可从 800ms 降低至 250ms,提升约 3 倍。
// LED补光灯与AF联动控制(伪代码)
void rk_af_led_control(struct rk_af_device *af, bool on)
{
    if (on) {
        // 开启LED,设置为高亮度脉冲模式
        gpio_set_value(af->led_gpio, 1);
        // 启动定时器,脉冲宽度 10ms
        mod_timer(&af->led_timer, jiffies + msecs_to_jiffies(10));
    } else {
        // 关闭LED
        gpio_set_value(af->led_gpio, 0);
    }
}

// 在AF扫描开始时调用
void rk_af_start_search(struct rk_af_device *af)
{
    rk_af_led_control(af, true);
    // ... 执行AF扫描算法 ...
    rk_af_led_control(af, false);
}
LED 补光灯与 AF 联动时序 t0 t1 t2 t3 AF 空闲 AF 扫描中 AF 锁定 LED 关闭 LED 脉冲 LED 关闭 LED 关闭 LED 脉冲宽度通常为 5-15ms,与 AF 扫描窗口同步,避免干扰传感器曝光

2.4 硬件架构总结

RK平台的AF硬件架构是一个多组件协同的系统。VCM提供物理驱动力,IR-CUT保证不同光谱下的成像质量,LED补光灯则拓展了暗光环境下的对焦能力。三者的联动依赖ISP的精确时序控制和状态机调度。

组件 核心功能 与AF的联动方式 调试关键点
VCM(开环) 驱动镜头移动 DAC值直接控制位置 线性度标定、迟滞补偿
VCM(闭环) 驱动镜头移动并反馈位置 PID控制器闭环调节 霍尔ADC标定、PID参数整定
IR-CUT 切换可见光/红外模式 切换后触发AF重新对焦 切换延迟、焦点偏移补偿
LED补光灯 提供辅助照明 AF扫描期间发送脉冲 脉冲宽度、频率、与帧率同步
调试建议: 在RK平台调试初期,建议先单独验证每个硬件组件的驱动是否正常(如VCM能否平滑移动、IR-CUT切换是否干脆、LED能否正常点亮),再进行联动测试。使用RK提供的 RKISP_Tuner 工具可以实时监控各组件状态,大幅提升调试效率。