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

📄 image_sensor_ov7690.c

📁 OV 7690 摄像头驱动源代码程序
💻 C
📖 第 1 页 / 共 4 页
字号:
			temp = read_cmos_sensor(0xD2);
			temp |= 0x04;
			write_cmos_sensor(0xD2, temp);
			write_cmos_sensor(0xD3, 0x10);
			temp = read_cmos_sensor(0xDC);
			temp |= 0x08;
			write_cmos_sensor(0xDC, temp);
            break;

		case CAM_EV_ZERO:   // +0 EV
			temp = read_cmos_sensor(0x81);
			temp |= 0x33;
			write_cmos_sensor(0x81, temp);
			temp = read_cmos_sensor(0xD2);
			temp |= 0x04;
			write_cmos_sensor(0xD2, temp);
            write_cmos_sensor(0xD3, 0x00);
			temp = read_cmos_sensor(0xDC);
			temp &= 0xF7;
			write_cmos_sensor(0xDC, temp);
            break;

		case CAM_EV_POS_1_3:    // +1 EV
			temp = read_cmos_sensor(0x81);
			temp |= 0x33;
			write_cmos_sensor(0x81, temp);
			temp = read_cmos_sensor(0xD2);
			temp |= 0x04;
			write_cmos_sensor(0xD2, temp);
            write_cmos_sensor(0xD3, 0x10);
			temp = read_cmos_sensor(0xDC);
			temp &= 0xF7;
			write_cmos_sensor(0xDC, temp);
            break;

		case CAM_EV_POS_2_3:    // +2 EV
			temp = read_cmos_sensor(0x81);
			temp |= 0x33;
			write_cmos_sensor(0x81, temp);
			temp = read_cmos_sensor(0xD2);
			temp |= 0x04;
			write_cmos_sensor(0xD2, temp);
            write_cmos_sensor(0xD3, 0x20);
			temp = read_cmos_sensor(0xDC);
			temp &= 0xF7;
			write_cmos_sensor(0xDC, temp);
            break;

		case CAM_EV_POS_3_3:    // +3 EV
			temp = read_cmos_sensor(0x81);
			temp |= 0x33;
			write_cmos_sensor(0x81, temp);
			temp = read_cmos_sensor(0xD2);
			temp |= 0x04;
			write_cmos_sensor(0xD2, temp);
            write_cmos_sensor(0xD3, 0x30);
			temp = read_cmos_sensor(0xDC);
			temp &= 0xF7;
			write_cmos_sensor(0xDC, temp);
            break;
			
		case CAM_EV_POS_4_3:    // +4 EV
			temp = read_cmos_sensor(0x81);
			temp |= 0x33;
			write_cmos_sensor(0x81, temp);
			temp = read_cmos_sensor(0xD2);
			temp |= 0x04;
			write_cmos_sensor(0xD2, temp);
            write_cmos_sensor(0xD3, 0x40);
			temp = read_cmos_sensor(0xDC);
			temp &= 0xF7;
			write_cmos_sensor(0xDC, temp);
            break;

        default:
            return KAL_FALSE;
    }

    return KAL_TRUE;

} 


/*****************************************************************************
 * FUNCTION
 *  set_OV7690_param_effect
 * DESCRIPTION
 *  OV7690 effect setting.
 * PARAMETERS
 *  para        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
kal_uint32 set_OV7690_param_effect(kal_uint32 para)
 {

	 /*----------------------------------------------------------------*/
	 /* Local Variables */
	 /*----------------------------------------------------------------*/
	 kal_uint32 ret = KAL_TRUE;
	 kal_uint8 temp = 0;
	 /*----------------------------------------------------------------*/
	 /* Code Body */
	 /*----------------------------------------------------------------*/	

		temp = read_cmos_sensor(0x81);
	 	temp |= 0x20;
	 	write_cmos_sensor(0x81, temp);
		write_cmos_sensor(0x28, 0x00);

		temp = read_cmos_sensor(0xd2);
		temp &= 0xA7;	//clear Special effect bits , Bit6, bit4,bit3

	 switch (para)
	 {
	 case CAM_EFFECT_ENC_NORMAL:
	 	//Normal
	 	temp &= 0xe7;
	 	write_cmos_sensor(0xd2, temp);
		write_cmos_sensor(0xda, 0x80);
	 	write_cmos_sensor(0xdb, 0x80);
	 	break;
	 case CAM_EFFECT_ENC_GRAYSCALE:
	 	 //B&W
	 	temp |= 0x18;
	 	write_cmos_sensor(0xd2, temp); 
	 	write_cmos_sensor(0xda, 0x80);
	 	write_cmos_sensor(0xdb, 0x80);
	 	break;
	 case CAM_EFFECT_ENC_SEPIA:
		 //Antique
	 	temp |= 0x18;
	 	write_cmos_sensor(0xd2, temp);
	 	write_cmos_sensor(0xda, 0x40);
	 	write_cmos_sensor(0xdb, 0xa0);
	 	break;
	 case CAM_EFFECT_ENC_COLORINV:
		temp |= 0x40;	//enable Bit6
		write_cmos_sensor(0xd2, temp);
		write_cmos_sensor(0xda, 0x80);
	 	write_cmos_sensor(0xdb, 0x80);
	 	break;
	 case CAM_EFFECT_ENC_SEPIAGREEN:
		//Greenish
	 	temp |= 0x18;
	 	write_cmos_sensor(0xd2, temp); 
	 	write_cmos_sensor(0xda, 0x60);
	 	write_cmos_sensor(0xdb, 0x60);
	 	break;
	 case CAM_EFFECT_ENC_SEPIABLUE:
		 //Bluish
		temp |= 0x18;
	  	write_cmos_sensor(0xd2, temp); 
		write_cmos_sensor(0xda, 0xa0);
	 	write_cmos_sensor(0xdb, 0x40);
		break;
	 case CAM_EFFECT_ENC_GRAYINV:
	 	//Negative
	 	temp &= 0xe7;
	 	write_cmos_sensor(0xd2, temp);
		write_cmos_sensor(0x28, 0x80);
		write_cmos_sensor(0xda, 0x80);
	 	write_cmos_sensor(0xdb, 0x80);
	 	break;
	 case CAM_EFFECT_ENC_COPPERCARVING:
	 case CAM_EFFECT_ENC_BLUECARVING:
	 case CAM_EFFECT_ENC_CONTRAST:
	 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:
	 ;
	 }


	 return ret;

 } /* end of Special effect */


/*****************************************************************************
 * FUNCTION
 *  set_OV7690_param_banding
 * DESCRIPTION
 *  OV7690 banding setting.
 * PARAMETERS
 *  para        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
kal_uint32 set_OV7690_param_banding(kal_uint32 para)
{

/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
	kal_uint32 temp;
	char buffer[40] = {0};
	temp=read_cmos_sensor(0x14);

	switch (para)
	{
	case CAM_BANDING_50HZ:
            write_cmos_sensor(0x14, temp|0x01);	
		break;
			
	case CAM_BANDING_60HZ:
            write_cmos_sensor(0x14, temp&0xfe);
		break;
			
	default:
	     break;   
			
	}

  	return KAL_TRUE;

}


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

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


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

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


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

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


/*****************************************************************************
 * FUNCTION
 *  OV7690_yuv_sensor_setting
 * DESCRIPTION
 *  This function send command and parameter to yuv sensor module OV7690
 *  to configure it
 * PARAMETERS
 *  cmd         [IN]        
 *  para        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
kal_uint32 OV7690_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_OV7690_param_zoom(para);
            break;
        case CAM_PARAM_CONTRAST:
            ret = set_OV7690_param_contrast(para);
            break;
        case CAM_PARAM_BRIGHTNESS:
            ret = set_OV7690_param_brightness(para);
            break;
        case CAM_PARAM_HUE:
            ret = set_OV7690_param_hue(para);
            break;
        case CAM_PARAM_GAMMA:
            ret = set_OV7690_param_gamma(para);
            break;
        case CAM_PARAM_WB:
            ret = set_OV7690_param_wb(para);
            break;
        case CAM_PARAM_EXPOSURE:
            ret = set_OV7690_param_exposure(para);
            break;
        case CAM_PARAM_EFFECT:
            ret = set_OV7690_param_effect(para);
            break;
        case CAM_PARAM_BANDING:
            ret = set_OV7690_param_banding(para);
            break;
        case CAM_PARAM_SATURATION:
            ret = set_OV7690_param_saturation(para);
            break;
        case CAM_PARAM_NIGHT_MODE:
            ret = set_OV7690_param_nightmode(para);
            break;
        case CAM_PARAM_EV_VALUE:
            ret = set_OV7690_param_ev(para);
            break;
        default:
            ret = KAL_FALSE;
    }
    return ret;
}

/*************************************************************************
* FUNCTION
*  image_sensor_func_OV7690
*
* DESCRIPTION
*  OV7690 Image Sensor functions struct.
*
* PARAMETERS
*  none
*
* RETURNS
*  None
*
* GLOBALS AFFECTED
*
*************************************************************************/
image_sensor_func_struct image_sensor_func_OV7690 = 
{
    init_OV7690,
    get_OV7690_id,
    get_OV7690_size,
    get_OV7690_period,
    OV7690_preview,
    OV7690_capture,
    write_OV7690_reg,
    read_OV7690_reg,
    set_OV7690_shutter,
    OV7690_night_mode,
    power_off_OV7690,
    set_OV7690_gain,
    set_OV7690_flashlight,
    OV7690_yuv_sensor_setting
};  /* image_sensor_func_OV7690 */

⌨️ 快捷键说明

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