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

📄 camera_siv100b.c

📁 anyka手机平台
💻 C
📖 第 1 页 / 共 2 页
字号:
			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 + -