/*
*******************************************************************************
* INCLUDE
*******************************************************************************
*/
#include "ov7725.h"
/*
*******************************************************************************
* CONSTANTS
*******************************************************************************
*/
#define OV7725_REG_NUM 72
/*
*******************************************************************************
* LOCAL VARIABLES
*******************************************************************************
*/
const unsigned char OV7725DefaultCfg[OV7725_REG_NUM][2] =
{
{0x32, 0x00},/*Image Start and Size Control*/
{0x2a, 0x00},/*Dummy Pixel Insert MSb*/
{0x11, 0x01},/*Internal Clock*/
{0x12, 0x46},/*Commom Control 7 - QVGA, RGB565, RGB*/
{0x12, 0x46},/*Commom Control 7 - QVGA, RGB565, RGB*/
{0x42, 0x7f},/*BLC Blue Channel Target Value*/
{0x4d, 0x00},/*Analog Fix Gain Amplifier*///0x09
{0x63, 0xf0},/*AWB Control Byte 0*/
{0x64, 0xff},/*DSP Control Byte 1*/
{0x65, 0x20},/*DSP Control Byte 2*/
{0x66, 0x00},/*DSP Control Byte 3*/
{0x67, 0x00},/*DSP Control Byte 4*/
{0x69, 0x5d},/*AWB Control Byte 1*/
{0x13, 0xff},/*Common Control 8 - AEC, AWB, AGC, AEC below banding Value, Banding Filter, AEC Step size limit Enable */
{0x0d, 0x61},/*Commom Control 4 - PLLx4, 1/4Window*/
{0x0f, 0xc5},/*Commom Control 6 - Auto Window setting ON*/
{0x14, 0x11},/*Commom Control 9 - Moximum AGC Value*/
{0x22, 0xFF},/*Banding Filter Minimum AEC Value*///7f
{0x23, 0x01},/*Banding Filter Maximum Step*/
{0x24, 0x34},/**/
{0x25, 0x3c},
{0x26, 0xa1},
{0x2b, 0x00},
{0x6b, 0xaa},
{0x13, 0xff},
{0x90, 0x0a},
{0x91, 0x01},
{0x92, 0x01},
{0x93, 0x01},
{0x94, 0x5f},
{0x95, 0x53},
{0x96, 0x11},
{0x97, 0x1a},
{0x98, 0x3d},
{0x99, 0x5a},
{0x9a, 0x1e},
{0x9b, 0x00},//set luma
{0x9c, 0x25},//set contrast
{0xa7, 0x65},//set saturation
{0xa8, 0x65},//set saturation
{0xa9, 0x80},//set hue
{0xaa, 0x80},//set hue
{0x9e, 0x81},
{0xa6, 0x06},
{0x7e, 0x0c},
{0x7f, 0x16},
{0x80, 0x2a},
{0x81, 0x4e},
{0x82, 0x61},
{0x83, 0x6f},
{0x84, 0x7b},
{0x85, 0x86},
{0x86, 0x8e},
{0x87, 0x97},
{0x88, 0xa4},
{0x89, 0xaf},
{0x8a, 0xc5},
{0x8b, 0xd7},
{0x8c, 0xe8},
{0x8d, 0x20},
{0x33, 0x00},
{0x22, 0x99},
{0x23, 0x03},
{0x4a, 0x00},
{0x49, 0x13},
{0x47, 0x08},
{0x4b, 0x14},
{0x4c, 0x17},
{0x46, 0x05},
{0x0e, 0xf5},
{0x0c, 0xd0},
};
/*
*******************************************************************************
* FUNCTIONS
*******************************************************************************
*/
/*******************************************************************************
* @fn OV7725_Init
*
* @brief OV7725初始化,对其进行默认配置
*
* @params 无
*
* @return 1-成功、0-失败
*/
unsigned char OV7725_Init(void)
{
unsigned char a;
OV7725_CPU_IO_INIT();
OV7725_XCLK_ENABLE();
OV7725_SCCB_INIT();
/*复位SCCB相关寄存器*/
if ( 0 == OV7725_SCCBWrite(0x12, 0x80) )
return 0;
for (a = 0; a < OV7725_REG_NUM; a++)
{
if ( 0 == OV7725_SCCBWrite(OV7725DefaultCfg[a][0],
OV7725DefaultCfg[a][1]) )
{
return 0;
}
}
return 1;
}
/*******************************************************************************
* @fn OV7725_Open
*
* @brief 开启OV7725图像转换输出
*
* @params 无
*
* @return 无
*/
void OV7725_Open(void)
{
OV7725_CPU_IO_INT_ENABLE();
OV7725_XCLK_ENABLE();
}
/*******************************************************************************
* @fn OV7725_Close
*
* @brief 关闭OV7725图像转换输出
*
* @params 无
*
* @return 无
*/
void OV7725_Close(void)
{
OV7725_CPU_IO_INT_DISABLE();
OV7725_XCLK_DISABLE();
}
/*******************************************************************************
* @fn OV7725_SCCBWrite
*
* @brief 通过SCCB总线向OV7725寄存器写入数据
*
* @params reg - 寄存器地址
* data - 写入的数据 - 1Byte
*
* @return 1-成功、0-失败
*/
unsigned char OV7725_SCCBWrite(unsigned char reg, unsigned char data)
{
OV7725_SCCB_START();
if ( 0 == OV7725_SCCB_WRITEBYTE(0x42) )
{
OV7725_SCCB_STOP();
return 0;
}
OV7725_WAIT_US(100);
if ( 0 == OV7725_SCCB_WRITEBYTE(reg) )
{
OV7725_SCCB_STOP();
return 0;
}
OV7725_WAIT_US(100);
if ( 0 == OV7725_SCCB_WRITEBYTE(data) )
{
OV7725_SCCB_STOP();
return 0;
}
OV7725_SCCB_STOP();
return 1;
}
/*******************************************************************************
* @fn OV7725_SCCBRead
*
* @brief 通过SCCB总线从OV7725寄存器读取数据
*
* @params reg - 寄存器地址
*
* @return 读取的数据
*/
unsigned char OV7725_SCCBRead(unsigned char reg, unsigned char *data)
{
OV7725_SCCB_START();
if ( 0 == OV7725_SCCB_WRITEBYTE(0x42) )
{
OV7725_SCCB_STOP();
return 0;
}
OV7725_WAIT_US(100);
if ( 0 == OV7725_SCCB_WRITEBYTE(reg) )
{
OV7725_SCCB_STOP();
return 0;
}
OV7725_SCCB_STOP();
OV7725_WAIT_US(100);
OV7725_SCCB_START();
if ( 0 == OV7725_SCCB_WRITEBYTE(0x43) )
{
OV7725_SCCB_STOP();
return 0;
}
OV7725_WAIT_US(100);
*data = OV7725_SCCB_READBYTE();
OV7725_SCCB_ACK();
OV7725_SCCB_STOP();
return 1;
}
OV7725 CMOS图像传感器 STM32驱动程序源代码.rar
版权申诉
194 浏览量
2023-03-22
17:14:14
上传
评论
收藏 5KB RAR 举报
GJZGRB
- 粉丝: 1068
- 资源: 5877
最新资源
- docker一键安装包
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 基于matlab实现自适应波束形成RLS及LMS算法仿真源程序1.rar
- 基于matlab实现自己编写的基于卡尔曼滤波的利用加速度传感器的计步器,测试数据是传感器放在腰部和手臂 .rar
- 基于matlab实现阵列信号处理,波束形成.rar
- 111111111111111111
- 基于matlab实现计步器编程;对当前的计步器装置的数值算法模拟 .rar
- Mdb学习查看PW;access;mdb;pw;password;patch
- 基于matlab实现关于语音信号声源定位DOA估计所用的一些传统算法.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