微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > OV5640 YUV的自动对焦功能为何没有开启

OV5640 YUV的自动对焦功能为何没有开启

时间:10-02 整理:3721RD 点击:
OV5640YUV的sensor,自动对焦功能是自己带的。
现在我们在MT6572的平台上做了如下配置,只能显示出来一个对焦框,但是实际无对焦功能 。
ov5640 gc0328 都是后CAM,而gc0329是前CAM
ProjectConfig.mk配置如下:
CUSTOM_HAL_IMGSENSOR=ov5640_yuv_af gc0329_yuv gc0328_yuv
CUSTOM_HAL_MAIN_IMGSENSOR=ov5640_yuv_af gc0328_yuv
CUSTOM_KERNEL_IMGSENSOR=ov5640_yuv_af gc0329_yuv gc0328_yuv
CUSTOM_KERNEL_MAIN_IMGSENSOR=ov5640_yuv_af gc0328_yuv
CUSTOM_HAL_LENS=sensordrive dummy_lens
CUSTOM_HAL_MAIN_LENS=sensordrive
CUSTOM_KERNEL_LENS=sensordrive dummy_lens
CUSTOM_KERNEL_MAIN_LENS=sensordrive
lenslist.cpp 如下的配置:


  1. MSDK_LENS_INIT_FUNCTION_STRUCT LensList[MAX_NUM_OF_SUPPORT_LENS] =
  2. {
  3.         {DUMMY_SENSOR_ID, DUMMY_LENS_ID, "Dummy", pDummy_getDefaultData},

  4. #if defined(SENSORDRIVE)
  5.         //{DUMMY_SENSOR_ID, SENSOR_DRIVE_LENS_ID, "kd_CAMERA_hw", pSensorDrive_getDefaultData},        
  6.         {OV5640_SENSOR_ID, SENSOR_DRIVE_LENS_ID, "kd_camera_hw", pSensorDrive_getDefaultData},        
  7.     //  for backup lens, need assign correct SensorID
  8.     //{OV5642_SENSOR_ID, SENSOR_DRIVE_LENS_ID, "kd_camera_hw", pSensorDrive_getDefaultData},
  9. #endif

  10. #if defined(OV8825AF)
  11.                 {OV8825_SENSOR_ID, OV8825AF_LENS_ID, "OV8825AF", pOV8825AF_getDefaultData},
  12. #endif
  13. #if defined(FM50AF)
  14.         {DUMMY_SENSOR_ID, FM50AF_LENS_ID, "FM50AF", pFM50AF_getDefaultData},
  15. #endif

  16.     //  for new added lens, need assign correct SensorID
  17. #if defined(MT9P017AF)
  18.         {MT9P017mipi_SENSOR_ID, MT9P017AF_LENS_ID, "MT9P017AF", pMT9P017AF_getDefaultData},
  19. #endif

  20. };

复制代码

cfg_ftbl_ov5640_yuv_af.h 如下的配置


  1.         //  AF Mode
  2.         CONFIG_FEATURE_SD(FID_AF_MODE,
  3.             BY_DEFAULT(AF_MODE_AFS),
  4.             AF_MODE_AFS,AF_MODE_INFINITY
  5.         )
  6.         //......................................................................
  7. #if 0
  8.         //  AF Meter
  9.         CONFIG_FEATURE_SD(FID_AF_METERING,
  10.             BY_DEFAULT(AF_METER_SPOT),
  11.             AF_METER_SPOT, AF_METER_MATRIX
  12.         )
  13. #endif

复制代码

现在在进CAM时能听到马达的声音,这个应当是开启马达电源发出来的。
我现在不知道还有哪些东西没有配对?
请大家指点!

兄弟,你是的ov5640是什么借口的,留个联系方式。

YUV接口。

你的摄像对自带的AF,有没有自带相关AF方面的驱动。还有,你确定你的这个AF功能已经注册上去了?

现在打LOG能看到他lensSearch是成功了。

你在init.rc里面注册了没?

马达供电了么

马达肯定供电了,进CAM时都有声

有sensordrive 这个是MTK原始就有的。

但是有些AF驱动是摄像头自带的!

是不是对焦算法不对!最好找FAE确认一下!

还没有跑到这个SENSOR的AF的驱动代码。所以应当与这个还没有关系的。

[DESCRIPTION]
在已经有一颗YUV 的driver,并且sensor内置AF core的情况下要实现YUV + AF可以通过以下方式来做,请step by step check
[SOLUTION]
1,  确定是哪一颗VCM并找FAE要相关AF init setting
2,  确定控制方式的命令,需要找FAE要setting,start signal focus,start continue focus,set AF window,query AF state ,stop focus 这些函数的写法,具体需要参照第9步的的feature Ctrl需要填写的case
3,  配置makefile:
CUSTOM_HAL_IMGSENSOR = ××××_yuv_af
CUSTOM_KERNEL_IMGSENSOR = ××××_yuv_af
CUSTOM_HAL_MAIN_IMGSENSOR = ××××_yuv_af
CUSTOM_KERNEL_MAIN_IMGSENSOR = ××××_yuv_af
CUSTOM_HAL_LENS = sensordrive
CUSTOM_KERNEL_LENS = sensordrive
CUSTOM_HAL_MAIN_LENS = sensordrive
CUSTOM_KERNEL_MAIN_LENS = sensordrive
4,  配置AF
alps\mediatek\custom\common\hal\lens\src\lenslist.cpp    LensList:


5,  修改文件夹名字以及文件名字, ××××_yuv改成××××_yuv_af,主要修改kernel下的folder以及文件名称,hal下面的folder名称
6,  在kd_sensorlist.h 添加:


7,  在sensorlist.cpp里面 添加AF部分的定义:


8,  打开feature table  (cfg_ftbl_****.h) AF相关
        AF Mode这里 default不能配置成INFINITY,支持哪些mode就需要将哪些MODE都列出来,如下这种配置就不支持continue focus mode,需要添加上去


9,  feature Ctrl Function
****FeatureControl  function
SENSOR_FEATURE_INITIALIZE_AF
Init AF的setting
SENSOR_FEATURE_GET_AF_STATUS
Get the state
SENSOR_FEATURE_GET_AF_INF
SENSOR_FEATURE_GET_AF_MACRO
SENSOR_FEATURE_SET_AF_WINDOW
When Sensor AF could do focus in an assigned area. We pass a parameter “*zone_addr” to achieve this, which is the face detection (FD) window. It’s optional by sensor
SENSOR_FEATURE_MOVE_FOCUS_LENS
Not in use right now. An interface to ask sensor to step to specified position
SENSOR_FEATURE_CONSTANT_AF
Send constant focus command
SENSOR_FEATURE_SINGLE_FOCUS_MODE
SENSOR_FEATURE_CANCEL_AF
SENSOR_FEATURE_GET_AF_MAX_NUM_FOCUS_AREAS
ICS default touch focus,如果sensor支持AF,则填1,如果不支持,则要填0SENSOR_FEATURE_GET_AE_MAX_NUM_METERING_AREAS
如果sensor支持config AE window,则填1,如果不支持,则要填0。
写好以上这些函数,应该就ok了,写法可以参照OV3640AF的code来写~

sunicai,你说的是OV5640_sensor.c 中需要有类似如下的代码吗?
static void OV5642_FOCUS_AD5820_Get_AF_Inf(UINT32 *pFeatureReturnPara32)
{
    *pFeatureReturnPara32 = 0;
}
static void OV5642_FOCUS_AD5820_Get_AF_Macro(UINT32 *pFeatureReturnPara32)
{
    *pFeatureReturnPara32 = 1023;
}

//update focus window
//@input zone[] addr
static void OV5642_FOCUS_AD5820_Set_AF_Window(zone_addr)
{//update global zone
    UINT8 state = 0x8F;
    //input:
    UINT32 times = 1;
    UINT32 FD_XS = 4;
    UINT32 FD_YS = 3;       

这个我看过的。现在也是按他们的方法配的。

老兄,虽然是内置的,还是需要AF FW的,
你档下AF FW 看下

小编你这问题搞定没,我这有颗4E1的外置对焦马达跟你一样的问题

现在可以对焦,但是效果不好,只是在初始化时掉用了一下AF的初始化,就有对焦功能了。

小编,我的初始化有条用af的初始化,怎么都没有用呢?

辉哥!你这个后来是怎么弄好的啊.说说啊!


就是加了AF的初始化。

我现在OV5640连对焦框都没有啊

还有就是4.1的系统对YUV的lens设置都是要跟代码里面自带的OV3640一样的操作吗?

对应的宏开了,就会有框的
我的一直有框。

学习中,AF已经搞了好久了

没框的是projectconfig里LENS没有配成sensordrive.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top