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

📄 cameram.c

📁 s3c6400 ADS下官方测试程序
💻 C
📖 第 1 页 / 共 5 页
字号:
///	CAMERA_SetReg(0x7f, 0x40|uOutSel | uYcSel | 1);


///	GetReg(0x7f, x);
///	Disp("1.7fh = %02x\n", x);
#endif
	

}




//////////
// Function Name : CAMERA_SetSizeInS5K4AAF
// Function Description : camera module(S5K4AAF) Size calucate
// Input : 	IMG_SIZE eSrcSize(Source size)
// Output :    	None
void CAMERA_SetSizeInS5K4AAF(IMG_SIZE eSrcSize)
{
	u8 ucSrcSize;

	oCamera.m_ucSlaveAddr = 0x5a;	

	// PCLK setting
//	CAMERA_SetReg(0xec, 0x00);
//	CAMERA_SetReg(0x71, 0x00); 

	// Size scaling
	//--------------
	ucSrcSize = 
		(eSrcSize == SXGA) ? (0) : 
		(eSrcSize == VGA) ? (1) :
		(eSrcSize == QVGA) ? (2) :
		(eSrcSize == QQVGA) ? (3) :
		(eSrcSize == CIF) ? (4) :
		(eSrcSize == QCIF) ? (5) :
		0xff;
	Assert(ucSrcSize != 0xff);
		
	CAMERA_SetReg(0xec, 0x00);
	CAMERA_SetReg(0x02, ucSrcSize);	

#if 0	// if deleted, no operation..
	// Camera data format, YC order
	//------------------------------
///	u8 uOutSel = (eCcir == CCIR601) ? (1<<2) : (0<<2);
///	u8 uYcSel = (eSrcFmt == YCBYCR || eSrcFmt == YCRYCB) ? (1<<1) : (0<<1);
///	u8 uCrCbSel = (eSrcFmt == YCRYCB || eSrcFmt == CRYCBY) ? (1<<0) : (0<<0);
	
	CAMERA_SetReg(0xec, 0x01);
//	GetReg(0x7f, x);
//	Disp("1.7fh = %02x, 0x%02x\n", x, uOutSel | uYcSel | uCrCbSel);	
	///CAMERA_SetReg(0x7f, uOutSel | uYcSel | uCrCbSel);	
	CAMERA_SetReg(0x7f, 0x46); ////
#endif
}


*/



//////////
// Function Name : CAMERA_InitS5K3BAF
// Function Description : camera module(S5K3BA) initaialize
// Input : 	CAM_ATTR eCcir(Camera Order), CSPACE eSrcFmt(Camera source format), IMG_SIZE eSrcSz(Camera source size)
// Output :    	None
void CAMERA_InitS5K3BAF(CAM_ATTR eCcir, CSPACE eSrcFmt, SUB_SAMPLING eSub)
{
	u32 uHCLKx2;

	SYSC_GetClkInform(); // Get HCLKx2 Frequency
	uHCLKx2 = g_HCLKx2/1000000;
	
	oCamera.m_ucSlaveAddr = 0x5a;

	CAMERA_IICOpen(100000); 

 	 //1. initial setting 
	CAMERA_SetReg(0xfc, 0x01);                                
	CAMERA_SetReg(0x04, 0x03);  //ARM Clock divider(1/4)     

	//CAMERA_SetReg(0xfc, 0x02);                                
	//CAMERA_SetReg(0x52, 0x80);    // PLL M                     
	//CAMERA_SetReg(0x50, 0x14);    //1b    // PLL S,P (15fps)    
	//In case of PCLK = 64MHz 

	CAMERA_SetReg(0xfc, 0x02);
	CAMERA_SetReg(0x52, 0x80);  //PLL M M= 128 setting. 

	switch ( uHCLKx2 )
	{
		case 200:
			CAMERA_SetReg(0xfc, 0x02);
			CAMERA_SetReg(0x50, 0x19);      //PLL S= 0 , P = 25 PCLK=128/2=64Mhz 15 Frmae Setting 
//			CAMERA_SetReg(0x50, 0x14);      //PLL S= 0 , P = 20 PCLK=128/2=64Mhz 15 Frmae Setting 			
//			CAMERA_SetReg(0x50, 0x59);      //PLL S= 1 , P = 25 PCLK=64/2=32Mhz , 7~8Frame Setting
			break;
		case 266:
			CAMERA_SetReg(0xfc, 0x02);
			CAMERA_SetReg(0x50, 0x1A);      //PLL S= 0 , P = 26
			break;
		default:
			printf("Check HCLKx2 is 200 or 266Mhz!!\n");
			Assert(0);
			break;
	}

	CAMERA_SetReg(0xfc, 0x07);
	CAMERA_SetReg(0x58, 0x10);
	CAMERA_SetReg(0x59, 0x00);
	CAMERA_SetReg(0x5A, 0x00);
	CAMERA_SetReg(0x5B, 0x6c);

	CAMERA_SetReg(0xfc, 0xf0); 
	CAMERA_SetReg(0x00, 0x40); 

	CAMERA_SetReg(0xfc, 0x00);
	CAMERA_SetReg(0x62, 0x02);
	CAMERA_SetReg(0xbc, 0xe0);  // AWB_AE_DIFF

	CAMERA_SetReg(0xfc, 0x03);  //************************************************* 
	CAMERA_SetReg(0x2d, 0x03); 
	CAMERA_SetReg(0xfc, 0x01);  
	CAMERA_SetReg(0x02, 0x02);   // YCbCr Order

	CAMERA_SetReg(0xfc, 0x02);    
	CAMERA_SetReg(0x4a, 0xc1);  // SC type selection
	CAMERA_SetReg(0x37, 0x18);  //16    // SC type global gain 
	CAMERA_SetReg(0x47, 0xc4);     // r-ramp  by chin

	CAMERA_SetReg(0xfc, 0x01);  //AWB Window Area (except sky)     
	CAMERA_SetReg(0xc4, 0x01);      
	CAMERA_SetReg(0xc5, 0x4e);           
	CAMERA_SetReg(0xc7, 0x6e);

	CAMERA_SetReg(0xfc, 0x02);
	CAMERA_SetReg(0x30, 0x84);  //Analog offset

	CAMERA_SetReg(0xfc, 0x00);
	CAMERA_SetReg(0x3d, 0x10);  //AWB Low Y limit 

	CAMERA_SetReg(0xfc, 0x02);
	CAMERA_SetReg(0x3d, 0x06);  //ADLC OFF 
	CAMERA_SetReg(0x44, 0x5b);  //clamp enable
	CAMERA_SetReg(0x55, 0x03);

	CAMERA_SetReg(0xfc, 0x06); 
	CAMERA_SetReg(0x0c, 0x01); 
	CAMERA_SetReg(0x0d, 0x4e); 
	CAMERA_SetReg(0x0f, 0x6e);  

	CAMERA_SetReg(0xfc, 0x00);
	CAMERA_SetReg(0x78, 0x58);  //AGC MAX (30lux_Micron灌扁Y=60code)

	CAMERA_SetReg(0xfc, 0x02);
	CAMERA_SetReg(0x45, 0x8c);  //CDS timing_历炼档 greenish 秦搬(15fps)
	CAMERA_SetReg(0x49, 0x80);  // APS Current 2uA

	CAMERA_SetReg(0xfc, 0x01);
	CAMERA_SetReg(0x25, 0x14);  //10    //Digital Clamp 

	CAMERA_SetReg(0xfc, 0x00);
	CAMERA_SetReg(0x6d, 0x01);   //AE target high (Macbeth white=240) 
	CAMERA_SetReg(0x6c, 0x00);  //AE target (Macbeth white=240) 
	//CAMERA_SetReg(0x6d, 0x00);

	//2. ISP tuning //******************************************
	//ISP_tuning
	CAMERA_SetReg(0xfc, 0x00);  
	CAMERA_SetReg(0x01, 0x00);    // I2C hold mode off 

	CAMERA_SetReg(0xfc, 0x01);  
	CAMERA_SetReg(0x00, 0x00);      // ISP BPR Off
	CAMERA_SetReg(0x0c, 0x02);      // Full YC
	CAMERA_SetReg(0xc8, 0x19);  // AWB Y Max

	CAMERA_SetReg(0xfc, 0x00);
	CAMERA_SetReg(0x81, 0x00);      // AWB G gain suppress disable
	CAMERA_SetReg(0x29, 0x04);
	CAMERA_SetReg(0x2a, 0x00);
	CAMERA_SetReg(0x2b, 0x04);  // color level                  
	CAMERA_SetReg(0x2c, 0x00);  

	CAMERA_SetReg(0xfc, 0x07);  
	CAMERA_SetReg(0x11, 0x00);      // G offset
	CAMERA_SetReg(0x37, 0x00);      // Flicker Add

	CAMERA_SetReg(0xfc, 0x00);  
	CAMERA_SetReg(0x72, 0xa0);      // Flicker for 32MHz
	CAMERA_SetReg(0x74, 0x18);      // Flicker
	CAMERA_SetReg(0x73, 0x00);  // Frame AE

	CAMERA_SetReg(0xfc, 0x05);                   
	CAMERA_SetReg(0x64, 0x00);      // Darkslice R
	CAMERA_SetReg(0x65, 0x00);      // Darkslice G
	CAMERA_SetReg(0x66, 0x00);      // Darkslice B

	//Edge                                  
	CAMERA_SetReg(0xfc, 0x05); 
	CAMERA_SetReg(0x2c, 0x0a);  //14    // positive gain                   
	CAMERA_SetReg(0x30, 0x0a);  //10    // negative edge gain
	CAMERA_SetReg(0x34, 0x1a);   // APTCLP  
	CAMERA_SetReg(0x35, 0x10);  //0a   // APTSC  
	CAMERA_SetReg(0x36, 0x0b);   // ENHANCE 
	CAMERA_SetReg(0x3f, 0x00);   // NON-LIN 
	CAMERA_SetReg(0x45, 0x30);   // EGREF  
	CAMERA_SetReg(0x47, 0x00);   // LLREF
	CAMERA_SetReg(0x48, 0x08);   // by chin
	CAMERA_SetReg(0x49, 0x39);   // CSSEL  EGSEL  CS_DLY by 
	CAMERA_SetReg(0x40, 0x41);  // Y delay

	////////////////////////////////////
	CAMERA_SetReg(0xfc, 0x00);  
	CAMERA_SetReg(0x7e, 0xfc);  
	//s7e8c  //NR GrGb off
	// [7]: BPR [6]:Noise Filter(1D/NR) [4]: GrGb Enable [3]:BPR Data Threshold 
	// [2]: color suppress [1]: Y gain suppress [0]: Digital Clamp
	///////////////////////////////////
	////////////////////////////////////
	// GrGb Correction setting
	CAMERA_SetReg(0xfc, 0x01);  
	CAMERA_SetReg(0x44, 0x0c);       

	//s4400      
	/// [4]: GrGb full [3]: GrGb On
	/// [2]: GrGb Rb On 
	CAMERA_SetReg(0xfc, 0x0b);  
	CAMERA_SetReg(0x21, 0x00);      // Start AGC
	CAMERA_SetReg(0x22, 0x10);      // AGCMIN
	CAMERA_SetReg(0x23, 0x50);      // AGCMAX
	CAMERA_SetReg(0x24, 0x18);  // G Th AGCMIN(23d)
	CAMERA_SetReg(0x25, 0x52);      // G Th AGCMAX(50d)
	CAMERA_SetReg(0x26, 0x38);  // RB Th AGCMIN
	CAMERA_SetReg(0x27, 0x52);      // RB Th AGCMAX
	// GrGb Correction setting End

	///////////////////////////////////
	// BPR Setting      
	CAMERA_SetReg(0xfc, 0x01);         
	CAMERA_SetReg(0x3f, 0x00);      // setting because S/W bug

	CAMERA_SetReg(0xfc, 0x0b);  
	CAMERA_SetReg(0x0b, 0x00);      // ISP BPR On Start
	CAMERA_SetReg(0x0c, 0x00);      // Th13 AGC Min
	CAMERA_SetReg(0x0d, 0x5a);  // Th13 AGC Max
	CAMERA_SetReg(0x0e, 0x01);  //00    // Th1 Max H for AGCMIN
	CAMERA_SetReg(0x0f, 0xff);  //c0    // Th1 Max L for AGCMIN
	CAMERA_SetReg(0x10, 0x00);      // Th1 Min H for AGCMAX
	CAMERA_SetReg(0x11, 0x10);      //00    // Th1 Min L for AGCMAX
	CAMERA_SetReg(0x12, 0xff);      // Th3 Max H for AGCMIN
	CAMERA_SetReg(0x13, 0xff);     // Th3 Max L for AGCMIN
	CAMERA_SetReg(0x14, 0xff);     // Th3 Min H for AGCMAX
	CAMERA_SetReg(0x15, 0xff);     // Th3 Min L for AGCMAX
	///////////////////////////////////////////

	// NR Setting
	CAMERA_SetReg(0xfc, 0x01);  
	CAMERA_SetReg(0x4b, 0x01);      // NR Enable
	//s4b00     // NR Enable

	CAMERA_SetReg(0xfc, 0x0b);                             
	CAMERA_SetReg(0x28, 0x00);      //NR Start AGC             
	CAMERA_SetReg(0x29, 0x00);      // SIG Th AGCMIN H   
	CAMERA_SetReg(0x2a, 0x0a);  //14    // SIG Th AGCMIN L   
	CAMERA_SetReg(0x2b, 0x00);      // SIG Th AGCMAX H   
	CAMERA_SetReg(0x2c, 0x0a);  //14    // SIG Th AGCMAX L   
	CAMERA_SetReg(0x2d, 0x00);      // PRE Th AGCMIN H   
	CAMERA_SetReg(0x2e, 0xc0);  //64    // PRE Th AGCMIN L(100d)   
	CAMERA_SetReg(0x2f, 0x01);      // PRE Th AGCMAX H(300d)   
	CAMERA_SetReg(0x30, 0x2c);      // PRE Th AGCMAX L   
	CAMERA_SetReg(0x31, 0x00);      // POST Th AGCMIN H  
	CAMERA_SetReg(0x32, 0xe0);  //64    // POST Th AGCMIN L(100d)  
	CAMERA_SetReg(0x33, 0x01);      // POST Th AGCMAX H(300d)
	CAMERA_SetReg(0x34, 0x2c);      // POST Th AGCMAX L  
	// NR Setting End

	////////////////////////////////
	// Color suppress setting
	CAMERA_SetReg(0xfc, 0x0b);  
	CAMERA_SetReg(0x08, 0x50);      // C suppress AGC MIN
	CAMERA_SetReg(0x09, 0x03);      // C suppress MIN H
	CAMERA_SetReg(0x0a, 0x80);      // C suppress MIN L
	// C Suppress Setting End

	CAMERA_SetReg(0xfc, 0x05);
	CAMERA_SetReg(0x4a, 0x00);  //01    // Edge Color Suppress, 9/13
	///////////////////////////////

	// 1D Y LPF Filter             
	CAMERA_SetReg(0xfc, 0x01);                            
	//s05e0     // Default s60        
	CAMERA_SetReg(0x05, 0x60);      // Default s60        
	//[7]: Y LPF filter On [6]: Clap On

	CAMERA_SetReg(0xfc, 0x0b);                            
	CAMERA_SetReg(0x35, 0x00);      // YLPF Start AGC      
	CAMERA_SetReg(0x36, 0x50);      // YLPF01 AGCMIN       
	CAMERA_SetReg(0x37, 0x50);      // YLPF01 AGCMAX       
	CAMERA_SetReg(0x38, 0x00);      // YLPF SIG01 Th AGCMINH
	CAMERA_SetReg(0x39, 0x90);  //00    // YLPF SIG01 Th AGCMINL   
	CAMERA_SetReg(0x3a, 0x01);   // YLPF SIG01 Th AGCMAXH   
	CAMERA_SetReg(0x3b, 0xa0);   // YLPF SIG01 Th AGCMAXL               
	CAMERA_SetReg(0x3c, 0x50);      // YLPF02 AGCMIN           
	CAMERA_SetReg(0x3d, 0x50);   // YLPF02 AGCMAX           
	CAMERA_SetReg(0x3e, 0x00);   // YLPF SIG02 Th AGCMINH   
	CAMERA_SetReg(0x3f, 0xa0);  //00   // YLPF SIG02 Th AGCMINL   
	CAMERA_SetReg(0x40, 0x01);   // YLPF SIG02 Th AGCMAXH   s73
	CAMERA_SetReg(0x41, 0xb0);   // YLPF SIG02 Th AGCMAXL   
	// Y LPF Filter setting End 

	// SET EDGE COLOR SUPPRESS AND Y-LPF(决 氓烙丛 mail 眠啊)************************************ 
	CAMERA_SetReg(0xfc, 0x05);
	CAMERA_SetReg(0x42, 0x1F);
	CAMERA_SetReg(0x43, 0x1F);
	CAMERA_SetReg(0x44, 0x0E);
	CAMERA_SetReg(0x45, 0x8C);    //歹 suppres窍绊磊窍搁 5a, 0x 弊 捞窍绰 side effect 锭巩俊 救凳.
	CAMERA_SetReg(0x46, 0x7A);
	CAMERA_SetReg(0x47, 0x60);
	CAMERA_SetReg(0x48, 0x0C);
	CAMERA_SetReg(0x49, 0x39);
	CAMERA_SetReg(0x4A, 0x01);
	CAMERA_SetReg(0x4B, 0xB1);
	CAMERA_SetReg(0x4C, 0x3B);
	CAMERA_SetReg(0x4D, 0x14);
	//*******************************************************************************************  
	///////////////////////////////////////////
	// NR Setting
	CAMERA_SetReg(0xfc, 0x01);  
	CAMERA_SetReg(0x4b, 0x01);      // NR Enable
	// Set multipliers (which are not suppressed)_(决 氓烙丛 mail 眠啊)**************************
	CAMERA_SetReg(0xfc, 0x01);
	CAMERA_SetReg(0x48, 0x11);
	// Suppressed parameters

	CAMERA_SetReg(0xfc, 0x0B);
	CAMERA_SetReg(0x21, 0x00);
	CAMERA_SetReg(0x22, 0x10);
	CAMERA_SetReg(0x23, 0x60);
	CAMERA_SetReg(0x24, 0x10);
	CAMERA_SetReg(0x25, 0x28);
	CAMERA_SetReg(0x26, 0x08);
	CAMERA_SetReg(0x27, 0x20);
	CAMERA_SetReg(0x28, 0x00);    //NR Start AGC                    
	CAMERA_SetReg(0x29, 0x00);    // SIG Th AGCMIN H              
	CAMERA_SetReg(0x2A, 0x02);    // SIG Th AGCMIN L      
	CAMERA_SetReg(0x2B, 0x00);    // SIG Th AGCMAX H              
	CAMERA_SetReg(0x2C, 0x14);    // SIG Th AGCMAX L      
	CAMERA_SetReg(0x2D, 0x03);    // PRE Th AGCMIN H              
	CAMERA_SetReg(0x2E, 0x84);    // PRE Th AGCMIN L
	CAMERA_SetReg(0x2F, 0x03);    // PRE Th AGCMAX H        
	CAMERA_SetReg(0x30, 0x84);    // PRE Th AGCMAX L              
	CAMERA_SetReg(0x31, 0x00);    // POST Th AGCMIN H             
	CAMERA_SetReg(0x32, 0x00);    // POST Th AGCMIN L
	CAMERA_SetReg(0x33, 0x00);    // POST Th AGCMAX H      
	CAMERA_SetReg(0x34, 0xC8);    // POST Th AGCMAX L             
	CAMERA_SetReg(0x35, 0x00);  //1D Y filter setting 
	CAMERA_SetReg(0x36, 0x10);
	CAMERA_SetReg(0x37, 0x50);
	CAMERA_SetReg(0x38, 0x00);
	CAMERA_SetReg(0x39, 0x14);
	CAMERA_SetReg(0x3A, 0x00);
	CAMERA_SetReg(0x3B, 0x50);
	CAMERA_SetReg(0x3C, 0x10);
	CAMERA_SetReg(0x3D, 0x50);
	CAMERA_SetReg(0x3E, 0x00);
	CAMERA_SetReg(0x3F, 0x28);
	CAMERA_SetReg(0x40, 0x00);
	CAMERA_SetReg(0x41, 0xA0);
	//*******************************************************************************************

	//决 氓烙丛 mail 眠啊 ***********************************************************************
	// To avoid AWB tracking @ max AGC gain even though AE is unstable state
	CAMERA_SetReg(0xfc, 0x00);
	CAMERA_SetReg(0xba, 0x50);   // AE Target minus AE Average
	CAMERA_SetReg(0xbb, 0x00);
	CAMERA_SetReg(0xbc, 0x00);
	//*******************************************************************************************

	//3. AE weight & etc linear
	// AE Window Weight linear(EVT1)0929   
	CAMERA_SetReg(0xfc, 0x20);  // upper window weight zero
	CAMERA_SetReg(0x60, 0x11);
	CAMERA_SetReg(0x61, 0x11);
	CAMERA_SetReg(0x62, 0x11);
	CAMERA_SetReg(0x63, 0x11);
	CAMERA_SetReg(0x64, 0x11);
	CAMERA_SetReg(0x65, 0x11);
	CAMERA_SetReg(0x66, 0x11);
	CAMERA_SetReg(0x67, 0x11);
	CAMERA_SetReg(0x68, 0x11);
	CAMERA_SetReg(0x69, 0x11);
	CAMERA_SetReg(0x6a, 0x11);
	CAMERA_SetReg(0x6b, 0x11);
	CAMERA_SetReg(0x6c, 0x11);
	CAMERA_SetReg(0x6d, 0x11);
	CAMERA_SetReg(0x6e, 0x11);
	CAMERA_SetReg(0x6f, 0x11);
	CAMERA_SetReg(0x70, 0x11);
	CAMERA_SetReg(0x71, 0x11);
	CAMERA_SetReg(0x72, 0x11);
	CAMERA_SetReg(0x73, 0x11);
	CAMERA_SetReg(0x74, 0x11);
	CAMERA_SetReg(0x75, 0x11);
	CAMERA_SetReg(0x76, 0x11);

⌨️ 快捷键说明

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