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

📄 image_sensor.c

📁 OV7660 YUV源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
	write_cmos_sensor(addr,para);
}	/* write_OV76X0_reg() */

/*************************************************************************
* FUNCTION
*	read_cmos_sensor
*
* DESCRIPTION
*	This function read parameter of specified register from OV76X0.
*
* PARAMETERS
*	addr : the register index of OV76X0
*
* RETURNS
*	the data that read from OV76X0
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 read_OV76X0_reg(kal_uint32 addr)
{
	return (read_cmos_sensor(addr));
}	/* read_OV76X0_reg() */

/*************************************************************************
* FUNCTION
*	set_OV76X0_shutter
*
* DESCRIPTION
*	This function set e-shutter of OV76X0 to change exposure time.
*
* PARAMETERS
*	shutter : exposured lines
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void set_OV76X0_shutter(kal_uint16 shutter)
{
	exposure_lines=shutter;
	write_OV76X0_shutter(shutter);
}	/* set_OV76X0_shutter */

/*************************************************************************
* FUNCTION
*	set_OV76X0_gain
*
* DESCRIPTION
*	This function is to set global gain to sensor.
*
* PARAMETERS
*	gain : sensor global gain(base: 0x40)
*
* RETURNS
*	the actually gain set to sensor.
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint16 set_OV76X0_gain(kal_uint16 gain)
{
   sensor_global_gain=(gain*sensor_gain_base)/BASEGAIN;
   write_OV76X0_gain(sensor_global_gain);
   sensor_global_gain=(sensor_global_gain*BASEGAIN)/sensor_gain_base;
   return sensor_global_gain;
}

/*************************************************************************
* FUNCTION
*	OV76X0_night_mode
*
* DESCRIPTION
*	This function night mode of OV76X0.
*
* PARAMETERS
*	none
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void OV76X0_night_mode(kal_bool enable)
{
    kal_uint8 night = read_cmos_sensor(0x3B);

    if(!sensor_cap_state)
    {   
        if(enable)
        {
            write_cmos_sensor(0x3B,night|0xC0);
            /* set Max gain to 16X */
            write_cmos_sensor(0x14,0x38);
        }
        else
        {
            write_cmos_sensor(0x3B,night&0x1F);
                /* set Max gain to 8X */
                write_cmos_sensor(0x14,0x28);
                write_cmos_sensor(0x2D,0x00);
                write_cmos_sensor(0x2E,0x00);
            }
        }

}	/* OV76X0_night_mode */

