📄 image_sensor_ov7690.c
字号:
/*****************************************************************************
* FUNCTION
* write_OV7690_reg
* DESCRIPTION
* This function set the register of OV7690.
* PARAMETERS
* addr [IN] The register index of OV7690
* para [IN] Setting parameter of the specified register of OV7690
* RETURNS
* void
*****************************************************************************/
void write_OV7690_reg(kal_uint32 addr, kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
write_cmos_sensor(addr, para);
} /* write_OV7690_reg() */
/*****************************************************************************
* FUNCTION
* read_OV7690_reg
* DESCRIPTION
* This function read parameter of specified register from OV7690.
* PARAMETERS
* addr [IN] The register index of OV7690
* RETURNS
* the data that read from OV7690
*****************************************************************************/
kal_uint32 read_OV7690_reg(kal_uint32 addr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return (read_cmos_sensor(addr));
} /* read_OV7690_reg() */
/*****************************************************************************
* FUNCTION
* set_OV7690_shutter
* DESCRIPTION
* This function set e-shutter of OV7690 to change exposure time.
* PARAMETERS
* shutter [IN] Exposured lines
* RETURNS
* void
*****************************************************************************/
void set_OV7690_shutter(kal_uint16 shutter)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
exposure_lines = shutter;
write_OV7690_shutter(shutter);
} /* set_OV7690_shutter */
/*****************************************************************************
* FUNCTION
* set_OV7690_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_OV7690_gain(kal_uint16 gain)
{
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* OV7690_night_mode
* DESCRIPTION
* This function night mode of OV7690.
* PARAMETERS
* enable [IN]
* RETURNS
* void
*****************************************************************************/
void OV7690_night_mode(kal_bool enable)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (!enable)
{
write_cmos_sensor(0x15, 0xa4); //Auto frame rate, max reduction to 1/3 frame rate, 15fps~5fps
}
else
{
write_cmos_sensor(0x15, 0xc4); //Auto frame rate, max reduction to 1/8 frame rate, 15fps~1.875fps
}
} /* OV7690_night_mode */
/*****************************************************************************
* FUNCTION
* set_OV7690_flashlight
* DESCRIPTION
* turn on/off OV7690 flashlight .
* PARAMETERS
* enable [IN]
* RETURNS
* void
*****************************************************************************/
void set_OV7690_flashlight(kal_bool enable)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Todo */
}
/*****************************************************************************
* FUNCTION
* set_OV7690_param_zoom
* DESCRIPTION
* OV7690 zoom setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7690_param_zoom(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* set_OV7690_param_contrast
* DESCRIPTION
* OV7690 contrast setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7690_param_contrast(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Not Support */
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* set_OV7690_param_brightness
* DESCRIPTION
* OV7690 brightness setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7690_param_brightness(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Not Support */
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* set_OV7690_param_hue
* DESCRIPTION
* OV7690 hue setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7690_param_hue(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Not Support */
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* set_OV7690_param_gamma
* DESCRIPTION
* OV7690 gamma setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7690_param_gamma(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return KAL_FALSE;
}
/*****************************************************************************
* FUNCTION
* set_OV7690_param_wb
* DESCRIPTION
* OV7690 wb setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7690_param_wb(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint8 temp = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
switch (para)
{
case CAM_WB_AUTO:
temp = read_cmos_sensor(0x13);
temp |= 0x02;
write_cmos_sensor(0x13, temp);
break;
case CAM_WB_CLOUD: //Cloudy
temp = read_cmos_sensor(0x13);
temp &= 0xfd;
write_cmos_sensor(0x13, temp);
write_cmos_sensor(0x01, 0x5c);
write_cmos_sensor(0x02, 0x56);
break;
case CAM_WB_DAYLIGHT: //Sunny
temp = read_cmos_sensor(0x13);
temp &= 0xfd;
write_cmos_sensor(0x13, temp);
write_cmos_sensor(0x01, 0x58);
write_cmos_sensor(0x02, 0x56);
break;
case CAM_WB_INCANDESCENCE:
temp = read_cmos_sensor(0x13);
temp &= 0xfd;
write_cmos_sensor(0x13, temp);
write_cmos_sensor(0x01, 0x67);
write_cmos_sensor(0x02, 0x40);
break;
case CAM_WB_FLUORESCENT: //Office
temp = read_cmos_sensor(0x13);
temp &= 0xfd;
write_cmos_sensor(0x13, temp);
write_cmos_sensor(0x01, 0x58);
write_cmos_sensor(0x02, 0x60);
break;
case CAM_WB_TUNGSTEN: //Home
temp = read_cmos_sensor(0x13);
temp &= 0xfd;
write_cmos_sensor(0x13, temp);
write_cmos_sensor(0x01, 0xA0);
write_cmos_sensor(0x02, 0x40);
break;
case CAM_WB_MANUAL:
break;
default:
return KAL_FALSE;
}
return KAL_TRUE;
}
/*****************************************************************************
* FUNCTION
* set_OV7690_param_exposure
* DESCRIPTION
* OV7690 exposure setting.
* PARAMETERS
* para [IN]
* RETURNS
* void
*****************************************************************************/
kal_uint32 set_OV7690_param_exposure(kal_uint32 para)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint8 temp = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
switch (para)
{
case CAM_EV_NEG_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 |= 0x08;
write_cmos_sensor(0xDC, temp);
break;
case CAM_EV_NEG_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 |= 0x08;
write_cmos_sensor(0xDC, temp);
break;
case CAM_EV_NEG_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 |= 0x08;
write_cmos_sensor(0xDC, temp);
break;
case CAM_EV_NEG_1_3: // -1 EV
temp = read_cmos_sensor(0x81);
temp |= 0x33;
write_cmos_sensor(0x81, temp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -