📄 image_sensor.c
字号:
SET_TG_OUTPUT_CLK_DIVIDER(3);
SET_CMOS_RISING_EDGE(0);
SET_CMOS_FALLING_EDGE(2);
ENABLE_CAMERA_PIXEL_CLKIN_ENABLE;
}
capture_pclk_division = ((DRV_Reg32(ISP_TG_PHASE_COUNTER_REG) & 0x0F000000) >> 24) + 1;
image_window->grab_start_x = 1;
image_window->grab_start_y = 2;
image_window->exposure_window_width = IMAGE_SENSOR_VGA_WIDTH - 16;
image_window->exposure_window_height = IMAGE_SENSOR_VGA_HEIGHT - 16;
if (shutter < 1)
shutter = 1;
set_OV7680_dummy(dummy_pixels, dummy_lines);
write_OV7680_shutter(shutter);
write_OV7680_extra_line(extra_line);
} /* OV7680_capture() */
/*****************************************************************************
* FUNCTION
* write_OV7680_reg
* DESCRIPTION
* This function set the register of OV7680.
* PARAMETERS
* addr [IN] The register index of OV7680
* para [IN] Setting parameter of the specified register of OV7680
* RETURNS
* void
*****************************************************************************/
void write_OV7680_reg(kal_uint32 addr, kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
write_cmos_sensor(addr, para);
} /* write_OV7680_reg() */
/*****************************************************************************
* FUNCTION
* read_OV7680_reg
* DESCRIPTION
* This function read parameter of specified register from OV7680.
* PARAMETERS
* addr [IN] The register index of OV7680
* RETURNS
* the data that read from OV7680
*****************************************************************************/
kal_uint32 read_OV7680_reg(kal_uint32 addr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return (read_cmos_sensor(addr));
} /* read_OV7680_reg() */
/*****************************************************************************
* FUNCTION
* set_OV7680_shutter
* DESCRIPTION
* This function set e-shutter of OV7680 to change exposure time.
* PARAMETERS
* shutter [IN] Exposured lines
* RETURNS
* void
*****************************************************************************/
void set_OV7680_shutter(kal_uint16 shutter)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
exposure_lines = shutter;
write_OV7680_shutter(shutter);
} /* set_OV7680_shutter */
/*****************************************************************************
* FUNCTION
* set_OV7680_gain
* DESCRIPTION
* This function is to set global gain to sensor.
* PARAMETERS
* gain [IN] Sensor global gain(base: 0x40)
* RETURNS
* the actually gain set to sensor.
*****************************************************************************/
kal_uint16 set_OV7680_gain(kal_uint16 gain)
{
return BASEGAIN;
}
/*****************************************************************************
* FUNCTION
* OV7680_night_mode
* DESCRIPTION
* This function night mode of OV7680.
* PARAMETERS
* enable [IN]
* RETURNS
* void
*****************************************************************************/
void OV7680_night_mode(kal_bool enable)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint8 temp;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
temp = read_cmos_sensor(0x15);
if (!enable)
{
write_cmos_sensor(0x15, temp & 0x7f);
write_cmos_sensor(0x2d, 0x00);
write_cmos_sensor(0x2e, 0x00);
}
else
{
write_cmos_sensor(0x15, temp | 0x80);
}
} /* OV7680_night_mode */
#if (!defined(DRV_ISP_6219_SERIES))
/*****************************************************************************
* FUNCTION
* set_OV7680_flashlight
* DESCRIPTION
* turn on/off OV7680 flashlight .
* PARAMETERS
* enable [IN]
* RETURNS
* void
*****************************************************************************/
void set_OV7680_flashlight(kal_bool enable)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Todo */
}
#endif
/*****************************************************************************
* FUNCTION
* set_OV7680_param_zoom
* DESCRIPTION
* OV7680 zoom setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7680_param_zoom(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* set_OV7680_param_contrast
* DESCRIPTION
* OV7680 contrast setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7680_param_contrast(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Not Support */
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* set_OV7680_param_brightness
* DESCRIPTION
* OV7680 brightness setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7680_param_brightness(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Not Support */
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* set_OV7680_param_hue
* DESCRIPTION
* OV7680 hue setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7680_param_hue(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Not Support */
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* set_OV7680_param_gamma
* DESCRIPTION
* OV7680 gamma setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7680_param_gamma(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* set_OV7680_param_wb
* DESCRIPTION
* OV7680 wb setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7680_param_wb(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint8 temp_reg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
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:
break;
case CAM_WB_DAYLIGHT:
write_cmos_sensor(0x13, temp_reg & ~0x2); /* Disable AWB */
write_cmos_sensor(0x01, 0x5e);
write_cmos_sensor(0x02, 0x5d);
write_cmos_sensor(0x03, 0x40);
break;
case CAM_WB_INCANDESCENCE:
write_cmos_sensor(0x13, temp_reg & ~0x2); /* Disable AWB */
write_cmos_sensor(0x01, 0xb0);
write_cmos_sensor(0x02, 0x40);
write_cmos_sensor(0x03, 0x4a);
break;
case CAM_WB_FLUORESCENT:
write_cmos_sensor(0x13, temp_reg & ~0x2); /* Disable AWB */
write_cmos_sensor(0x01, 0x93);
write_cmos_sensor(0x02, 0x50);
write_cmos_sensor(0x03, 0x40);
break;
case CAM_WB_TUNGSTEN:
break;
case CAM_WB_MANUAL:
break;
default:
return KAL_FALSE;
}
return KAL_TRUE;
}
/*****************************************************************************
* FUNCTION
* set_OV7680_param_exposure
* DESCRIPTION
* OV7680 exposure setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7680_param_exposure(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
switch (para)
{
case CAM_EV_NEG_4_3:
write_cmos_sensor(0x81, 0x07);
write_cmos_sensor(0xD6, 0x40);
write_cmos_sensor(0xDF, 0x08);
break;
case CAM_EV_NEG_3_3:
write_cmos_sensor(0x81, 0x07);
write_cmos_sensor(0xD6, 0x30);
write_cmos_sensor(0xDF, 0x08);
break;
case CAM_EV_NEG_2_3:
write_cmos_sensor(0x81, 0x07);
write_cmos_sensor(0xD6, 0x20);
write_cmos_sensor(0xDF, 0x08);
break;
case CAM_EV_NEG_1_3:
write_cmos_sensor(0x81, 0x07);
write_cmos_sensor(0xD6, 0x10);
write_cmos_sensor(0xDF, 0x08);
break;
case CAM_EV_ZERO:
write_cmos_sensor(0x81, 0x07);
write_cmos_sensor(0xD6, 0x00);
write_cmos_sensor(0xDF, 0x00);
break;
case CAM_EV_POS_1_3:
write_cmos_sensor(0x81, 0x07);
write_cmos_sensor(0xD6, 0x10);
write_cmos_sensor(0xDF, 0x00);
break;
case CAM_EV_POS_2_3:
write_cmos_sensor(0x81, 0x07);
write_cmos_sensor(0xD6, 0x20);
write_cmos_sensor(0xDF, 0x00);
break;
case CAM_EV_POS_3_3:
write_cmos_sensor(0x81, 0x07);
write_cmos_sensor(0xD6, 0x30);
write_cmos_sensor(0xDF, 0x00);
break;
case CAM_EV_POS_4_3:
write_cmos_sensor(0x81, 0x07);
write_cmos_sensor(0xD6, 0x40);
write_cmos_sensor(0xDF, 0x00);
break;
default:
return KAL_FALSE;
}
return KAL_TRUE;
}
/*****************************************************************************
* FUNCTION
* set_OV7680_param_effect
* DESCRIPTION
* OV7680 effect setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7680_param_effect(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint32 ret = KAL_TRUE;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
switch (para)
{
case CAM_EFFECT_ENC_NORMAL:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -