/*********************************************************************************************************************
 * COPYRIGHT NOTICE
 * Copyright (c) 2020,逐飞科技
 * All rights reserved.
 * 技术讨论QQ群：三群：824575535
 *
 * 以下所有内容版权均属逐飞科技所有，未经允许不得用于商业用途，
 * 欢迎各位使用并传播本程序，修改内容时必须保留逐飞科技的版权声明。
 *
 * @file       		main
 * @company	   		成都逐飞科技有限公司
 * @author     		逐飞科技(QQ3184284598)
 * @version    		查看doc内version文件 版本说明
 * @Software 		ADS v1.2.2
 * @Target core		TC264D
 * @Taobao   		https://seekfree.taobao.com/
 * @date       		2020-3-23
 * @note		
					接线定义：
					------------------------------------ 
					模块管脚           			单片机管脚
					SDA   				        查看SEEKFREE_IIC文件内的SEEKFREE_SDA宏定义
					SCL         	                查看SEEKFREE_IIC文件内的SEEKFREE_SCL宏定义
					场中断(VSY)         	        查看SEEKFREE_OV7725.h文件中的OV7725_VSYNC_PIN宏定义
					行中断(HREF)			        未使用，因此不接
					像素中断(PCLK)      	        查看SEEKFREE_OV7725.h文件中的OV7725_PCLK_PIN宏定义
					数据口(D0-D7)		        查看SEEKFREE_OV7725.h文件中的OV7725_DATA_PIN宏定义
					------------------------------------ 
	
					默认分辨率是            		160*120
					默认FPS            	50帧
 ********************************************************************************************************************/



#ifndef _SEEKFREE_7725_h
#define _SEEKFREE_7725_h

#include "common.h"
#include "IfxDma_cfg.h"
#include "zf_uart.h"


//摄像头ID号
#define OV7725_ID               0x21
    
//摄像头寄存器        
#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


//配置摄像头参数
#define OV7725_W                160                             //定义摄像头图像宽度	可设置参数 80 160 240 320
#define OV7725_H                120                             //定义摄像头图像高度	可设置参数 60 120 180 240
#define OV7725_SIZE             (OV7725_W * OV7725_H/8 )        //图像占用空间大小
#define OV7725_DMA_NUM          (OV7725_SIZE)                   //一副图像DMA采集次数


//--------------------------------------------------------------------------------------------------
//引脚配置
//--------------------------------------------------------------------------------------------------
#define OV7725_VSYNC_PIN       	ERU_CH3_REQ6_P02_0  //场中断引脚	可选范围参考ERU_PIN_enum枚举 不可与像素引脚选择为同一个通道，或者是共用中断的通道
													//例如场中断选择ERU_CH3 那么像素引脚就不能选择ERU_CH7，因为3和7的中断是共用的。

#define OV7725_DATA_PIN        	P00_0  				//定义D0数据引脚  假设D0定义为P00_0 那么D1所使用的引脚则为P00_1，依次类推
													//可设置参数P00_0、P02_0、P15_0，不能设置为其他参数

#define OV7725_PCLK_PIN        	ERU_CH2_REQ14_P02_1 //定义像素时钟引脚 可选范围参考ERU_PIN_enum枚举 不可与场中断引脚选择为同一个通道，或者是共用中断的通道
													//例如场中断选择ERU_CH3 那么像素引脚就不能选择ERU_CH7，因为3和7的中断是共用的。

#define OV7725_DMA_CH			IfxDma_ChannelId_5	//定义使用的DMA通道 0-47可选  通道号越大优先级越低
													//修改此处之后，需要修改对应的ERU中断优先级，例如此处设置为IfxDma_ChannelId_5则对应的ERU中断优先级应该设置为5



extern uint8 image_bin[OV7725_H][OV7725_W/8];                   //定义存储接收图像的数组
extern uint8 image_dec[OV7725_H][OV7725_W];                     //图像解压后的数组

extern uint8 ov7725_finish_flag;								//图像采集完成标志位


//函数声明
uint8   ov7725_init(void);
void    ov7725_vsync(void);
void    ov7725_dma(void);


#endif



