⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _fpcap.c

📁 at91rm9200 mac control源码
💻 C
字号:

/****************************************************************
 *                                                              *
 *  Program : _FpCap.C                                          *
 *                                                              *
 *  Purpose : Handler for Fp capture.                           *
 *                                                              *
 *  Compile : ARM SDT Ver2.51                                   *
 *                                                              *
 *  Version : 1.00                                              *
 *                                                              *
 *  Create  : 2002-12-30 Monday              By KWM             *
 *                                                              *
 *  Copyright (C) 2002  Amnokgang Technology Development Corp.  *
 *  All Rights Reserved.                                        *
 *                                                              *
 ****************************************************************/

#include "_MyType.h"  
#include "_Bios.h"  
#include "lib_AT91RM9200.h"
//#include "console.h"

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
/* keyword : YMMFAB                                                     */
/*               You must modify follow according board                 */
/*           ----------------------------------------------             */  

#define VRAM_M				((volatile)0x40100000)	/* VRAM address 256k        */
#define MBF_REGINDEX		((volatile)0x40000000)	/* VRAM address 256k        */
#define MBF_REGDATA			((volatile)0x40000002)	/* VRAM address 256k        */
#define Wr7620Slave_M	0x42					/* OV7620 writting address   */
#define Rd7620Slave_M	0x43					/* OV7620 reading address   */

#define Bright		0x20
//#define Bright		0x20
#define Contrast	0xe0

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/

const unsigned char   CMOSRegValue [] = {
		0x12,0x80,	/* 12 Soft Reset */
		0x12,0x20,	/*       "       */
		0x00,0x00,	/* 00 Gain Setting */
		0x01,0x80,	/* 01 Blue Channel Balance Value*/
		0x02,0x80,	/* 02 Red Channel Balance Value */
		0x03,0x00,	/* 03 Saturation Adjustment */
		0x07,0x00,	/* 07 Analog Sharpness control */
		0x0C,0x20,	/* 0C White Balance background control - Blue channel */
		0x0D,0x20,	/* 0D White Balance background control - Red  channel */
		0x11,0x02,	/* 11 Clock rate control */
		0x12,0x20,	/* 12 Common A */
		0x13,0x00,	/* 13 Common B */
		0x14,0x00,	/* 14 Common C */
		0x15,0x01,	/* 15 Common D */
		0x16,0x03,	/* 16 Frame Drop */
		0x17,0x3F,	/* 17 Horizontal Window Start */
		0x18,0xBF,	/* 18 Horizontal Window End */
		0x19,0x06,	/* 19 Vertical Window Start 30 */
		0x1A,0xF5,	/* 1A Vertical Window End B0*/
		0x1B,0x00,	/* 1B Pixel Shift */
		0x20,0x08,	/* 20 Common E */
		0x21,0x80,	/* 21 Y Channel Manual offset adjustment */
		0x22,0x80,	/* 22 U Channel Manual offset adjustment */
		0x23,0x00,	/* 23 Crystal Current control */
        0x24,0x90,    /* 24 AE.W Auto Exposure White Pixel Ratio  3a*/
        0x25,0x60,    /* 25 AEW Auto Exposure Black Pixel Ratio 60*/
		0x26,0xA2,	/* 26 Common F */
		0x27,0xFA,	/* 27 Common G */
        0x28,0x20,	/* 28 Common H */
		0x29,0x00,	/* 29 Common I */
		0x2A,0x10,	/* 2A Frame Rate High */
		0x2B,0x00,	/* 2B Frame Rate Low */
		0x2C,0x88,	/* 2C Black Expanding */
		0x2D,0x85,	/* 2D Common J */
		0x2E,0x80,	/* 2E V Channel Manual Offset Adjustment */
		0x2F,0x44,	/* 2F Reserved */
		0x60,0x20,	/* 60 Signal Process Control A */
		0x61,0x02,	/* 61 Signal Process Control B */
		0x62,0x5F,	/* 62 Gamma Control */
		0x63,0xD5,	/* 63 Reserved */
		0x64,0x09,	/* 64 Y Gamma Control */
		0x65,0x85,	/* 65 Signal Process Control C */
		0x66,0x55,	/* 66 AWB Process Control */
		0x68,0xCF,	/* 68 Signal Process Control D */
		0x69,0x76,	/* 69 Analog Sharpness */
		0x6A,0x22,	/* 6A Vertical Edge Enhancement Control */
		0x6F,0x0D,	/* 6F Even/Odd Noise Compensation Control */
		0x70,0x89,	/* 70 Common Control K */
		0x71,0x00,	/* 71 Common Control J */
		0x72,0x14,	/* 72 Horizontal Sync 1st Edge shifting */
		0x73,0x54,	/* 73 Horizontal Sync 2nd Edge shifting */
		0x74,0xA0,	/* 74 Common Control M */
		0x75,0x8E,	/* 75 Common Control N */
		0x76,0x00,	/* 76 Common Control O */
		0x7C,0x00,	/* 7C Field Average Level Storage */
};

BYTE	gFpImage512[512][512];
BYTE	gFpImage256[256][256];

volatile int 	gFpImageFlag;
/*========================================================================
// Function    : InitializeMBF200
// Description :
// Return type : int
// Argument
// Date        : 2005/7/1 PM     - Ver.1.00 -   By KimCholNam
//=======================================================================*/
void InitializeMBF(void)
{  int i;
  
 *(BYTE *)MBF_REGINDEX=0x09;
 i=*(BYTE *)MBF_REGDATA;
 printf("GALB= %x\n", i);
 *(BYTE *)MBF_REGDATA=0x07;

 for(i=0;i<100;i++);	
  *(BYTE *)MBF_REGINDEX=0x0A;
  *(BYTE *)MBF_REGDATA=0x22;
  
  *(BYTE *)MBF_REGINDEX=0x06;  //DTR register 
  *(BYTE *)MBF_REGDATA=0x20;
  
  *(BYTE *)MBF_REGINDEX=0x07;  //DCR register 
  *(BYTE *)MBF_REGDATA=0x02;
  
  *(BYTE *)MBF_REGINDEX=0x0C;  //PGC register 
  *(BYTE *)MBF_REGDATA=0x07;
  
  *(BYTE *)MBF_REGINDEX=0x0F;  //PGC register 
  *(BYTE *)MBF_REGDATA=0x48;
 // *(BYTE *)MBF_REGINDEX=0x0D;  //ICR register 
 // *(BYTE *)MBF_REGDATA=0x01;
}


void detectFinger(void)
{
  int i;
  BYTE temp;
  *(BYTE *)MBF_REGINDEX=0x0A;
  *(BYTE *)MBF_REGDATA=0x00;   //led off
  
  *(BYTE *)MBF_REGINDEX=0x0E;  //ISR register   
  *(BYTE *)MBF_REGDATA=0x01;
  temp=*(BYTE *)MBF_REGDATA;
 while(1)
 
 {  *(BYTE *)MBF_REGINDEX=0x0E;  //ISR register   
    temp=*(BYTE *)MBF_REGDATA;
  if ( (temp &0x01)!=0x01) 
 			{
 			*(BYTE *)MBF_REGINDEX=0x0A;
			 *(BYTE *)MBF_REGDATA=0x02;
  			 for(i=0;i<0xffff;i++);		
             *(BYTE *)MBF_REGINDEX=0x0E;  //ISR register   
			 *(BYTE *)MBF_REGDATA=0x01;
			 }
	*(BYTE *)MBF_REGINDEX=0x0A;
    *(BYTE *)MBF_REGDATA=0x00;   //led off			 
    }
    }
/*========================================================================
// Function    : InitializeCMOS
// Description : Initialize CMOS by IIC bus
// Return type : int
// Argument
// Date        : 2002/6/26 PM     - Ver.1.00 -   By KimWonMyong
//=======================================================================*/
int InitializeCMOS(void)
{
	register int vState=TRUE;
	register unsigned char i = 5;

	while( i-- > 0 ){
		if( !SetIICRegister( Wr7620Slave_M, 0x12, 0x80 ) )	vState = FALSE;
		if(	!SetIICRegister( Wr7620Slave_M, 0x12, 0x20 ) )	vState = FALSE;
		if(  vState == TRUE )	break;
		vState=TRUE;
	}

	vState=TRUE;

	for( i=0; i<sizeof(CMOSRegValue)/2; i++ ){
		if( !SetIICRegister( Wr7620Slave_M, CMOSRegValue [i*2], CMOSRegValue [i*2+1] ) )	vState = FALSE;
	}

	if( !SetIICRegister( Wr7620Slave_M, 0x06, Bright ) ) vState = FALSE;
	if( !SetIICRegister( Wr7620Slave_M, 0x10, Contrast ) ) vState = FALSE;

	return vState;
}

 BYTE *Tmp;
void readIIC(void)
{	
	register unsigned char i,tt;	
	BOOL jj;
	for (i=0;i<0x5f;i++){
		jj=GetIICRegister(0x20,0x21,i,Tmp);
		Delay_Nms(1000);		
		tt=*Tmp;
		if (jj) printf("res = true     ");
				else 	printf("res = false");
		printf("reg,val=%x,%x\n", i,tt);
		
		}
}		
/*========================================================================
// Function    : InitializeFpCap
// Description : Initialize camera
// Return type : int
// Argument
// Create      : 8/19/02 12:10:47 PM		   By Kim Won Myong
// Update      : 2003-12-18 10:15:47 PM		   By KGB
//=======================================================================*/
int InitializeFpCap( int aOV7620, int a16mm, int aCPU )
{
	return TRUE;
}

/*========================================================================
// Function    : *ReadFpImage512
// Description :  
// Return type : void 
// Argument
//    (In/Out) : void
// Create      : 8/19/02 12:18:13 PM		   By Kim Won Myong
//========================================================================*/
void *ReadFpImage512( void )
{	U32 i,j,k;
	BYTE *temp;
	U32 test;	
    
	temp=(BYTE *)gFpImage512;	
	*(BYTE *)MBF_REGINDEX=0x08;
	*(BYTE *)MBF_REGDATA =0x02;
	for(i=0;i<300;i++)

	for(j=0;j<256;j++)
	{  k=0;
	*(BYTE *)MBF_REGINDEX=0x09;
	while((k&0x20)!=0x20) k=*(BYTE *)MBF_REGDATA;
	*(BYTE *)MBF_REGINDEX=0x08;
	
	 gFpImage512[i][j]=*(BYTE *)MBF_REGDATA;
	// *temp=*(BYTE *)MBF_REGDATA;
	//temp++;
	}
	

	}
	
void *OldReadFpImage512( void )
{	U32 i,j;
	BYTE *temp;
	U32 test;
	BYTE flag;
	AT91F_AIC_DisableIt(AT91C_BASE_AIC, AT91C_ID_SYS);
	temp=(BYTE *)gFpImage512;	
  //  VSYNC CHEK    
	//while(!AT91F_PIO_IsInputSet(AT91C_BASE_PIOC, AT91C_PIO_PC12))  ;
	while(!((AT91F_PIO_GetInput(AT91C_BASE_PIOB)&0x800000)==0x800000))  ;
	i=0;
	flag=0;			
	while(i<480*512)
				{					
											
				/*	while(!((AT91F_PIO_GetInput(AT91C_BASE_PIOC)&0x2000)==0x2000));
				
												{	//PCLK detect	 			    							
												for(j=0;j<512;j++)											
												{
												
	 			    							*temp=* (BYTE *) VRAM_M; 			    							    							
	 			    							*temp=* (BYTE *) VRAM_M;
												temp++;											
												}
					while(((AT91F_PIO_GetInput(AT91C_BASE_PIOC)&0x2000)==0x2000));							
												}
					
					i++;}*/
					//test=AT91F_PIO_GetInput(AT91C_BASE_PIOC);
					test=AT91C_BASE_PIOB->PIO_PDSR;
//					if (flag==0) 
						if ((test&0x9000000)==0x9000000)
							{
	 			    						//	*temp=* (BYTE *) VRAM_M; 			
	 			    							*temp=test;		 			    						
	 			    							for(j=0;j<3;j++); 			    						
	 			    							temp++;											
												i++;
												flag=1;
												}
												
												
				//	if (flag==1)
					//	if ((test&0x9000000)==0x1000000)
						//	flag=0; 												
																	
				}
/*	for(i=0;i<512;i++)

	
		{	while(!AT91F_PIO_IsInputSet(AT91C_BASE_PIOC, AT91C_PIO_PC13))  ;	
		for(j=0;j<512;j++)
		
		{	while(!AT91F_PIO_IsInputSet(AT91C_BASE_PIOC, AT91C_PIO_PC14))  ;
		*temp=* (BYTE *) VRAM_M;
		temp++;
		}
		}				

*/	
	AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SYS);
return NULL; 
}





/*========================================================================
// Function    : *ReadFpImage256
// Description :  
// Return type : void 
// Argument
//    (In/Out) : void
// Create      : 8/19/02 3:25:19 PM		   By Kim Won Myong
//========================================================================*/
void *ReadFpImage256( void )
{
	int i,j;

	ReadFpImage512();

	for( i=0; i<256; i++ )
	for( j=0; j<256; j++ )	
	 gFpImage256[i][j] = gFpImage512[i][j];
		
	return (void*)&gFpImage256[0][0];
}
/*========================================================================
// Function    : GetFpImage512
// Description : Get 512*512 image buffer address .
// Return type : void *
// Argument
// Date        : 2002/06/24  AM     - Ver.1.0 -   By Kim Won Myong
//========================================================================*/
void *GetFpImage512( void )
{
	return (void*)&gFpImage512[0][0];
}

/*========================================================================
// Function    : GetFpImage256
// Description : Get 256*256 image buffer address .
// Return type : void *
// Argument
// Date        : 2002/06/24  AM     - Ver.1.0 -   By Kim Won Myong
//========================================================================*/
void *GetFpImage256( void )
{
	return (void*)&gFpImage256[0][0];
}

/****************************************************************
 *
 *                End of file : _FPCAP.C
 *
 ****************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -