📄 camera_siv100b.c
字号:
#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 + -