⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 image_sensor.c

📁 MTK平台 OV7680 sensor yuv 驱动代码
💻 C
📖 第 1 页 / 共 4 页
字号:
            write_cmos_sensor(0x81, 0x07);
            write_cmos_sensor(0x28, 0x00);
            write_cmos_sensor(0xD5, 0x00);
            break;
        case CAM_EFFECT_ENC_GRAYSCALE:
            write_cmos_sensor(0x81, 0x07);
            write_cmos_sensor(0x28, 0x00);
            write_cmos_sensor(0xD5, 0x18);
            write_cmos_sensor(0xDD, 0x80);
            write_cmos_sensor(0xDE, 0x80);
            break;
        case CAM_EFFECT_ENC_SEPIA:
            write_cmos_sensor(0x81, 0x07);
            write_cmos_sensor(0x28, 0x00);
            write_cmos_sensor(0xD5, 0x18);
            write_cmos_sensor(0xDD, 0x40);
            write_cmos_sensor(0xDE, 0xa0);
            break;
        case CAM_EFFECT_ENC_COLORINV:
            write_cmos_sensor(0x81, 0x07);
            write_cmos_sensor(0xD5, 0x00);
            write_cmos_sensor(0x28, 0x80);
            break;
        case CAM_EFFECT_ENC_SEPIAGREEN:
            write_cmos_sensor(0x81, 0x07);
            write_cmos_sensor(0x28, 0x00);
            write_cmos_sensor(0xD5, 0x18);
            write_cmos_sensor(0xDD, 0x60);
            write_cmos_sensor(0xDE, 0x60);
            break;
        case CAM_EFFECT_ENC_SEPIABLUE:
            write_cmos_sensor(0x81, 0x07);
            write_cmos_sensor(0x28, 0x00);
            write_cmos_sensor(0xD5, 0x18);
            write_cmos_sensor(0xDD, 0xa0);
            write_cmos_sensor(0xDE, 0x40);
            break;
        case CAM_EFFECT_ENC_GRAYINV:
            ret = KAL_FALSE;
            break;
        case CAM_EFFECT_ENC_COPPERCARVING:
            ret = KAL_FALSE;
            break;
        case CAM_EFFECT_ENC_BLUECARVING:
            ret = KAL_FALSE;
            break;
        case CAM_EFFECT_ENC_CONTRAST:
            ret = KAL_FALSE;
            break;
        case CAM_EFFECT_ENC_EMBOSSMENT:
        case CAM_EFFECT_ENC_SKETCH:
        case CAM_EFFECT_ENC_BLACKBOARD:
        case CAM_EFFECT_ENC_WHITEBOARD:
        case CAM_EFFECT_ENC_JEAN:
        case CAM_EFFECT_ENC_OIL:
        default:
            ret = KAL_FALSE;
    }

    return ret;
}


/*****************************************************************************
 * FUNCTION
 *  set_OV7680_param_banding
 * DESCRIPTION
 *  OV7680 banding setting.
 * PARAMETERS
 *  para        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
kal_uint32 set_OV7680_param_banding(kal_uint32 para)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint8 banding;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    banding = read_cmos_sensor(0x14);

    switch (para)
    {
        case CAM_BANDING_50HZ:
            write_cmos_sensor(0x14, 0xa1);//(banding & 0xfc) | 0x01);
            break;
        case CAM_BANDING_60HZ:
            write_cmos_sensor(0x14, 0xa0);//banding & 0xfc);
            break;
        default:
            return KAL_FALSE;
    }

    return KAL_TRUE;
}


/*****************************************************************************
 * FUNCTION
 *  set_OV7680_param_saturation
 * DESCRIPTION
 *  OV7680 SATURATION setting.
 * PARAMETERS
 *  para        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
kal_uint32 set_OV7680_param_saturation(kal_uint32 para)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    /* Not Support */
    return KAL_FALSE;
}


/*****************************************************************************
 * FUNCTION
 *  set_OV7680_param_nightmode
 * DESCRIPTION
 *  OV7680 night mode setting.
 * PARAMETERS
 *  para        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
kal_uint32 set_OV7680_param_nightmode(kal_uint32 para)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    OV7680_night_mode((kal_bool) para);
    return KAL_TRUE;
}


/*****************************************************************************
 * FUNCTION
 *  set_OV7680_param_ev
 * DESCRIPTION
 *  OV7680 ev setting.
 * PARAMETERS
 *  para        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
kal_uint32 set_OV7680_param_ev(kal_uint32 para)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    return set_OV7680_param_exposure(para);
}


/*****************************************************************************
 * FUNCTION
 *  OV7680_yuv_sensor_setting
 * DESCRIPTION
 *  This function send command and parameter to yuv sensor module OV7680
 *  to configure it
 * PARAMETERS
 *  cmd         [IN]        
 *  para        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
kal_uint32 OV7680_yuv_sensor_setting(kal_uint32 cmd, kal_uint32 para)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint32 ret = KAL_TRUE;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    switch (cmd)
    {
        case CAM_PARAM_ZOOM_FACTOR:
            ret = set_OV7680_param_zoom(para);
            break;
        case CAM_PARAM_CONTRAST:
            ret = set_OV7680_param_contrast(para);
            break;
        case CAM_PARAM_BRIGHTNESS:
            ret = set_OV7680_param_brightness(para);
            break;
        case CAM_PARAM_HUE:
            ret = set_OV7680_param_hue(para);
            break;
        case CAM_PARAM_GAMMA:
            ret = set_OV7680_param_gamma(para);
            break;
        case CAM_PARAM_WB:
            ret = set_OV7680_param_wb(para);
            break;
        case CAM_PARAM_EXPOSURE:
            ret = set_OV7680_param_exposure(para);
            break;
        case CAM_PARAM_EFFECT:
            ret = set_OV7680_param_effect(para);
            break;
        case CAM_PARAM_BANDING:
            ret = set_OV7680_param_banding(para);
            break;
        case CAM_PARAM_SATURATION:
            ret = set_OV7680_param_saturation(para);
            break;
        case CAM_PARAM_NIGHT_MODE:
            ret = set_OV7680_param_nightmode(para);
            break;
        case CAM_PARAM_EV_VALUE:
            ret = set_OV7680_param_ev(para);
            break;
        default:
            ret = KAL_FALSE;
    }
    return ret;
}

/*************************************************************************
* FUNCTION
*  image_sensor_func_OV7680
*
* DESCRIPTION
*  OV7680 Image Sensor functions struct.
*
* PARAMETERS
*  none
*
* RETURNS
*  None
*
* GLOBALS AFFECTED
*
*************************************************************************/
image_sensor_func_struct image_sensor_func_OV7680 = 
{
    init_OV7680,
    get_OV7680_id,
    get_OV7680_size,
    get_OV7680_period,
    OV7680_preview,
    OV7680_capture,
    write_OV7680_reg,
    read_OV7680_reg,
    set_OV7680_shutter,
    OV7680_night_mode,
    power_off_OV7680,
    set_OV7680_gain
#if (!defined(DRV_ISP_6219_SERIES))
    ,set_OV7680_flashlight
#endif
#if (defined(YUV_SENSOR_SUPPORT))
    ,OV7680_yuv_sensor_setting
#endif
};  /* image_sensor_func_OV7680 */


/*****************************************************************************
 * FUNCTION
 *  image_sensor_func_config
 * DESCRIPTION
 *  This function maps the external camera module function API structure.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void image_sensor_func_config(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    image_sensor_func = &image_sensor_func_OV7680;
}   /* cam_module_func_config() */

/* write camera_para to sensor register */


/*****************************************************************************
 * FUNCTION
 *  camera_para_to_sensor
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void camera_para_to_sensor(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint32 i;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    for (i = 0; 0xFFFFFFFF != camera_para.SENSOR.reg[i].addr; i++)
    {
        write_OV7680_reg(camera_para.SENSOR.reg[i].addr, camera_para.SENSOR.reg[i].para);
    }
    for (i = FACTORY_START_ADDR; 0xFFFFFFFF != camera_para.SENSOR.reg[i].addr; i++)
    {
        write_OV7680_reg(camera_para.SENSOR.reg[i].addr, camera_para.SENSOR.reg[i].para);
    }
    for (i = 0; i < CCT_END_ADDR; i++)
    {
        write_OV7680_reg(camera_para.SENSOR.cct[i].addr, camera_para.SENSOR.cct[i].para);
    }
}

/* update camera_para from sensor register */


/*****************************************************************************
 * FUNCTION
 *  sensor_to_camera_para
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void sensor_to_camera_para(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint32 i;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    for (i = 0; 0xFFFFFFFF != camera_para.SENSOR.reg[i].addr; i++)
    {
        camera_para.SENSOR.reg[i].para = read_OV7680_reg(camera_para.SENSOR.reg[i].addr);
    }
    for (i = FACTORY_START_ADDR; 0xFFFFFFFF != camera_para.SENSOR.reg[i].addr; i++)
    {
        camera_para.SENSOR.reg[i].para = read_OV7680_reg(camera_para.SENSOR.reg[i].addr);
    }
}

/* ------------------------Engineer mode--------------------------------- */


/*****************************************************************************
 * FUNCTION
 *  get_sensor_group_count
 * DESCRIPTION
 *  
 * PARAMETERS
 *  sensor_count_ptr        [?]     [?]
 * RETURNS
 *  void
 *****************************************************************************/
void get_sensor_group_count(kal_int32 *sensor_count_ptr)
{
}

/*****************************************************************************
 * FUNCTION
 *  get_sensor_group_info
 * DESCRIPTION
 *  
 * PARAMETERS
 *  group_idx           [IN]        
 *  group_name_ptr      [?]         [?]
 *  item_count_ptr      [?]         [?]
 * RETURNS
 *  void
 *****************************************************************************/
void get_sensor_group_info(kal_uint16 group_idx, kal_int8 *group_name_ptr, kal_int32 *item_count_ptr)
{
}


/*****************************************************************************
 * FUNCTION
 *  get_sensor_item_info
 * DESCRIPTION
 *  
 * PARAMETERS
 *  group_idx       [IN]        
 *  item_idx        [IN]        
 *  info_ptr        [?]         [?]
 * RETURNS
 *  void
 *****************************************************************************/
void get_sensor_item_info(kal_uint16 group_idx, kal_uint16 item_idx, ENG_sensor_info *info_ptr)
{
}


/*****************************************************************************
 * FUNCTION
 *  set_sensor_item_info
 * DESCRIPTION
 *  
 * PARAMETERS
 *  group_idx       [IN]        
 *  item_idx        [IN]        
 *  item_value      [IN]        
 * RETURNS
 *  
 *****************************************************************************/
kal_bool set_sensor_item_info(kal_uint16 group_idx, kal_uint16 item_idx, kal_int32 item_value)
{
    return KAL_TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -