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

📄 camera_siv100b.c

📁 anyka手机平台
💻 C
📖 第 1 页 / 共 2 页
字号:

#include "anyka_types.h"
#include "camera.h"
#include "sccb.h"
#include "gpio.h"
#include "camera_SIV100B.h"


#define CAM_EN_LEVEL		0
#define CAM_RESET_LEVEL			0


/* Camera's SCCB interface address */
#ifndef CAMERA_SCCB_ADDR
#define CAMERA_SCCB_ADDR            0x66
#endif

//#ifndef USE_CAMERA_0V7670
	//#define	USE_CAMERA_0V7670
//#endif

#ifdef USE_CAMERA_SIV100B

static T_CAMERA_TYPE camera_SIV100B_type = CAMERA_P3M;
static T_BOOL camera_set_param(const unsigned char tabParameter[]);
static T_VOID camera_setup(const T_U8 para_table[]);
static T_VOID camera_setbit(T_U8 reg, T_U8 bit, T_U8 value);
static T_VOID cam_set_VGAToSXGA(T_VOID);

static T_VOID delay1ms(T_U32 t)
{
    T_U32 i, j, k;

    k = 0;
    for (i=0; i<t; i++)
        for (j=0; j<1000; j++)
            k++;
    i = k;
}

static T_VOID camera_setup(const T_U8 para_table[])
{
    int i;
    T_U8 reg, cmd;
    for (i=0; ;i++) {
        reg = para_table[2*i];
        cmd = para_table[2*i+1];
        if (reg == END_PARAMETER)
            break;
        sccb_write_data(CAMERA_SCCB_ADDR, reg, &cmd, 1);
    }
}

static T_VOID camera_setbit(T_U8 reg, T_U8 bit, T_U8 value)
{
    T_U8 tmp;
    tmp = sccb_read_data(CAMERA_SCCB_ADDR, reg);
    if (value == 1)
        tmp |= 0x1<<bit;
    else
        tmp &= ~(0x1<<bit);
    sccb_write_data(CAMERA_SCCB_ADDR, reg, &tmp, 1);
}

T_VOID lala_read(T_U8 reg)
{
    unsigned char value;

    value = sccb_read_data(CAMERA_SCCB_ADDR, reg);

    printf("i2c read reg 0x%x is 0x%x\n", reg, value);
}

static T_BOOL camera_set_param(const unsigned char tabParameter[])
{
    int i = 0;
    unsigned char value;

    while (1)
    {
        if (tabParameter[i] == END_PARAMETER)
            break;

        sccb_write_data(CAMERA_SCCB_ADDR, tabParameter[i], (unsigned char *)&tabParameter[i + 1], 1);

        value = 0xff;
        value = sccb_read_data(CAMERA_SCCB_ADDR, tabParameter[i]);


        if (value != tabParameter[i + 1])
            {
                Fwl_Printf("set parameter error!\r\n");
                Fwl_Printf("%x", i);
                Fwl_Printf(" reg=0x%x, ", tabParameter[i]);
                Fwl_Printf(" data=0x%x, ",tabParameter[i + 1]);
                Fwl_Printf(" read=0x%x\n",value);

                return AK_FALSE;
            }

        i += 2;
    }

    return AK_TRUE;
}

/**
 * @brief: set camera mode from VGA to SXGA
 * @author:
 * @date 2004-09-22
 * @return T_VOID
 * @retval
 */
static T_VOID cam_set_VGAToSXGA(T_VOID)
{
}

#endif


/**
 * @brief: Set camera mode to specify image quality, SXGA/VGA/CIF/ etc
 * @author:
 * @date 2004-09-22
 * @param[in] mode: mode value
 * @return T_VOID
 * @retval
 */

T_VOID cam_SIV100B_set_mode(T_CAMERA_MODE mode)
{
#ifdef USE_CAMERA_SIV100B
//Fwl_Printf("cam_SIV100B_set_mode %d\n", mode);

    switch(mode)
    {
        case CAMERA_MODE_VGA:
            camera_setup(VGA_MODE_TAB);
            break;
        case CAMERA_MODE_CIF:
            camera_setup(CIF_MODE_TAB);
            break;
        case CAMERA_MODE_QVGA:
            camera_setup(QVGA_MODE_TAB);
            break;
        case CAMERA_MODE_QCIF:
            camera_setup(QCIF_MODE_TAB);
            break;
        case CAMERA_MODE_QQVGA:
            camera_setup(QQVGA_MODE_TAB);
            break;
        default:
            Fwl_Printf("parameter error!\n");
            return;
    }
#endif
}


/**
 * @brief: Set camera exposure mode
 * @author:
 * @date 2004-09-22
 * @param[in] exposure: exposure mode
 * @return T_VOID
 * @retval
 */
T_VOID cam_SIV100B_set_exposure(T_CAMERA_EXPOSURE exposure)
{
#ifdef USE_CAMERA_SIV100B
	switch(exposure)
    {
        case EXPOSURE_WHOLE:
            camera_setup(EXPOSURE_WHOLE_TAB);
            break;
        case EXPOSURE_CENTER:
            camera_setup(EXPOSURE_CENTER_TAB);
            break;
        case EXPOSURE_MIDDLE:
            camera_setup(EXPOSURE_MIDDLE_TAB);
            break;
        default:
            Fwl_Printf("parameter error!\n");
            break;
    }
#endif
}

/**
 * @brief: Set camera brightness level
 * @author:
 * @date 2004-09-22
 * @param[in] brightness: brightness value
 * @return T_VOID
 * @retval
 */
T_VOID cam_SIV100B_set_brightness(T_CAMERA_BRIGHTNESS brightness)
{
#ifdef USE_CAMERA_SIV100B
    switch(brightness)
    {
    case CAMERA_BRIGHTNESS_0:
        camera_setup(BRIGHTNESS_0_TAB);
        break;
        case CAMERA_BRIGHTNESS_1:
            camera_setup(BRIGHTNESS_1_TAB);
            break;
        case CAMERA_BRIGHTNESS_2:
            camera_setup(BRIGHTNESS_2_TAB);
            break;
        case CAMERA_BRIGHTNESS_3:
            camera_setup(BRIGHTNESS_3_TAB);
            break;
        case CAMERA_BRIGHTNESS_4:
            camera_setup(BRIGHTNESS_4_TAB);
            break;
        case CAMERA_BRIGHTNESS_5:
            camera_setup(BRIGHTNESS_5_TAB);
            break;
        case CAMERA_BRIGHTNESS_6:
            camera_setup(BRIGHTNESS_6_TAB);
            break;
        default:
            Fwl_Printf("parameter error!\n");
            break;
    }
#endif
}


/**
 * @brief: Set camera contrast level
 * @author:
 * @date 2004-09-22
 * @param[in] contrast: contrast value
 * @return T_VOID
 * @retval
 */
T_VOID cam_SIV100B_set_contrast(T_CAMERA_CONTRAST contrast)
{
#ifdef USE_CAMERA_SIV100B
    switch(contrast)
    {
        case CAMERA_CONTRAST_1:
            camera_setup(CONTRAST_1_TAB);
            break;
        case CAMERA_CONTRAST_2:
            camera_setup(CONTRAST_2_TAB);
            break;
        case CAMERA_CONTRAST_3:
            camera_setup(CONTRAST_3_TAB);
            break;
        case CAMERA_CONTRAST_4:
            camera_setup(CONTRAST_4_TAB);
            break;
        case CAMERA_CONTRAST_5:
            camera_setup(CONTRAST_5_TAB);
            break;
        case CAMERA_CONTRAST_6:
            camera_setup(CONTRAST_6_TAB);
            break;
        case CAMERA_CONTRAST_7:
            camera_setup(CONTRAST_7_TAB);
            break;
        default:
            Fwl_Printf("parameter error!\n");
            break;
    }
#endif
}


/**
 * @brief: Set camera saturation level
 * @author:
 * @date 2004-09-22
 * @param[in] saturation: saturation value
 * @return T_VOID
 * @retval
 */
T_VOID cam_SIV100B_set_saturation(T_CAMERA_SATURATION saturation)
{
#ifdef USE_CAMERA_SIV100B
    switch(saturation)
    {
        case CAMERA_SATURATION_1:
            camera_setup(SATURATION_1_TAB);
            break;
        case CAMERA_SATURATION_2:
            camera_setup(SATURATION_2_TAB);
            break;
        case CAMERA_SATURATION_3:
            camera_setup(SATURATION_3_TAB);
            break;
        case CAMERA_SATURATION_4:
            camera_setup(SATURATION_4_TAB);
            break;
        case CAMERA_SATURATION_5:
            camera_setup(SATURATION_5_TAB);
            break;
        default:
            Fwl_Printf("parameter error!\n");
            break;
    }
#endif
}


/**
 * @brief: Set camera sharpness level
 * @author:
 * @date 2004-09-22
 * @param[in] sharpness: sharpness value
 * @return T_VOID
 * @retval
 */
T_VOID cam_SIV100B_set_sharpness(T_CAMERA_SHARPNESS sharpness)
{
#ifdef USE_CAMERA_SIV100B
    switch(sharpness)
    {
        case CAMERA_SHARPNESS_0:
            camera_setup(SHARPNESS_0_TAB);
            break;
        case CAMERA_SHARPNESS_1:
            camera_setup(SHARPNESS_1_TAB);
            break;
        case CAMERA_SHARPNESS_2:
            camera_setup(SHARPNESS_2_TAB);
            break;
        case CAMERA_SHARPNESS_3:
            camera_setup(SHARPNESS_3_TAB);
            break;
        case CAMERA_SHARPNESS_4:
            camera_setup(SHARPNESS_4_TAB);
            break;
        case CAMERA_SHARPNESS_5:
            camera_setup(SHARPNESS_5_TAB);
            break;
        case CAMERA_SHARPNESS_6:
            camera_setup(SHARPNESS_6_TAB);
            break;
        default:
            Fwl_Printf("parameter error!\n");
            break;
    }
#endif
}

T_VOID cam_SIV100B_set_night_mode(T_NIGHT_MODE mode)
{
#ifdef USE_CAMERA_SIV100B
	T_U8 day_param[] =
		{
			0x33,0x10,

⌨️ 快捷键说明

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