/*************************************************************************
* FUNCTION
*	set_OV76X0_flashlight
*
* DESCRIPTION
*	turn on/off OV76X0 flashlight .
*
* PARAMETERS
*	none
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void set_OV76X0_flashlight(kal_bool enable)
{
	// Todo
}

/*************************************************************************
* FUNCTION
*	set_OV76X0_param_zoom
*
* DESCRIPTION
*	OV76X0 zoom setting.
*
* PARAMETERS
*	none
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_OV76X0_param_zoom(kal_uint32 para)
{
	return KAL_FALSE;
}

/*************************************************************************
* FUNCTION
*	set_OV76X0_param_contrast
*
* DESCRIPTION
*	OV76X0 contrast setting.
*
* PARAMETERS
*	none
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_OV76X0_param_contrast(kal_uint32 para)
{
	// Not Support
	return KAL_FALSE;	
}

/*************************************************************************
* FUNCTION
*	set_OV76X0_param_brightness
*
* DESCRIPTION
*	OV76X0 brightness setting.
*
* PARAMETERS
*	none
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_OV76X0_param_brightness(kal_uint32 para)
{
	// Not Support
	return KAL_FALSE;	
}

/*************************************************************************
* FUNCTION
*	set_OV76X0_param_hue
*
* DESCRIPTION
*	OV76X0 hue setting.
*
* PARAMETERS
*	none
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_OV76X0_param_hue(kal_uint32 para)
{
	// Not Support
	return KAL_FALSE;	
}

/*************************************************************************
* FUNCTION
*	set_OV76X0_param_gamma
*
* DESCRIPTION
*	OV76X0 gamma setting.
*
* PARAMETERS
*	none
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_OV76X0_param_gamma(kal_uint32 para)
{
	return KAL_FALSE;	
}

/*************************************************************************
* FUNCTION
*	set_OV76X0_param_wb
*
* DESCRIPTION
*	OV76X0 wb setting.
*
* PARAMETERS
*	none
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_OV76X0_param_wb(kal_uint32 para)
{
	kal_uint16 rgain=0x80, ggain=0x80, bgain=0x80;
	kal_uint8  temp_reg;
	
	temp_reg=read_cmos_sensor(0x13);
	
	switch (para)
	{
		case CAM_WB_AUTO:
			write_cmos_sensor(0x13,temp_reg|0x2);   // Enable AWB		
			break;
		case CAM_WB_CLOUD:
			write_cmos_sensor(0x13,temp_reg&~0x2);  // Disable AWB				
			rgain =camera_para.AWB.LightSource[0][1];
			ggain =camera_para.AWB.LightSource[0][2];
			bgain =camera_para.AWB.LightSource[0][3];
			break;		
		case CAM_WB_DAYLIGHT:
			write_cmos_sensor(0x13,temp_reg&~0x2);  // Disable AWB						
			rgain =camera_para.AWB.LightSource[1][1];
			ggain =camera_para.AWB.LightSource[1][2];
			bgain =camera_para.AWB.LightSource[1][3];
			break;		
		case CAM_WB_INCANDESCENCE:
			write_cmos_sensor(0x13,temp_reg&~0x2);  // Disable AWB						
			rgain =camera_para.AWB.LightSource[2][1];
			ggain =camera_para.AWB.LightSource[2][2];
			bgain =camera_para.AWB.LightSource[2][3];
			break;		
		case CAM_WB_FLUORESCENT:
			write_cmos_sensor(0x13,temp_reg&~0x2);  // Disable AWB						
			rgain =camera_para.AWB.LightSource[3][1];
			ggain =camera_para.AWB.LightSource[3][2];
			bgain =camera_para.AWB.LightSource[3][3];
			break;		
		case CAM_WB_TUNGSTEN:
			write_cmos_sensor(0x13,temp_reg&~0x2);  // Disable AWB						
			rgain =camera_para.AWB.LightSource[4][1];
			ggain =camera_para.AWB.LightSource[4][2];
			bgain =camera_para.AWB.LightSource[4][3];
			break;		
		case CAM_WB_MANUAL:		
		    // TODO
			break;		
		default:
			return KAL_FALSE;			
	}	
	write_cmos_sensor(0x01,(0x80*bgain)/ggain);
	write_cmos_sensor(0x02,(0x80*rgain)/ggain);			
	return KAL_TRUE;
}

/*************************************************************************
* FUNCTION
*	set_OV76X0_param_exposure
*
* DESCRIPTION
*	OV76X0 exposure setting.
*
* PARAMETERS
*	none
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_OV76X0_param_exposure(kal_uint32 para)
{
	switch (para)
	{
		case CAM_EV_NEG_4_3:    
            write_cmos_sensor(0x24, 0x58);
            write_cmos_sensor(0x25, 0x48);		
			break;		
		case CAM_EV_NEG_3_3:
            write_cmos_sensor(0x24, 0x60);
            write_cmos_sensor(0x25, 0x50);		
			break;		
		case CAM_EV_NEG_2_3:
            write_cmos_sensor(0x24, 0x68);
            write_cmos_sensor(0x25, 0x58);		
			break;				
		case CAM_EV_NEG_1_3:
            write_cmos_sensor(0x24, 0x70);
            write_cmos_sensor(0x25, 0x60);		
			break;				
		case CAM_EV_ZERO:
            write_cmos_sensor(0x24, 0x78);
            write_cmos_sensor(0x25, 0x68);		
			break;				
		case CAM_EV_POS_1_3:
            write_cmos_sensor(0x24, 0x80);
            write_cmos_sensor(0x25, 0x70);		
			break;				
		case CAM_EV_POS_2_3:
            write_cmos_sensor(0x24, 0x88);
            write_cmos_sensor(0x25, 0x78);		
			break;				
		case CAM_EV_POS_3_3:
            write_cmos_sensor(0x24, 0x90);
            write_cmos_sensor(0x25, 0x80);		
			break;				
		case CAM_EV_POS_4_3:	
            write_cmos_sensor(0x24, 0x98);
            write_cmos_sensor(0x25, 0x88);		
			break;
		default:
			return KAL_FALSE;    
	}	
	return KAL_TRUE;	
}

/*************************************************************************
* FUNCTION
*	set_OV76X0_param_effect
*
* DESCRIPTION
*	OV76X0 effect setting.
*
* PARAMETERS
*	none
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 set_OV76X0_param_effect(kal_uint32 para)
{
    kal_uint32  ret = KAL_TRUE;
	switch (para)
	{	
		case CAM_EFFECT_ENC_NORMAL:
			write_cmos_sensor(0x3A,0x00);		
			write_cmos_sensor(0x67,0x80);		
			write_cmos_sensor(0x68,0x80);		
			break;		
		case CAM_EFFECT_ENC_GRAYSCALE:
			write_cmos_sensor(0x3A,0x10);		
			write_cmos_sensor(0x67,0x80);		
			write_cmos_sensor(0x68,0x80);		
			break;		
		case CAM_EFFECT_ENC_SEPIA:
			write_cmos_sensor(0x3A,0x14);		
			write_cmos_sensor(0x67,0xA0);		
			write_cmos_sensor(0x68,0x80);		
			break;		
		case CAM_EFFECT_ENC_COLORINV:
			write_cmos_sensor(0x3A,0x20);		
			write_cmos_sensor(0x67,0x80);		
			write_cmos_sensor(0x68,0x80);		
			break;		
		case CAM_EFFECT_ENC_SEPIAGREEN:
			write_cmos_sensor(0x3A,0x10);		
			write_cmos_sensor(0x67,0x40);		
			write_cmos_sensor(0x68,0x40);		
			break;					
		case CAM_EFFECT_ENC_SEPIABLUE:

⌨️ 快捷键说明

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