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

📄 cameram.c

📁 s3c6400 ADS下官方测试程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	CAMERA_SetReg(0xec,0x03);
	CAMERA_SetReg(0x51,0x00);	//Vblank
	CAMERA_SetReg(0x52,0x7e);
	CAMERA_SetReg(0x53,0x01);	//HSIZE Min is 1070
	CAMERA_SetReg(0x54,0xa6);
	CAMERA_SetReg(0x55,0x0f);	// <1.69h>
	CAMERA_SetReg(0x56,0x01);	//07	// <1.6ah>
	CAMERA_SetReg(0x5e,0x3a);	//3b	// <1.78h> HBLK_START
	CAMERA_SetReg(0x5f,0x02);
	CAMERA_SetReg(0x60,0x80);
	CAMERA_SetReg(0x63,0x01);
	CAMERA_SetReg(0x64,0xe0);
	CAMERA_SetReg(0x68,0x3a);	//3b	// <1.82h> HS656_START
	CAMERA_SetReg(0x69,0x02);
	CAMERA_SetReg(0x6a,0x80);
	CAMERA_SetReg(0x6d,0x01);
	CAMERA_SetReg(0x6e,0xe0);

	/////////////////////////////
	///Flicker setting
	CAMERA_SetReg(0xec,0x00);
	CAMERA_SetReg(0x74,0x18);  // Auto Flicker start 60hz for 7.5fps

	/////////////////////////////
	// Frame AE 
	CAMERA_SetReg(0xec,0x00);
//	CAMERA_SetReg(0x73,0x11);	// frame 1/2
	CAMERA_SetReg(0x73,0x00);	// frame 1/2	
#endif


#if 1
	CAMERA_SetReg(0xec,0x01);
	CAMERA_SetReg(0x3b,0x18);	//GrGb correction
	CAMERA_SetReg(0xaa,0xe8);//e0	//For AWB, High Threshold Value of Y signal
	CAMERA_SetReg(0xab,0x10);//30	//For AWB, Low Threshold Value of Y signal

	//***************************************************
	// page 2
	CAMERA_SetReg(0xec,0x02);
	CAMERA_SetReg(0x29,0x4f);	//Clamp On(Sun Spot)
	CAMERA_SetReg(0x2d,0x05);	//APS Bias Current (I_APS_CTRL)

#endif

#if 0 
	//***************************************************
	// page 3
	/////////////////////////////
	// Subsampling
	//QVGA Subsampling 640x480
	CAMERA_SetReg(0xec,0x03);
	CAMERA_SetReg(0x51,0x00);	//Vblank
	CAMERA_SetReg(0x52,0x7e);
	CAMERA_SetReg(0x53,0x01);	//HSIZE Min is 1070
	CAMERA_SetReg(0x54,0xa6);
	CAMERA_SetReg(0x55,0x0f);	// <1.69h>
	CAMERA_SetReg(0x56,0x06);	//07	// <1.6ah>
	CAMERA_SetReg(0x5e,0x3a);	//3b	// <1.78h> HBLK_START
	CAMERA_SetReg(0x5f,0x02);
	CAMERA_SetReg(0x60,0x80);
	CAMERA_SetReg(0x63,0x01);
	CAMERA_SetReg(0x64,0xe0);
	CAMERA_SetReg(0x68,0x3a);	//3b	// <1.82h> HS656_START
	CAMERA_SetReg(0x69,0x02);
	CAMERA_SetReg(0x6a,0x80);
	CAMERA_SetReg(0x6d,0x01);
	CAMERA_SetReg(0x6e,0xe0);
	//QVGA Subsampling 320x240
	CAMERA_SetReg(0xa1,0x00);	//Vblank
	CAMERA_SetReg(0xa2,0x7e);
	CAMERA_SetReg(0xa3,0x01);	//HSIZE Min is 1070
	CAMERA_SetReg(0xa4,0xa6);
	CAMERA_SetReg(0xa5,0x0f);	// <1.69h>
	CAMERA_SetReg(0xa6,0x07);	// <1.6ah>
	CAMERA_SetReg(0xae,0x39);	// <1.78h> HBLK_START
	CAMERA_SetReg(0xaf,0x01);	//320
	CAMERA_SetReg(0xb0,0x40);
	CAMERA_SetReg(0xb3,0x00);	//240
	CAMERA_SetReg(0xb4,0xf0);
	CAMERA_SetReg(0xb8,0x39);	// <1.82h> HS656_START
	CAMERA_SetReg(0xb9,0x01); 	//320 
	CAMERA_SetReg(0xba,0x40);
	CAMERA_SetReg(0xbd,0x00);  	//240
	CAMERA_SetReg(0xbe,0xf0);
#endif

	//***************************************************
	// page 6
	CAMERA_SetReg(0xec,0x06);
	CAMERA_SetReg(0xbc,0x0b);	//Modify wrp wcp for mirror, VGA
	CAMERA_SetReg(0xbd,0x0c);
	CAMERA_SetReg(0xbe,0x0b);
	CAMERA_SetReg(0xbf,0x0c);
	CAMERA_SetReg(0xdc,0x0b);	//Modify wrp wcp for mirror, QVGA
	CAMERA_SetReg(0xdd,0x0c);
	CAMERA_SetReg(0xde,0x0b);
	CAMERA_SetReg(0xdf,0x0c);

#if 0 
	//***************************************************
	// page 4
	/////////////////////////////
	// ScaleDown
	CAMERA_SetReg(0xec,0x04);
	//VGA scaledown
	CAMERA_SetReg(0x2d,0x7d	);//<1.69h>
	CAMERA_SetReg(0x2e,0x07	);//06	//<1.6ah>
	CAMERA_SetReg(0x2f,0x05	);//HCNT_END_H
	CAMERA_SetReg(0x30,0x9f	);//HCNT_END_L
	CAMERA_SetReg(0x36,0x10	);//42	//HBLK_START_L   
	CAMERA_SetReg(0x37,0x04	);//HBLK_OFFSET_H
	CAMERA_SetReg(0x38,0xff );  //HBLK_OFFSET_L
	CAMERA_SetReg(0x3a,0x05 );  //VBLK_START_L 
	CAMERA_SetReg(0x40,0x11	);//45   //HS656_START_L
	CAMERA_SetReg(0x42,0x01	);//HS656_OFFSET_L
	CAMERA_SetReg(0x44,0x0a	);//VS656_START_L
	CAMERA_SetReg(0x4c,0x00	);//<1.93h>
	CAMERA_SetReg(0x4d,0x00	);//<1.94h>
	CAMERA_SetReg(0x4e,0x00	);//<1.95h>
	//QVGA scaledown
	CAMERA_SetReg(0x55,0x35);	//<1.69h>
	CAMERA_SetReg(0x56,0x06); 	//<1.6ah>
	CAMERA_SetReg(0x57,0x05);	//HCNT_END_H
	CAMERA_SetReg(0x58,0x9f);	//HCNT_END_L
	CAMERA_SetReg(0x5e,0x6b);	//b3	//HBLK_START_L
	CAMERA_SetReg(0x60,0x00);  	//HBLK_OFFSET_L
	CAMERA_SetReg(0x64,0xf2);	//VBLK_OFFSET_L
	CAMERA_SetReg(0x68,0x6c);	//b4	//HS656_START_L
	CAMERA_SetReg(0x6c,0x06);   //VS656_START_L
	CAMERA_SetReg(0x74,0x00);	//<1.93h>
	CAMERA_SetReg(0x75,0x00);	//<1.94h>
	CAMERA_SetReg(0x76,0x00);	//<1.95h>
	//QQVGA scaledown
	CAMERA_SetReg(0x7d,0x57);	//<1.69h>
	CAMERA_SetReg(0x7e,0x07);	//<1.6ah>   
	CAMERA_SetReg(0x7f,0x05);	//HCNT_END_H
	CAMERA_SetReg(0x80,0x9f);	//HCNT_END_L     
	CAMERA_SetReg(0x86,0x2f);	//7d   //HBLK_START_L   
	CAMERA_SetReg(0x8f,0x05);	//HS656_START_H 
	CAMERA_SetReg(0x90,0xa3);	//bf	//HS656_START_L 
	CAMERA_SetReg(0x9c,0x00);	//<1.93h>
	CAMERA_SetReg(0x9d,0x00);	//<1.94h>
	CAMERA_SetReg(0x9e,0x00);	//<1.95h>
	//CIF scaledown
	CAMERA_SetReg(0xa5,0x51);	//<1.69h>
	CAMERA_SetReg(0xa6,0x06);	//<1.6ah>      
	CAMERA_SetReg(0xae,0xc9);   //HBLK_START_L 
	CAMERA_SetReg(0xb0,0x7f);   //HBLK_OFFSET_L
	CAMERA_SetReg(0xb2,0x04); 	//VBLK_START_L 
	CAMERA_SetReg(0xb8,0xaf);	//HS656_START_L
	CAMERA_SetReg(0xba,0xa0);	//HS656_OFFSET_L
	CAMERA_SetReg(0xbc,0x08);	//VS656_START_L
	//QCIF scaledown
	CAMERA_SetReg(0xcd,0x33);	//<1.69h>
	CAMERA_SetReg(0xce,0x07);	//<1.6ah>     
	CAMERA_SetReg(0xd6,0x8e);   //HBLK_START_L
	CAMERA_SetReg(0xd8,0x81);	//HBLK_OFFSET_L
	CAMERA_SetReg(0xda,0x03);   //VBLK_CAMERA_SetReg(0xTART_L 
	CAMERA_SetReg(0xe0,0x7e);	//HS656_START_L 
	CAMERA_SetReg(0xe2,0x90);   //HS656_OFFSET_L
	CAMERA_SetReg(0xe4,0x08);   //VS656_START_L 
#endif

#if 1 // Tunning Code
	//***************************************************
	// page 5
	CAMERA_SetReg(0xec,0x05);
	//s000f	//Y Shading, RGB Shading ON
	CAMERA_SetReg(0x00,0x0d);	//Y Shading, RGB Shading OFF

	//RGB Shading
	CAMERA_SetReg(0x05,0x02);
	CAMERA_SetReg(0x06,0x02);
	CAMERA_SetReg(0x07,0x02);
	CAMERA_SetReg(0x08,0x02);  

	///Y Shading
	CAMERA_SetReg(0x2d,0xf0);	//c8	//d0	
	CAMERA_SetReg(0x2e,0xc0);	//a8	//b0	
	CAMERA_SetReg(0x2f,0xa0);	//98	//a0	
	CAMERA_SetReg(0x30,0x84);	//88	//88	
	CAMERA_SetReg(0x31,0x84);	//88	//88	
	CAMERA_SetReg(0x32,0xa0);	//98	//a0	
	CAMERA_SetReg(0x33,0xc0);	//a8	//b0	
	CAMERA_SetReg(0x34,0xf0);	//c8	//d0	
	  
	CAMERA_SetReg(0x35,0xf0);	//c8	//d0	
	CAMERA_SetReg(0x36,0xc0);	//a8	//b0	
	CAMERA_SetReg(0x37,0xa0);	//98	//98	
	CAMERA_SetReg(0x38,0x84);	//88	//88	
	CAMERA_SetReg(0x39,0x84);	//88	//88	
	CAMERA_SetReg(0x3a,0xa0);	//98	//98	
	CAMERA_SetReg(0x3b,0xc0);	//a8	//b0	
	CAMERA_SetReg(0x3c,0xf0);	//c8	//d0	

	//***************************************************
	// page 7
	CAMERA_SetReg(0xec,0x07);
	CAMERA_SetReg(0x17,0x44);	//AWBGgain
	CAMERA_SetReg(0x11,0xfe);	//Ggain offset
	CAMERA_SetReg(0x80,0x0c);	//AE weight

	//***************************************************
	// page 0
	CAMERA_SetReg(0xec,0x00);
	CAMERA_SetReg(0x23,0x32);	//using wrpwcp mirror
	CAMERA_SetReg(0x6c,0x00);	//AE target Low
	CAMERA_SetReg(0x77,0xd0);	//color level
	CAMERA_SetReg(0x7e,0x86);	//DBPRM On, Color Suppress On, Y gain On, Digital clamp Off
	CAMERA_SetReg(0x83,0xa0);	//c0	//Color suppress
	CAMERA_SetReg(0xbb,0x01);	//AWB AE diff
	CAMERA_SetReg(0xbc,0x00);

	////////////////////////////
	//Edge Suppress
	CAMERA_SetReg(0xe0,0x0f);
	CAMERA_SetReg(0xe1,0x50);	//AGC Min to Start Edge suppress
	CAMERA_SetReg(0xe2,0x60);	//AGC Max
	CAMERA_SetReg(0xe3,0x10);	//Edge Coefficient for AGC Min
	CAMERA_SetReg(0xe4,0x00);	//Edge Coefficient for AGC Max
	CAMERA_SetReg(0xe5,0x60);	//AGC Position
	CAMERA_SetReg(0xe6,0x40);	//Edge Gain lower than the position
	CAMERA_SetReg(0xe7,0x00);	//Edge Gain higer than the position

	/////////////////////////////
	//Adjust AWB boundary
	CAMERA_SetReg(0x34,0x05);	//Rgain_max
	CAMERA_SetReg(0x35,0x0b);	//Bgain_max
	CAMERA_SetReg(0x36,0x09);	//R_limit high
	CAMERA_SetReg(0x37,0x0b);	//B_limit high
	CAMERA_SetReg(0x39,0x07);	//Blimit Low
	CAMERA_SetReg(0x3a,0x0a);	//slop bottom
	CAMERA_SetReg(0x3b,0x0e);	//slop top

	//Adjust RGBgain of AWB
	CAMERA_SetReg(0x79,0x00);	//Rgain offset
	CAMERA_SetReg(0x7a,0x02);	//Bgain offset

	//White Point
	CAMERA_SetReg(0x40,0x1c);	        
	CAMERA_SetReg(0x41,0x4a);	        
	CAMERA_SetReg(0x42,0x21);	//22	
	CAMERA_SetReg(0x43,0x3c);	//3a	
	CAMERA_SetReg(0x44,0x2e);	//2e	
	CAMERA_SetReg(0x45,0x2d);	//2c	

	//Hue, Gain control                           
	CAMERA_SetReg(0x48,0xd0);	//d0	//80                  
	CAMERA_SetReg(0x49,0xfe);	//fe	//80  
	CAMERA_SetReg(0x4a,0x48);	//48	//00                  
	CAMERA_SetReg(0x4b,0x30);	//38	//00   
	CAMERA_SetReg(0x4c,0xfe);	//fe	//80   
	CAMERA_SetReg(0x4d,0xfe);	//fe	//80   
	CAMERA_SetReg(0x4e,0x60);	//48	//00  
	CAMERA_SetReg(0x4f,0x00);	//10	//00   
	     	//       
	CAMERA_SetReg(0x50,0xc8);	//c0	//80                       
	CAMERA_SetReg(0x51,0xfe);	//fe	//80       
	CAMERA_SetReg(0x52,0x4a);	//4a	//00               
	CAMERA_SetReg(0x53,0x30);	//38	//00
	CAMERA_SetReg(0x54,0xfe);	//fe	//80
	CAMERA_SetReg(0x55,0xfe);	//fe	//80     
	CAMERA_SetReg(0x56,0x60);	//50	//00     
	CAMERA_SetReg(0x57,0x00);	//10	//00
	          
	CAMERA_SetReg(0x58,0xb0);	//80
	CAMERA_SetReg(0x59,0xfe);	//80
	CAMERA_SetReg(0x5a,0x50);	//00
	CAMERA_SetReg(0x5b,0x48);	//00
	CAMERA_SetReg(0x5c,0xf0);	//80
	CAMERA_SetReg(0x5d,0xfe);	//80
	CAMERA_SetReg(0x5e,0x50);	//00
	CAMERA_SetReg(0x5f,0x10);	//00
#endif 


	CAMERA_SetReg(0xec, 0x00);	// Bright Setting. 
	CAMERA_SetReg(0x76, 0xa0);	// Brightness

	/////////////////////////////
	///Flicker setting
	CAMERA_SetReg(0xec,0x00);
//	CAMERA_SetReg(0x74,0x18);  // Auto Flicker start 60hz for 7.5fps
	CAMERA_SetReg(0x74,0x00);  // Auto Flicker start 60hz for 7.5fps	

	/////////////////////////////
	// Frame AE 
	CAMERA_SetReg(0xec,0x00);
//	CAMERA_SetReg(0x73,0x11);	// frame 1/2
	CAMERA_SetReg(0x73,0x00);	// frame 1/2	


	CAMERA_IICClose();



}


//////////
// Function Name : CAMERA_SetSizeInS5K3AAE
// Function Description : camera module(S5K3AAE) Size calucate
// Input : 	IMG_SIZE eSrcSize(Source size)
// Output :    	None
void CAMERA_SetSizeInS5K3AAE(IMG_SIZE eSrcSize)
{	
	u8 y, x, ucSrcSize;
	int i;

	oCamera.m_ucSlaveAddr = 0x5a;

	// Size scaling setting
	ucSrcSize = 
		(eSrcSize == SXGA) ? (0) : 
		(eSrcSize == VGA) ? (1) :
		(eSrcSize == QVGA) ? (2):
		(eSrcSize == QQVGA) ? (3) :
		(eSrcSize == CIF) ? (4) :
		(eSrcSize == QCIF) ? (5) :
		0xff;
	Assert(ucSrcSize != 0xff);

//	SetEVT6(eSrcSize);

	CAMERA_SetReg(0xec, 0x00);	
	CAMERA_SetReg(0x02, ucSrcSize);
//	CAMERA_SetReg(0x02, 0x00);

	CAMERA_SetReg(0xec, 0x00);
	CAMERA_GetReg(0x02, &x);
	printf("\nImage Size Setting is %d ===> %d(0:SXGA 1:VGA)\n", ucSrcSize, x);

	CAMERA_SetReg(0xec, 0x04);
	if(eSrcSize == SXGA)
		y=0;
	else if(eSrcSize == VGA)
		y=0x28;
	for(i=0; i <= 0x27 ; i++)
	{
		CAMERA_GetReg(y+i, &x);
//		Disp("4.%x = %x\n",i+y,x);
	}


}



/*
//////////
// Function Name : CAMERA_InitS5K4AAF
// Function Description : camera module(S5K4AAF) initaialize
// Input : 	CAM_ATTR eCcir(Camera Order), CSPACE eSrcFmt(Camera source format), IMG_SIZE eSrcSz(Camera source size)
// Output :    	None
void CAMERA_InitS5K4AAF(CAM_ATTR eCcir, CSPACE eSrcFmt, IMG_SIZE eSrcSize)
{
	u8 x;
	u8 ucSrcSize;
	u8 uOutSel;
	u8 uYcSel;
	u8 uCrCbSel;

//	IIC_Init();
	oCamera.m_ucSlaveAddr = 0x5a;

#if 1
//	GetReg(0x02, x);
//	Disp(" 0.02h = %02x\n", x);
	CAMERA_SetReg(0xec, 0x00);
	CAMERA_SetReg(0x71, 0x00); // PCLK setting
#else  // 9.5
	CAMERA_SetReg(0xec, 0x01);
	CAMERA_SetReg(0xa5, 0x01);		//ARM Clock divider=ARM_CLK_DIV (1/2) (ARM_CLK range = 14MHz ~ 44MHz)				
	
	//In case of PCLK = 27MHz (PLL_CLK = Pixel_CLK*2, ARM_CLK = PLL_CLK/ARM_CLK_DIV )
	CAMERA_SetReg(0xec, 0x01);
	CAMERA_SetReg(0xa1, 54);		//PLL M=54	
	CAMERA_SetReg(0xa2, 0x48);      	//PLL S=1,P=8
#endif
	// 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 1	// if deleted, no operation..
	// Camera data format, YC order
	//------------------------------
	uOutSel = (eCcir == CCIR601) ? (1<<2) : (0<<2);
	uYcSel = (eSrcFmt == YCBYCR || eSrcFmt == YCRYCB) ? (1<<1) : (0<<1);
	uCrCbSel = (eSrcFmt == YCRYCB || eSrcFmt == CRYCBY) ? (1<<0) : (0<<0);
	
	CAMERA_SetReg(0xec, 0x01);
	CAMERA_GetReg(0x7f, &x);
	Disp("1.7fh = %02x, 0x%02x\n", x, uOutSel | uYcSel | uCrCbSel);	
	CAMERA_SetReg(0x7f, uOutSel | uYcSel | uCrCbSel);	

⌨️ 快捷键说明

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