279 lines
13 KiB
C
279 lines
13 KiB
C
/*********************************************************************************************************************
|
||
* TC264 Opensourec Library 即(TC264 开源库)是一个基于官方 SDK 接口的第三方开源库
|
||
* Copyright (c) 2022 SEEKFREE 逐飞科技
|
||
*
|
||
* 本文件是 TC264 开源库的一部分
|
||
*
|
||
* TC264 开源库 是免费软件
|
||
* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU通用公共许可证)的条款
|
||
* 即 GPL 的第3版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它
|
||
*
|
||
* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证
|
||
* 甚至没有隐含的适销性或适合特定用途的保证
|
||
* 更多细节请参见 GPL
|
||
*
|
||
* 您应该在收到本开源库的同时收到一份 GPL 的副本
|
||
* 如果没有,请参阅<https://www.gnu.org/licenses/>
|
||
*
|
||
* 额外注明:
|
||
* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本
|
||
* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中
|
||
* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件
|
||
* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明)
|
||
*
|
||
* 文件名称 zf_device_ov7725
|
||
* 公司名称 成都逐飞科技有限公司
|
||
* 版本信息 查看 libraries/doc 文件夹内 version 文件 版本说明
|
||
* 开发环境 ADS v1.10.2
|
||
* 适用平台 TC264D
|
||
* 店铺链接 https://seekfree.taobao.com/
|
||
*
|
||
* 修改记录
|
||
* 日期 作者 备注
|
||
* 2022-09-15 pudding first version
|
||
* 2023-04-28 pudding 增加中文注释说明
|
||
********************************************************************************************************************/
|
||
/*********************************************************************************************************************
|
||
* 接线定义:
|
||
* ------------------------------------
|
||
* 模块管脚 单片机管脚
|
||
* TXD/SCL 查看 zf_device_ov7725.h 中 OV7725_COF_UART_TX 或 OV7725_COF_IIC_SCL 宏定义
|
||
* RXD/SDA 查看 zf_device_ov7725.h 中 OV7725_COF_UART_RX 或 OV7725_COF_IIC_SDA 宏定义
|
||
* PCLK 查看 zf_device_ov7725.h 中 OV7725_PCLK_PIN 宏定义
|
||
* VSY 查看 zf_device_ov7725.h 中 OV7725_VSYNC_PIN 宏定义
|
||
* D0-D7 查看 zf_device_ov7725.h 中 OV7725_DATA_PIN 宏定义 从该定义开始的连续八个引脚
|
||
* VCC 3.3V电源
|
||
* GND 电源地
|
||
* 其余引脚悬空
|
||
* ------------------------------------
|
||
********************************************************************************************************************/
|
||
|
||
#ifndef _zf_device_ov7725_h_
|
||
#define _zf_device_ov7725_h_
|
||
|
||
#include "zf_device_type.h"
|
||
|
||
//================================================定义 OV7725 基本配置================================================
|
||
#define OV7725_COF_UART (UART_1) // 小钻风配置串口
|
||
#define OV7725_COF_BAUR (9600) // 小钻风配置串口波特率
|
||
#define OV7725_COF_UART_TX (UART1_RX_P02_3) // 小钻风 UART-TX 引脚 要接在单片机 RX 上
|
||
#define OV7725_COF_UART_RX (UART1_TX_P02_2) // 小钻风 UART-RX 引脚 要接在单片机 TX 上
|
||
|
||
#define OV7725_COF_IIC_DELAY (640 ) // 小钻风 IIC 延时
|
||
#define OV7725_COF_IIC_SCL (P02_3) // 小钻风 IIC-SCL 引脚
|
||
#define OV7725_COF_IIC_SDA (P02_2) // 小钻风 IIC-SDA 引脚
|
||
|
||
#define OV7725_DMA_CH (IfxDma_ChannelId_5) // ERU触发DMA通道禁止随意修改
|
||
|
||
#define OV7725_PCLK_PIN (ERU_CH2_REQ14_P02_1) // GPIO触发TIM引脚禁止随意修改
|
||
|
||
#define OV7725_VSYNC_PIN (ERU_CH3_REQ6_P02_0 ) // 场中断引脚
|
||
#define OV7725_VSYNC_PORT_PIN (P02_0 ) // 场中断引脚
|
||
|
||
#define OV7725_DATA_PIN (P00_0 ) // 数据引脚 这里是 只能是 GPIOx0 或者 GPIOx8 开始 连续八个引脚例如 F0-F7
|
||
#define OV7725_DATA_ADD get_port_in_addr(OV7725_DATA_PIN)
|
||
|
||
#define OV7725_INIT_TIMEOUT (0x0080) // 默认的摄像头初始化超时时间 毫秒为单位
|
||
//================================================定义 OV7725 基本配置================================================
|
||
|
||
|
||
//================================================定义 OV7725 参数配置================================================
|
||
#define OV7725_W (160) // 图像宽度 80/160/240/320
|
||
#define OV7725_H (120) // 图像高度 60/120/180/240
|
||
#define OV7725_IMAGE_SIZE (OV7725_W * OV7725_H / 8) // 整体图像大小 OV7725_IMAGE_SIZE 不能超过 65535
|
||
|
||
#define OV7725_CONTRAST_DEF (0x30) // 阈值设置 摄像头二值化阈值 过大和过小的数值会被摄像头自动修正
|
||
#define OV7725_FPS_DEF (50 ) // 帧率设置 最高 150 帧 但最小分辨率才能达到最高帧率
|
||
//================================================定义 OV7725 参数配置================================================
|
||
|
||
|
||
//==============================================定义 OV7725 IIC 内部地址==============================================
|
||
#define OV7725_ID (0x21) // 摄像头ID号
|
||
#define OV7725_GAIN (0x00) // 以下为摄像头寄存器
|
||
#define OV7725_BLUE (0x01)
|
||
#define OV7725_RED (0x02)
|
||
#define OV7725_GREEN (0x03)
|
||
#define OV7725_BAVG (0x05)
|
||
#define OV7725_GAVG (0x06)
|
||
#define OV7725_RAVG (0x07)
|
||
#define OV7725_AECH (0x08)
|
||
#define OV7725_COM2 (0x09)
|
||
#define OV7725_PID (0x0A)
|
||
#define OV7725_VER (0x0B)
|
||
#define OV7725_COM3 (0x0C)
|
||
#define OV7725_COM4 (0x0D)
|
||
#define OV7725_COM5 (0x0E)
|
||
#define OV7725_COM6 (0x0F)
|
||
#define OV7725_AEC (0x10)
|
||
#define OV7725_CLKRC (0x11)
|
||
#define OV7725_COM7 (0x12)
|
||
#define OV7725_COM8 (0x13)
|
||
#define OV7725_COM9 (0x14)
|
||
#define OV7725_COM10 (0x15)
|
||
#define OV7725_REG16 (0x16)
|
||
#define OV7725_HSTART (0x17)
|
||
#define OV7725_HSIZE (0x18)
|
||
#define OV7725_VSTRT (0x19)
|
||
#define OV7725_VSIZE (0x1A)
|
||
#define OV7725_PSHFT (0x1B)
|
||
#define OV7725_MIDH (0x1C)
|
||
#define OV7725_MIDL (0x1D)
|
||
#define OV7725_LAEC (0x1F)
|
||
#define OV7725_COM11 (0x20)
|
||
#define OV7725_BDBase (0x22)
|
||
#define OV7725_BDMStep (0x23)
|
||
#define OV7725_AEW (0x24)
|
||
#define OV7725_AEB (0x25)
|
||
#define OV7725_VPT (0x26)
|
||
#define OV7725_REG28 (0x28)
|
||
#define OV7725_HOutSize (0x29)
|
||
#define OV7725_EXHCH (0x2A)
|
||
#define OV7725_EXHCL (0x2B)
|
||
#define OV7725_VOutSize (0x2C)
|
||
#define OV7725_ADVFL (0x2D)
|
||
#define OV7725_ADVFH (0x2E)
|
||
#define OV7725_YAVE (0x2F)
|
||
#define OV7725_LumHTh (0x30)
|
||
#define OV7725_LumLTh (0x31)
|
||
#define OV7725_HREF (0x32)
|
||
#define OV7725_DM_LNL (0x33)
|
||
#define OV7725_DM_LNH (0x34)
|
||
#define OV7725_ADoff_B (0x35)
|
||
#define OV7725_ADoff_R (0x36)
|
||
#define OV7725_ADoff_Gb (0x37)
|
||
#define OV7725_ADoff_Gr (0x38)
|
||
#define OV7725_Off_B (0x39)
|
||
#define OV7725_Off_R (0x3A)
|
||
#define OV7725_Off_Gb (0x3B)
|
||
#define OV7725_Off_Gr (0x3C)
|
||
#define OV7725_COM12 (0x3D)
|
||
#define OV7725_COM13 (0x3E)
|
||
#define OV7725_COM14 (0x3F)
|
||
#define OV7725_COM16 (0x41)
|
||
#define OV7725_TGT_B (0x42)
|
||
#define OV7725_TGT_R (0x43)
|
||
#define OV7725_TGT_Gb (0x44)
|
||
#define OV7725_TGT_Gr (0x45)
|
||
#define OV7725_LC_CTR (0x46)
|
||
#define OV7725_LC_XC (0x47)
|
||
#define OV7725_LC_YC (0x48)
|
||
#define OV7725_LC_COEF (0x49)
|
||
#define OV7725_LC_RADI (0x4A)
|
||
#define OV7725_LC_COEFB (0x4B)
|
||
#define OV7725_LC_COEFR (0x4C)
|
||
#define OV7725_FixGain (0x4D)
|
||
#define OV7725_AREF1 (0x4F)
|
||
#define OV7725_AREF6 (0x54)
|
||
#define OV7725_UFix (0x60)
|
||
#define OV7725_VFix (0x61)
|
||
#define OV7725_AWBb_blk (0x62)
|
||
#define OV7725_AWB_Ctrl0 (0x63)
|
||
#define OV7725_DSP_Ctrl1 (0x64)
|
||
#define OV7725_DSP_Ctrl2 (0x65)
|
||
#define OV7725_DSP_Ctrl3 (0x66)
|
||
#define OV7725_DSP_Ctrl4 (0x67)
|
||
#define OV7725_AWB_bias (0x68)
|
||
#define OV7725_AWBCtrl1 (0x69)
|
||
#define OV7725_AWBCtrl2 (0x6A)
|
||
#define OV7725_AWBCtrl3 (0x6B)
|
||
#define OV7725_AWBCtrl4 (0x6C)
|
||
#define OV7725_AWBCtrl5 (0x6D)
|
||
#define OV7725_AWBCtrl6 (0x6E)
|
||
#define OV7725_AWBCtrl7 (0x6F)
|
||
#define OV7725_AWBCtrl8 (0x70)
|
||
#define OV7725_AWBCtrl9 (0x71)
|
||
#define OV7725_AWBCtrl10 (0x72)
|
||
#define OV7725_AWBCtrl11 (0x73)
|
||
#define OV7725_AWBCtrl12 (0x74)
|
||
#define OV7725_AWBCtrl13 (0x75)
|
||
#define OV7725_AWBCtrl14 (0x76)
|
||
#define OV7725_AWBCtrl15 (0x77)
|
||
#define OV7725_AWBCtrl16 (0x78)
|
||
#define OV7725_AWBCtrl17 (0x79)
|
||
#define OV7725_AWBCtrl18 (0x7A)
|
||
#define OV7725_AWBCtrl19 (0x7B)
|
||
#define OV7725_AWBCtrl20 (0x7C)
|
||
#define OV7725_AWBCtrl21 (0x7D)
|
||
#define OV7725_GAM1 (0x7E)
|
||
#define OV7725_GAM2 (0x7F)
|
||
#define OV7725_GAM3 (0x80)
|
||
#define OV7725_GAM4 (0x81)
|
||
#define OV7725_GAM5 (0x82)
|
||
#define OV7725_GAM6 (0x83)
|
||
#define OV7725_GAM7 (0x84)
|
||
#define OV7725_GAM8 (0x85)
|
||
#define OV7725_GAM9 (0x86)
|
||
#define OV7725_GAM10 (0x87)
|
||
#define OV7725_GAM11 (0x88)
|
||
#define OV7725_GAM12 (0x89)
|
||
#define OV7725_GAM13 (0x8A)
|
||
#define OV7725_GAM14 (0x8B)
|
||
#define OV7725_GAM15 (0x8C)
|
||
#define OV7725_SLOP (0x8D)
|
||
#define OV7725_DNSTh (0x8E)
|
||
#define OV7725_EDGE0 (0x8F)
|
||
#define OV7725_EDGE1 (0x90)
|
||
#define OV7725_DNSOff (0x91)
|
||
#define OV7725_EDGE2 (0x92)
|
||
#define OV7725_EDGE3 (0x93)
|
||
#define OV7725_MTX1 (0x94)
|
||
#define OV7725_MTX2 (0x95)
|
||
#define OV7725_MTX3 (0x96)
|
||
#define OV7725_MTX4 (0x97)
|
||
#define OV7725_MTX5 (0x98)
|
||
#define OV7725_MTX6 (0x99)
|
||
#define OV7725_MTX_Ctrl (0x9A)
|
||
#define OV7725_BRIGHT (0x9B)
|
||
#define OV7725_CNST (0x9C)
|
||
#define OV7725_UVADJ0 (0x9E)
|
||
#define OV7725_UVADJ1 (0x9F)
|
||
#define OV7725_SCAL0 (0xA0)
|
||
#define OV7725_SCAL1 (0xA1)
|
||
#define OV7725_SCAL2 (0xA2)
|
||
#define OV7725_SDE (0xA6)
|
||
#define OV7725_USAT (0xA7)
|
||
#define OV7725_VSAT (0xA8)
|
||
#define OV7725_HUECOS (0xA9)
|
||
#define OV7725_HUESIN (0xAA)
|
||
#define OV7725_SIGN (0xAB)
|
||
#define OV7725_DSPAuto (0xAC)
|
||
#define OV7725_DEV_ADD (0x42 >> 1)
|
||
//==============================================定义 OV7725 IIC 内部地址==============================================
|
||
|
||
|
||
//===============================================定义 OV7725 参数结构体================================================
|
||
typedef enum
|
||
{
|
||
OV7725_INIT = 0x00,
|
||
OV7725_RESERVE,
|
||
OV7725_CONTRAST,
|
||
OV7725_FPS,
|
||
OV7725_COL,
|
||
OV7725_ROW,
|
||
OV7725_CONFIG_FINISH,
|
||
|
||
OV7725_GET_WHO_AM_I = 0xEF,
|
||
OV7725_GET_STATUS = 0xF1,
|
||
OV7725_GET_VERSION = 0xF2,
|
||
|
||
OV7725_SET_ADDR = 0xFE,
|
||
OV7725_SET_DATA = 0xFF,
|
||
}ov7725_cmd_enum;
|
||
//===============================================定义 OV7725 参数结构体================================================
|
||
|
||
|
||
//===============================================声明 OV7725 全局变量=================================================
|
||
extern vuint8 ov7725_finish_flag; // 一场图像采集完成标志位
|
||
extern uint8 ov7725_image_binary[OV7725_H][OV7725_W / 8]; // 图像保存数组
|
||
//===============================================声明 OV7725 全局变量=================================================
|
||
|
||
|
||
//===============================================声明 OV7725 基础函数=================================================
|
||
uint16 ov7725_uart_get_id (void); // 获取摄像头固件 ID
|
||
uint16 ov7725_get_version (void); // 获取摄像头固件版本
|
||
uint8 ov7725_init (void); // OV7725 摄像头初始化
|
||
//===============================================声明 OV7725 基础函数=================================================
|
||
|
||
|
||
#endif
|