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

📄 l2_fponcmos.c

📁 dz3000_51.0.0.4.rar
💻 C
📖 第 1 页 / 共 5 页
字号:
  reg_addr[2]   = 0x05;
  reg_data[2]   = 0x00;
  reg_addr[3]   = 0x06;
  reg_data[3]   = 0x05;
  reg_addr[4]   = 0x08;
  reg_data[4]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x05, 0x02);  //Set Burst SSC Write

//Vector 4
  reg_addr[0]   = 0x03;
  reg_data[0]   = 0x04;
  reg_addr[1]   = 0x04;
  reg_data[1]   = 0x39;
  reg_addr[2]   = 0x05;
  reg_data[2]   = 0x00;
  reg_addr[3]   = 0x06;
  reg_data[3]   = 0x0d;
  reg_addr[4]   = 0x08;
  reg_data[4]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x05, 0x02);  //Set Burst SSC Write

//Vector 5
  reg_addr[0]   = 0x03;
  reg_data[0]   = 0x05;
  reg_addr[1]   = 0x04;
  reg_data[1]   = 0x3b;
  reg_addr[2]   = 0x05;
  reg_data[2]   = 0x00;
  reg_addr[3]   = 0x06;
  reg_data[3]   = 0x05;
  reg_addr[4]   = 0x08;
  reg_data[4]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x05, 0x02);  //Set Burst SSC Write

//Vector 6
  reg_addr[0]   = 0x03;
  reg_data[0]   = 0x06;
  reg_addr[1]   = 0x04;
  reg_data[1]   = 0x34;
  reg_addr[2]   = 0x05;
  reg_data[2]   = 0x06;
  reg_addr[3]   = 0x06;
  reg_data[3]   = 0x05;
  reg_addr[4]   = 0x08;
  reg_data[4]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x05, 0x02);  //Set Burst SSC Write

//Vector 7
  reg_addr[0]   = 0x03;
  reg_data[0]   = 0x07;
  reg_addr[1]   = 0x04;
  reg_data[1]   = 0x38;
  reg_addr[2]   = 0x05;
  reg_data[2]   = 0x02;
  reg_addr[3]   = 0x06;
  reg_data[3]   = 0x05;
  reg_addr[4]   = 0x08;
  reg_data[4]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x05, 0x02);  //Set Burst SSC Write

//Vector 8
  reg_addr[0]   = 0x03;
  reg_data[0]   = 0x08;
  reg_addr[1]   = 0x04;
  reg_data[1]   = 0x3e;
  reg_addr[2]   = 0x05;
  reg_data[2]   = 0x8A;
  reg_addr[3]   = 0x06;
  reg_data[3]   = 0x05;
  reg_addr[4]   = 0x08;
  reg_data[4]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x05, 0x02);  //Set Burst SSC Write

//Vector 9
  reg_addr[0]   = 0x03;
  reg_data[0]   = 0x09;
  reg_addr[1]   = 0x04;
  reg_data[1]   = 0x42;
  reg_addr[2]   = 0x05;
  reg_data[2]   = 0x8A;
  reg_addr[3]   = 0x06;
  reg_data[3]   = 0x0D;
  reg_addr[4]   = 0x08;
  reg_data[4]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x05, 0x02);  //Set Burst SSC Write

//Vector 10
  reg_addr[0]   = 0x03;
  reg_data[0]   = 0x0A;
  reg_addr[1]   = 0x04;
  reg_data[1]   = 0x44;
  reg_addr[2]   = 0x05;
  reg_data[2]   = 0x8A;
  reg_addr[3]   = 0x06;
  reg_data[3]   = 0x05;
  reg_addr[4]   = 0x08;
  reg_data[4]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x05, 0x02);  //Set Burst SSC Write

//Vector 11
  reg_addr[0]   = 0x03;
  reg_data[0]   = 0x0B;
  reg_addr[1]   = 0x04;
  reg_data[1]   = 0x0C;
  reg_addr[2]   = 0x05;
  reg_data[2]   = 0x8F;
  reg_addr[3]   = 0x06;
  reg_data[3]   = 0x05;
  reg_addr[4]   = 0x08;
  reg_data[4]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x05, 0x02);  //Set Burst SSC Write

//Vector 12
  reg_addr[0]   = 0x03;
  reg_data[0]   = 0x0C;
  reg_addr[1]   = 0x04;
  reg_data[1]   = 0x59;
  reg_addr[2]   = 0x05;
  reg_data[2]   = 0x0B;
  reg_addr[3]   = 0x06;
  reg_data[3]   = 0x05;
  reg_addr[4]   = 0x08;
  reg_data[4]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x05, 0x02);  //Set Burst SSC Write

//use wave table length
  reg_addr[0]   = 0x07;
  reg_data[0]   = 0x0d;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

//use wave table, enable auto dark correction
  reg_addr[0]   = 0x01;
  reg_data[0]   = 0x29;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);


//Disable column count
  reg_addr[0]   = 0x10;   			//begin of column
  reg_data[0]   = 0xb4;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x0C;   			//Column width
  reg_data[0]   = 0x5A;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x0D;   			//Column width
  reg_data[0]   = 0x03;
  //L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x14;   			//Row Begin
  reg_data[0]   = 0x03;
  //L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x0e;   			//Row Height
  reg_data[0]   = 0x00;
  //L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x18;   			//Hsync End position
  reg_data[0]   = 0x20;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);


  reg_addr[0]   = 0x91;
  reg_data[0]   = 0x1a;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x00;
  reg_data[0]   = 0x88;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);


  reg_addr[0]   = 0x01;
  reg_data[0]   = 0x21;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x90;
  reg_data[0]   = 0x30;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x9B;
  reg_data[0]   = 0x42;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x9C;
  reg_data[0]   = 0x03;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x01;
  reg_data[0]   = 0x29;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x1C;
  reg_data[0]   = 0x0C;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x00;
  reg_data[0]   = 0x84;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  ////////////////////////////////////////////////////////////////////////////////
  reg_addr[0]   = 0x1d; 					//Set Exposure High
  reg_data[0]   = 0x02;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);
  reg_addr[0]   = 0x1c; 					//Set Exposure Low
  reg_data[0]   = 0x05;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);
  reg_addr[0]   = 0x00; 					//Update Exposure time
  reg_data[0]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);
  reg_addr[0]   = 0x00; 					//Update Exposure time
  reg_data[0]   = 0x84;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);
  reg_addr[0]   = 0x11; 					//Set Global gain
  reg_data[0]   = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);

  }
#endif


// version4.0@andrew@0513
//  merge rocky setting
#ifdef ICM107B		  		// IC-media 1.0M CMOS Sensor
void  L3_CMOSIniPad11(void) USING_0
{
  XBYTE[0x2007] = 0x00;  	 	//Set Output enable
  XBYTE[0x2008] = 0x00;
  XBYTE[0x2009] = 0x02;       	//Set Clk2x Output
  XBYTE[0x200a] = 0x00;			//Set SWTGole
  XBYTE[0x200b] = 0x00;
}

void  L3_CMOSIniClk11(void) USING_0
{
  XBYTE[0x2080] = 0x00;			//Disable TG PLL
  XBYTE[0x2A80] = 0x00;			//Disable HP, let Clk2x Change immediate
  XBYTE[0x2A81] = 0x03;      	//Set Clk1xDiv
  XBYTE[0x2A82] = 0x01;     	//Set Clk2xDiv, the Pixclk will be 12Mhz
  XBYTE[0x2019] = XBYTE[0x2019] & 0x30;	//Select input clk1x , clk2x from PAD
  XBYTE[0x2A80] = 0x00;			//Disable HP, let Clk2x Change sync witd Vd
}

void  L3_CMOSIniPhase11(void) USING_0  		//Adjust this part to get better Image quality
{
  XBYTE[0x2A83] = 0x00;  		//Clk1x Out delay
  XBYTE[0x2023] = 0x02;  		//Clk1x Input delay
  XBYTE[0x2022] = 0x00;  		//Clk2x Input delay
}

code UCHAR CmosRegData[]={

  0x01, 0x10, 			  		//rem disable column count
  //
  0x03, 0x00,
  0x04, 0x00,
  0x05, 0x00,
  0x06, 0x02,
  0x08, 0x00,
  //State 1//////////////////////////////////////////////////////////////
  0x03, 0x01,
  0x04, 0x90,
  0x05, 0x01,
  0x06, 0x03,
  0x08, 0x00,
  //State 2//////////////////////////////////////////////////////////////
  0x03, 0x02,
  0x04, 0x94,
  0x05, 0x01,
  0x06, 0x02,
  0x08, 0x00,
  //State 3//////////////////////////////////////////////////////////////
  0x03, 0x03,
  0x04, 0x98,
  0x05, 0x01,
  0x06, 0x06,
  0x08, 0x00,
  //State 4//////////////////////////////////////////////////////////////
  0x03, 0x04,
  0x04, 0x9b,
  0x05, 0x01,
  0x06, 0x0e,
  0x08, 0x00,
  //State 5//////////////////////////////////////////////////////////////
  0x03, 0x05,
  0x04, 0x9f,
  0x05, 0x01,
  0x06, 0x06,
  0x08, 0x00,
  //State 6//////////////////////////////////////////////////////////////
  0x03, 0x06,
  0x04, 0x94,
  0x05, 0x0d,
  0x06, 0x06,
  0x08, 0x00,
  //State 7//////////////////////////////////////////////////////////////
  0x03, 0x07,
  0x04, 0x96,
  0x05, 0x05,
  0x06, 0x06,
  0x08, 0x00,
  //State 8//////////////////////////////////////////////////////////////
  0x03, 0x08,
  0x04, 0x98,
  0x05, 0x15,
  0x06, 0x06,
  0x08, 0x00,
  //State 9//////////////////////////////////////////////////////////////
  0x03, 0x09,
  0x04, 0xaa,
  0x05, 0x15,
  0x06, 0x0f,
  0x08, 0x00,
  //State 10//////////////////////////////////////////////////////////////
  0x03, 0x0a,
  0x04, 0xad,
  0x05, 0x15,
  0x06, 0x07,
  0x08, 0x00,
  //State 11//////////////////////////////////////////////////////////////
  0x03, 0x0b,
  0x04, 0xd0,
  0x05, 0x1f,
  0x06, 0x07,
  0x08, 0x00,
  //State 12//////////////////////////////////////////////////////////////
  0x03, 0x0c,
  0x04, 0xe4,
  0x05, 0x17,
  0x06, 0x06,
  0x08, 0x00,
  //wave table Length 132/////////////////////////////////////////////////
  0x07, 0x0d,   // change position:1039
  0x1c, 0x9b,
  0x0c, 0xf2,   //set frame width to 2034
  0x0d, 0x07,	//
  0x0e, 0x9c,   //set frame hight to 1180
  0x9b, 0xd4,
  0x9c, 0x07,
  0x01, 0x01,
  0x40, 0x00,
  0x00, 0x84,
  0x94, 0x80,
  0x91, 0x88,
  0x57, 0x07,
  0x56, 0xf8,
  0x55, 0x00,
  0x54, 0x00
};

void  L3_CMOSIniParameter11(void) USING_0
{
UCHAR    reg_addr[3], reg_data[3],obvalue;

  //UCHAR    reg_addr[3], reg_data[3];

  XBYTE[0x2AB0] = 0x01;				//Reset Sensor interface
  XBYTE[0x2AB0] = 0x00;
  XBYTE[0x2A00] = 0x00;       		//Inverise Vsync input polarity
  XBYTE[0x2A20] = 0x6A;       		//Set Hoffset
  XBYTE[0x2A21] = 0x00;
  XBYTE[0x2A22] = 0x0F;       		//Set Voffset
  XBYTE[0x2A23] = 0x00;
  XBYTE[0x2A24] = 0x80;       		//Set Hsize = 1152
  XBYTE[0x2A25] = 0x04;
  XBYTE[0x2A26] = 0x61;       		//Set Vsize = 864
  XBYTE[0x2A27] = 0x03;
  XBYTE[0x2A30] = 0x24;       		//Set Hoffsetm
  XBYTE[0x2A31] = 0x00;
  XBYTE[0x2A32] = 0x40;       		//Set Hsizem
  XBYTE[0x2A33] = 0x02;
  XBYTE[0x2A34] = 0x0C;       		//Set Voffsetm
  XBYTE[0x2A35] = 0x00;
  XBYTE[0x2A36] = 0xB1;       		//Set Vsizem
  XBYTE[0x2A37] = 0x01;
  XBYTE[0x2A41] = 0xF9;       		//Set LineTotal
  XBYTE[0x2A42] = 0x03;
  XBYTE[0x2A50] = 0x15;       		//Set FrameTotalm
  XBYTE[0x2A51] = 0x02;

  //patch4.3@richie@po0603
  L2_Wait(1);
  //Use SSC to initializes CMOS sensor register///////////////////////////////////		  			// Ov9620 1.3M CMOS Sensor
  XBYTE[0X2900] = 0x42;			    //Set sensor slave address
  XBYTE[0x2904] = 0x04;       		//Set to SSC Frequency


  {
		data USHORT i;
  		for (i=0; i<sizeof(CmosRegData) ; i+=2)
		{
     			L2_WSSC107(CmosRegData+i, CmosRegData+i+1, 0x01, 0x00);
  		}
  }


  L2_WaitVD(0, 1);
//Caculate the OB value/////////////////////////////////////////////////////////

  reg_addr[0]   = 0x52; 					//Set VGA DATA OUTPUT
  reg_data[0]   = 0x00;
  L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x01; 					//Enable Auto Dark
  reg_data[0]   = 0x09;
  L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x00;
  reg_data[0]   = 0x80;
  L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);
  L3_WaitUpdate107();
  L2_WaitVD(0, 1);

  reg_addr[0]   = 0x1D; 					//Exposure time High
  reg_data[0]   = 0x02;
  L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x1C; 					//Exposure time Low
  reg_data[0]   = 0x08;
  L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);

⌨️ 快捷键说明

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