📄 ov7720.c
字号:
//=============================================================
//文件名称:OV7720.c
//功能描述: OV7720设置
//维护记录: 2007-8-14 by liuxue modify
//=============================================================
#include "SPCE3200_Register.h"
#include "SPCE3200_Constant.h"
#include "OV7720.h"
#include ".\IIC\IIC.h"
//=============================================================
// 语法格式: void Delay(void);
// 实现功能: 延时一小段时间
// 参数: 无
// 返回值: 无
//=============================================================
void Delay(void)
{
int i;
for(i=0; i<2500; i++);
}
//=============================================================
// 语法格式: void Delay(void);
// 实现功能: 延时一小段时间
// 参数: 无
// 返回值: 无
//=============================================================
int Ov7720_Init(unsigned int MODE, unsigned int ColorMode, unsigned int SensorFps)
{
unsigned char temp = 0;
IIC_Init(); // IIC初始化
// temp = i2c_read8(0x3d);
// if(temp != 0x03)
{
i2c_write8(0x12, 0x80);Delay(); // 初始化摄像头内的所有寄存器
i2c_write8(0x3d, 0x03);Delay();
temp = i2c_read8(0x3d);
if(temp != 0x03)
return 0;
if(MODE==VGA)
{
if(ColorMode == YUVIN)
{
i2c_write8(0x12, 0x20); Delay(); //ITU656+VGA+YUV
}
else if(ColorMode == RGB565IN)
{
i2c_write8(0x12, 0x26); Delay(); //ITU656+VGA+RGB565
}
i2c_write8(0x17, 0x22);Delay(); // 设置视窗大小
i2c_write8(0x18, 0xa4);Delay();
i2c_write8(0x19, 0x07);Delay();
i2c_write8(0x1a, 0xf0);Delay();
i2c_write8(0x29, 0xA0);Delay();
i2c_write8(0x2c, 0xF0);Delay();
i2c_write8(0x67, 0x48);Delay();
}
else if(MODE == QVGA)
{
if(ColorMode == YUVIN)
{
i2c_write8(0x12, 0x60); Delay(); //ITU656+QVGA+YUV
}
else if(ColorMode == RGB565IN)
{
i2c_write8(0x12, 0x66); Delay(); //ITU656+QVGA+RGB565
}
i2c_write8(0x17, 0x3f);Delay(); // 设置视窗大小
i2c_write8(0x18, 0x51);Delay();
i2c_write8(0x19, 0x02);Delay();
i2c_write8(0x1a, 0x79);Delay();
i2c_write8(0x29, 0x51);Delay();
i2c_write8(0x2c, 0x79);Delay();
i2c_write8(0x65, 0x2f);Delay();
}
i2c_write8(0x32, 0x00);Delay();
i2c_write8(0x2a, 0x00);Delay();
if(SensorFps == 30)
{
i2c_write8(0x11, 0x01);Delay();
i2c_write8(0x22, 0x98);Delay();
i2c_write8(0x23, 0x02);Delay();
}
else if(SensorFps == 15)
{
i2c_write8(0x11, 0x03);Delay();
i2c_write8(0x22, 0x4c);Delay();
i2c_write8(0x23, 0x05);Delay();
}
i2c_write8(0x42, 0x7f);Delay();
i2c_write8(0x4d, 0x09);Delay();
i2c_write8(0x63, 0xe0);Delay();
i2c_write8(0x64, 0xff);Delay();
i2c_write8(0x66, 0x00);Delay();
i2c_write8(0x13, 0xf0);Delay();
i2c_write8(0x0d, 0x41);Delay();
i2c_write8(0x0f, 0xc5);Delay();
i2c_write8(0x14, 0x11);Delay();
i2c_write8(0x24, 0x40);Delay();
i2c_write8(0x25, 0x30);Delay();
i2c_write8(0x26, 0xa1);Delay();
i2c_write8(0x2b, 0x00);Delay();
i2c_write8(0x6b, 0xaa);Delay();
i2c_write8(0x13, 0xff);Delay();
i2c_write8(0x90, 0x05);Delay();
i2c_write8(0x91, 0x01);Delay();
i2c_write8(0x92, 0x03);Delay();
i2c_write8(0x93, 0x00);Delay();
i2c_write8(0x94, 0xb0);Delay();
i2c_write8(0x95, 0x9d);Delay();
i2c_write8(0x96, 0x13);Delay();
i2c_write8(0x97, 0x16);Delay();
i2c_write8(0x98, 0x7b);Delay();
i2c_write8(0x99, 0x91);Delay();
i2c_write8(0x9a, 0x1e);Delay();
i2c_write8(0x9b, 0x08);Delay();
i2c_write8(0x9c, 0x20);Delay();
i2c_write8(0x9e, 0x81);Delay();
i2c_write8(0xa6, 0x04);Delay();
i2c_write8(0x7e, 0x0c);Delay();
i2c_write8(0x7f, 0x16);Delay();
i2c_write8(0x80, 0x2a);Delay();
i2c_write8(0x81, 0x4e);Delay();
i2c_write8(0x82, 0x61);Delay();
i2c_write8(0x83, 0x6f);Delay();
i2c_write8(0x84, 0x7b);Delay();
i2c_write8(0x85, 0x86);Delay();
i2c_write8(0x86, 0x8e);Delay();
i2c_write8(0x87, 0x97);Delay();
i2c_write8(0x88, 0xa4);Delay();
i2c_write8(0x89, 0xaf);Delay();
i2c_write8(0x8a, 0xc5);Delay();
i2c_write8(0x8b, 0xd7);Delay();
i2c_write8(0x8c, 0xe8);Delay();
i2c_write8(0x8d, 0x20);Delay();
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -