CAF 审查测试
■ Actuator Hysteresis/Damping 双向完整扫描磁滞
■ Actuator range test 开环马达范围
■ Actuator settle time 马达稳定时间
■ Focus value contrast and tail 对焦值曲线的反差与拖尾
■ Distance to lens mapping 镜头距离映射
如有错误欢迎指正。
1. Comlete RFI worksheet
xxx_actuator.xml 的initialCode 修改为RFI计算出来的。
initial finescan setepsize 设置为Num Steps Betweem Stat Points(Step size for each lens move),精确搜索步长。
Frame Delay Nor 镜头移动之间的帧延迟数,可以设置2/3, 3确保记录FV时镜头处于稳定状态。
根据RFI计算的值填入
infinity_index
Hyperfocal
120cm_index
60cm_index
50cm_index
40cm_index
30cm_index
20cm_index
14cm_index
10cm_index
7cm_index
Near_Limit_index
不要按照RFI这个需要拍摄iso12233 图卡,将测量数据与 20 cm、 30 cm 和 120 cm 距离对应的 Lens Position Tuning Values 组中AF Tuning 选项卡中的理论数据生成的参数进行对比。如果某些位置差异很大,则检查灵敏度是否错误,将灵敏度和10cm DAC更新到RFI,生成新的参数。 Near_Limit_index 其实最好为0.
Single Search – Index: 指数是物理距离与镜头位置的映射,其中指数 [0] 代表最近点,并逐步向代表无限远点的指数[n] 移动。指数决定着单次 AF 算法中的决策边界。建议将逻辑镜头位置的总体可移动范围设为[0 - 399],以确保多个马达与传感器的逻辑镜头位置相同。
2.AF 关闭 eeprom
eeprom dump 的数据
Autofocus data dump for EEPROM p24c64q_s5k3l6
Macro dac = 525
Infinity dac = 262
Macro margin = 0.250000
Infinity margin = -0.400000
Hall offset bias = 0
Hall register addr = 0
Lens Calibration Data: numberOfDistances: 0
镜头移动是通过编程数字(Digital)→模拟(Analog)控制执行器中的转换器(DAC).
未关闭eeprom , dac 和lens position 的关系。
Macro Dac 将镜头推到远郊无限远处的dac值。
Infinity Dac 将镜头推到近郊无限近处的dac值。
OTP中的Macro dac和Infinity dac都是面向前方测量的,我们需要使用Macro margin和Infinity margin 扩展镜头移动范围以覆盖facing_down_inf和facing_up_macro场景
dac 399–157
dac 0–588
Line 5626: 01-02 20:47:41.536 899 899 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[399] 157
Line 5627: 01-02 20:47:41.536 899 899 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[398] 158
Line 6023: 01-02 20:47:41.578 899 899 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[10] 578
.....
Line 6028: 01-02 20:47:41.578 899 899 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[5] 583
Line 6029: 01-02 20:47:41.579 899 899 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[4] 584
Line 6030: 01-02 20:47:41.579 899 899 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[3] 585
Line 6031: 01-02 20:47:41.579 899 899 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[2] 586
Line 6032: 01-02 20:47:41.579 899 899 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[1] 587
Line 6033: 01-02 20:47:41.579 899 899 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[0] 588
关闭eeprom
1.修改actuator.xml
initialCode 改成 0 ,表示初始从0 开始.
codePerStep 改为 2.5,马达行程为0~1024.
2. 关闭eeprom,修改xxx_eeprom.xml
Line 5567: 01-02 22:06:44.649 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[399] 0
Line 5568: 01-02 22:06:44.649 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[398] 2
Line 5569: 01-02 22:06:44.649 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[397] 5
Line 5570: 01-02 22:06:44.649 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[396] 7
Line 5571: 01-02 22:06:44.649 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[395] 10
Line 5572: 01-02 22:06:44.649 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[394] 12
................
Line 5964: 01-02 22:06:44.679 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[5] 985
Line 5965: 01-02 22:06:44.679 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[4] 987
Line 5966: 01-02 22:06:44.679 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[3] 990
Line 5967: 01-02 22:06:44.680 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[2] 992
Line 5968: 01-02 22:06:44.680 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[1] 995
Line 5969: 01-02 22:06:44.680 886 886 V CamX : [ VERB][SENSOR ] camxactuatordata.cpp:194 InitializeStepTable() Table[0] 997
3. log 设置
log 设置,打开AF(8),State(2),Sensor(2) 的log
# cat /vendor/etc/camera/camxoverridesettings.txt
overrideLogLevels=0x3F
logWarningMask=0x08000202
logInfoMask=0x08000202
logVerboseMask=0x08000202
enable3ADebugData=TRUE
dumpSensorEEPROMData=TRUE
enableTuningMetadata=TRUE
afFullsweep=3
enablePDLibLog=3
log 搜索
af_pdaf_proc_pd_single grid|af_pdaf_proc_pd_single roi|af_fullsweep_final|sweep_srch_far_to_near|af_fullsweep_srch_near_to_far|af_fullsweep_start_srch
注意:拍摄为待调试的设备进行拍摄。拍摄图像时,设备的朝向必须为横向。
4.Actuator Hysteresis/Damping
目的:测试马达磁滞,检查从无线远处移动至微距位置以及反向移动过程是否呈线性。
原理:从远端位置向近端位置扫描镜头,之后相反方向再次扫描镜头。两个方向的对焦峰值应该近乎相同。如果两个对焦峰值不同,则表示镜头模块存在严重迟滞
测试环境:500lux 以上的照明条件下,将ISO 12233分辨率测试卡放在距离三脚架上的设备30cm的远的地方,跑fullsweep 。
评判标准:excel 绘制fv 值于lensposition 的关系。如果两个方向的峰值相差10%,则表明该模块存在较大迟滞
数据处理:
关键字af_fullsweep_srch_far_to_near|af_fullsweep_srch_near_to_far|af_fullsweep_start_srch,利用excel 绘制fv 值于lensposition 的关系。
af_caf_util_get_value i:1
关闭otp 的Focusval 和 LensPosition 图形:
打开otp 的图形:
5.Actuator range test
目的:测试将检查微距和无限远时的边界范围。测试会检查镜头是否有足够的移动范围,可对焦微距/无限远处的物体
测试环境:在 500 lux 以上的光照条件下,将 ISO 12233 分辨率测试卡放置在距离三脚架上的设备 10 cm
远的位置,进行微距测试。在 200 cm 的位置重复执行测试,从而执行无限远测试。fullsweep
数据处理:
关键字af_fullsweep_srch_far_to_near|af_fullsweep_srch_near_to_far|af_fullsweep_start_srch,利用excel 绘制fv 值于lensposition 的关系。
如果绘制的关系图与微距和无限远(通过)图相似,则表明马达设置和 OTP 数据均正确。
如果绘制的关系图与微距和无限远(未通过)图相似,则表明马达设置和 OTP 数据有误。
查看高通的视频
把客观的事情做完
kba-201129174818_2_[iot][mm-camera][camera-tuning]
80-nk872-11_f_camera_3a_version_5.x_tuning_guide
80-NK872-11SC 版本 E
80-NK872-11 F
80-NK872-12 Rev. E
80-NK872-14SC 版本 K
80-NK872-14 Rev. K