📄 camera_siv100b.c
字号:
0x40,0x84,
0xD7,0x20,
END_PARAMETER, END_PARAMETER
};
T_U8 night_param[]=
{
0x33,0x08,
0x40,0x80,
0xD7,0x00,
END_PARAMETER, END_PARAMETER
};
switch(mode)
{
case CAMERA_NIGHT_MODE:
camera_set_param(night_param);
break;
case CAMERA_DAY_MODE:
default:
camera_set_param(day_param);
break;
}
#endif
}
/**
* @brief: Set camera mirror mode
* @author:
* @date 2004-09-22
* @param[in] mirror: mirror mode
* @return T_VOID
* @retval
*/
T_VOID cam_SIV100B_set_mirror(T_CAMERA_MIRROR mirror)
{
#ifdef USE_CAMERA_SIV100B
switch(mirror)
{
case CAMERA_MIRROR_V:
camera_setbit(0x04, 1, 1);
break;
case CAMERA_MIRROR_H:
camera_setbit(0x04, 0, 1);
break;
case CAMERA_MIRROR_NORMAL:
camera_setbit(0x04, 1, 0);
camera_setbit(0x04, 0, 0);
break;
case CAMERA_MIRROR_FLIP:
camera_setbit(0x04, 1, 1);
camera_setbit(0x04, 0, 1);
break;
default:
Fwl_Printf("parameter error!\n");
break;
}
#endif
}
/**
* @brief: Set camera effect mode
* @author:
* @date 2004-09-22
* @param[in] effect: effect mode
* @return T_VOID
* @retval
*/
T_VOID cam_SIV100B_set_effect(T_CAMERA_EFFECT effect)
{
#ifdef USE_CAMERA_SIV100B
switch(effect)
{
case CAMERA_EFFECT_NORMAL:
camera_setup(EFFECT_NORMAL_TAB);
break;
case CAMERA_EFFECT_SEPIA:
camera_setup(EFFECT_SEPIA_TAB);
break;
case CAMERA_EFFECT_ANTIQUE:
camera_setup(EFFECT_ANTIQUE_TAB);
break;
case CAMERA_EFFECT_BLUE:
camera_setup(EFFECT_BLUISH_TAB);
break;
case CAMERA_EFFECT_GREEN:
camera_setup(EFFECT_GREENISH_TAB);
break;
case CAMERA_EFFECT_RED:
camera_setup(EFFECT_REDDISH_TAB);
break;
case CAMERA_EFFECT_NEGATIVE:
camera_setup(EFFECT_NEGATIVE_TAB);
break;
case CAMERA_EFFECT_BW:
camera_setup(EFFECT_BW_TAB);
break;
case CAMERA_EFFECT_BWN:
camera_setup(EFFECT_BWN_TAB);
break;
default:
Fwl_Printf("parameter error!\n");
break;
}
#endif
}
/**
* @brief: Set camera PLL scaler
* @author:
* @date 2004-09-22
* @param[in] pll: pll value
* @return T_VOID
* @retval
*/
T_VOID cam_SIV100B_set_PLL(T_CAMERA_PLL pll)
{
#ifdef USE_CAMERA_SIV100B
switch(pll)
{
case CAMERA_PLL_1X:
camera_setup(PLL_1X_TAB);
break;
case CAMERA_PLL_2X:
camera_setup(PLL_2X_TAB);
break;
case CAMERA_PLL_3X:
camera_setup(PLL_3X_TAB);
break;
case CAMERA_PLL_4X:
camera_setup(PLL_4X_TAB);
break;
default:
Fwl_Printf("parameter error!\n");
break;
}
#endif
}
/**
* @brief: Set camera windows
* @author:
* @date 2004-09-22
* @param[in] width: window width
* @param[in] height: window height
* @param[in] Cammode: camera mode, see Set_CameraMode()
* @return int
* @retval 0 error mode; 1 success; -1 fail
*/
T_S32 cam_SIV100B_set_focus(T_U32 width, T_U32 height, T_CAMERA_MODE Cammode, T_U16 Focuslevel)
{
#ifdef USE_CAMERA_SIV100B
unsigned int hrefstart = 0, vrefstart = 0;
unsigned char hbit = 0;
unsigned char Camera_window_table[] =
{
0xf0, 0,
0xf1, 0,
0xf2, 0,
0xf3, 0,
0xf4, 0,
END_PARAMETER, END_PARAMETER
};
//Fwl_Printf("cam_SIV100B_set_focus %d %d %d\n",width,height,Cammode);
if(Cammode == CAMERA_MODE_VGA )//VGA_MODE
{
hrefstart = (640 - width)/2;
vrefstart = (480 - height)/2;
}
else if(Cammode == CAMERA_MODE_QVGA )//QVGA_MODE
{
hrefstart = (320 - width)/2;
vrefstart = (240 - height)/2;
}
else if(Cammode == CAMERA_MODE_QQVGA )//QQVGA_MODE
{
hrefstart = (160 - width)/2;
vrefstart = (120 - height)/2;
}
else
{
return 0;
}
Camera_window_table[3]=hrefstart&0xff;
Camera_window_table[5]=width&0xff;
Camera_window_table[7]=vrefstart&0xff;
Camera_window_table[9]=height&0xff;
Camera_window_table[1] = ((hrefstart&0x300)>>2)|((width&0x300)>>4)|((vrefstart&0x100)>>5)|((height&0x100)>>6);//Horizontal Frame start high 2-bit
if (camera_set_param(Camera_window_table) == AK_TRUE)
return 1;
else
return -1;
#endif
}
/**
* @brief: Set camera AWB mode
* @author:
* @date 2004-09-22
* @param[in] awb: AWB mode
* @return T_VOID
* @retval
*/
T_VOID cam_SIV100B_set_AWB(T_CAMERA_AWB awb)
{
#ifdef USE_CAMERA_SIV100B
switch(awb)
{
case AWB_AUTO:
cam_SIV100B_set_contrast(CAMERA_CONTRAST_4);
cam_SIV100B_set_saturation(CAMERA_SATURATION_4);
cam_SIV100B_set_brightness(CAMERA_BRIGHTNESS_3);
camera_setup(AWB_AUTO_TAB);
break;
case AWB_SUNNY:
cam_SIV100B_set_contrast(CAMERA_CONTRAST_5);
cam_SIV100B_set_saturation(CAMERA_SATURATION_5);
cam_SIV100B_set_brightness(CAMERA_BRIGHTNESS_3);
camera_setup(AWB_SUNNY_TAB);
break;
case AWB_CLOUDY:
cam_SIV100B_set_contrast(CAMERA_CONTRAST_5);
cam_SIV100B_set_saturation(CAMERA_SATURATION_4);
cam_SIV100B_set_brightness(CAMERA_BRIGHTNESS_3);
camera_setup(AWB_CLOUDY_TAB);
break;
case AWB_OFFICE:
cam_SIV100B_set_contrast(CAMERA_CONTRAST_4);
cam_SIV100B_set_saturation(CAMERA_SATURATION_4);
cam_SIV100B_set_brightness(CAMERA_BRIGHTNESS_3);
camera_setup(AWB_OFFICE_TAB);
break;
case AWB_HOME:
cam_SIV100B_set_contrast(CAMERA_CONTRAST_4);
cam_SIV100B_set_saturation(CAMERA_SATURATION_3);
cam_SIV100B_set_brightness(CAMERA_BRIGHTNESS_3);
camera_setup(AWB_HOME_TAB);
break;
case AWB_NIGHT:
cam_SIV100B_set_contrast(CAMERA_CONTRAST_4);
cam_SIV100B_set_saturation(CAMERA_SATURATION_2);
cam_SIV100B_set_brightness(CAMERA_BRIGHTNESS_5);
camera_setup(AWB_NIGHT_TAB);
break;
default:
Fwl_Printf("parameter error!\n");
break;
}
#endif
}
T_BOOL cam_SIV100B_init()
{
#ifdef USE_CAMERA_SIV100B
if( !camera_set_param(RESET_TAB) )
{
gpio_set_pin_level( GPIO_CAMERA_CHIP_ENABLE, !CAM_EN_LEVEL );
gpio_set_pin_level( GPIO_CAMERA_AVDD, 0 ); // avdd
return AK_FALSE;
}
return AK_TRUE;
#endif
}
T_U32 cam_SIV100B_read_id()
{
#ifdef USE_CAMERA_SIV100B
T_U8 value=0x0;
T_U32 id=0;
// Fwl_Printf("init sccb\n");
sccb_init(); //init sccb first here!!
gpio_set_pin_dir( GPIO_CAMERA_AVDD, 1 );
gpio_set_pin_level( GPIO_CAMERA_AVDD, 1 ); // avdd
gpio_set_pin_dir( GPIO_CAMERA_CHIP_ENABLE, 1 );
gpio_set_pin_level( GPIO_CAMERA_CHIP_ENABLE, CAM_EN_LEVEL); /* modify by LiuB 20061027 */
gpio_set_pin_dir( GPIO_CAMERA_RESET, 1 );
gpio_set_pin_level( GPIO_CAMERA_RESET, CAM_RESET_LEVEL );
mini_delay(10);
gpio_set_pin_level( GPIO_CAMERA_RESET, !CAM_RESET_LEVEL );
mini_delay(500);
value = sccb_read_data(CAMERA_SCCB_ADDR, 0x01);
id = value;
return id;
#else
return (0xffff);
#endif
}
T_BOOL cam_SIV100B_set_sleep_mode(T_VOID)
{
#ifdef USE_CAMERA_SIV100B
gpio_set_pin_level( GPIO_CAMERA_CHIP_ENABLE, !CAM_EN_LEVEL );
gpio_set_pin_level( GPIO_CAMERA_AVDD, 0 ); // avdd
return AK_TRUE;
#endif
}
T_BOOL cam_SIV100B_set_to_prev(T_U32 width, T_U32 height, T_U16 Focuslevel)
{
#ifdef USE_CAMERA_SIV100B
cam_SIV100B_set_mode(CAMERA_MODE_VGA);
cam_SIV100B_set_focus(width, height, CAMERA_MODE_VGA, Focuslevel);
return AK_TRUE;
#endif
}
T_BOOL cam_SIV100B_set_to_cap(T_U32 width, T_U32 height, T_CAMERA_MODE Cammode, T_U16 Focuslevel)
{
#ifdef USE_CAMERA_SIV100B
if(Cammode < CAMERA_MODE_VGA)
{
printf("30W camera dose not support such mode");
return AK_FALSE;
}
cam_SIV100B_set_mode(Cammode);
cam_SIV100B_set_focus(width, height, Cammode, Focuslevel);
return AK_TRUE;
#endif
}
T_CAMERA_TYPE cam_SIV100B_get_type(T_VOID)
{
#ifdef USE_CAMERA_SIV100B
return camera_SIV100B_type;
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -