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

📄 l2_fponcmos.c

📁 dz3000_51.0.0.4.rar
💻 C
📖 第 1 页 / 共 5 页
字号:
  reg_addr[0]   = 0x00; 					//Buckup Exposure time
  reg_data[0]   = 0x04;
  L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);
  L3_WaitUpdate107();
  L2_WaitVD(0, 10);
  L2_ReadSSC(0x40, reg_data, 0x01, 0x01);   //Read back OFFSET
//  PRINT_FRONT ("            Read Reg 0x40 = %bx\n", reg_data[0]);
  obvalue = reg_data[0];
  XBYTE[0x292A] = obvalue;



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

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

  reg_addr[0]   = 0x40; 					//Set OB value
  //reg_data[0]   = obvalue;
  reg_data[0]   = obvalue;  //cywu
  L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);

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

  ////////////////////////////////////////////////////////////////////////////////
}
#endif

#ifdef ICM108		  		// IC-media 1.0M CMOS Sensor
void  L3_CMOSIniPad16(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_CMOSIniClk16(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_CMOSIniPhase16(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, 0xDC,   //set frame width to 1800
  0x0d, 0x05,	 //
  0x0e, 0x40,   //set frame hight to 1300
  0x0D, 0x04,   //set frame hight to 1300
  0x9b, 0xd4,
  0x9c, 0x07,
  0x01, 0x01,
  0x40, 0x00,
  0x00, 0x84,
  0x94, 0x80,
  0x91, 0x88,
  0x57, 0x07,
  0x56, 0xf8,
  0x55, 0x00,
  0x54, 0x00
};

void  L3_CMOSIniParameter16(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] = 0x69; //68     		//Set Hoffset
  XBYTE[0x2A21] = 0x00;
  XBYTE[0x2A22] = 0x0f;//0d;       		//Set Voffset
  XBYTE[0x2A23] = 0x00;
  XBYTE[0x2A24] = 0x20; 	  		//Set Hsize
  XBYTE[0x2A25] = 0x05;
  XBYTE[0x2A26] = 0x20; 			//Set Vsize
  XBYTE[0x2A27] = 0x04;
  XBYTE[0x2A30] = 0x23;       		//Set Hoffsetm
  XBYTE[0x2A31] = 0x00;
  XBYTE[0x2A32] = 0x40;       		//Set Hsizem
  XBYTE[0x2A33] = 0x02;
  XBYTE[0x2A34] = 0x0b;       		//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;

  //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_WSSC108(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_WSSC108(reg_addr, reg_data, 0x01, 0x00);

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

  reg_addr[0]   = 0x00;
  reg_data[0]   = 0x80;
  L2_WSSC108(reg_addr, reg_data, 0x01, 0x00);
  L3_WaitUpdate108();
  L2_WaitVD(0, 1);

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

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

  reg_addr[0]   = 0x00; 					//Buckup Exposure time
  reg_data[0]   = 0x04;
  L2_WSSC108(reg_addr, reg_data, 0x01, 0x00);
  L3_WaitUpdate108();
  L2_WaitVD(0, 10);
  L2_ReadSSC(0x40, reg_data, 0x01, 0x01);   //Read back OFFSET
//  PRINT_FRONT ("            Read Reg 0x40 = %bx\n", reg_data[0]);
  obvalue = reg_data[0];
  XBYTE[0x292A] = obvalue;



//Initial Setting //////////////////////////////////////////////////////////////
  reg_addr[0]   = 0x52; 					//Set VGA DATA OUTPUT
  reg_data[0]   = 0x0D;
  L2_WSSC108(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x01; 					//Disable Auto Dark
  reg_data[0]   = 0x01;
  L2_WSSC108(reg_addr, reg_data, 0x01, 0x00);

  reg_addr[0]   = 0x40; 					//Set OB value
  //reg_data[0]   = obvalue;
  reg_data[0]   = obvalue;  //cywu
  L2_WSSC108(reg_addr, reg_data, 0x01, 0x00);

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

  ////////////////////////////////////////////////////////////////////////////////
}
#endif

#ifdef HP2020		  		// HP VGA CMOS Sensor
void  L3_CMOSIniPad03(void)
{
  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_CMOSIniClk03(void)
{
  XBYTE[0x2080] = 0x00;			//Disable TG PLL
  XBYTE[0x2A80] = 0x01;			//Enable HP, let Clk2x Change immediate
  XBYTE[0x2A81] = 0x05;      	//Set Clk1xDiv
  XBYTE[0x2A82] = 0x01;     	//Set Clk2xDiv
  XBYTE[0x2019] = XBYTE[0x2019] | 0xC0;	//Select input clk1x, clk2x from Internal
  XBYTE[0x2A80] = 0x03;		//Enable HP, let Clk2x Change sync witd Vd
}

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

void  L3_CMOSIniParameter03(void)
{
  UCHAR    reg_addr[6], reg_data[6];
  UCHAR i,j;
  XBYTE[0x2AB0] = 0x01;				//Reset Sensor interface
  XBYTE[0x2AB0] = 0x00;

//  XBYTE[0x2A15] = 0x01;             //Vfall (Low)
  XBYTE[0x2A15] = 0x01;             //Vfall (Low)1
//  XBYTE[0x2A17] = 0x02;             //Vrise (Low)
  XBYTE[0x2A17] = 0x02;             //Vrise (Low)2
  XBYTE[0x2A10] = 0x02;             //Vreshape ensble

//  XBYTE[0x2A20] = 0x28;       		//Set Hoffset
//  XBYTE[0x2A21] = 0x00;
  XBYTE[0x2A20] = 0x30;       		//Set Hoffset
  XBYTE[0x2A21] = 0x00;
  XBYTE[0x2A22] = 0x08;       		//Set Voffset16
  XBYTE[0x2A23] = 0x00;
  XBYTE[0x2A24] = 0x80;       		//Set Hsize(640)
  XBYTE[0x2A25] = 0x02;
  XBYTE[0x2A26] = 0xed;       		//Set Vsize(480)(org=0xE0)
  XBYTE[0x2A27] = 0x01;


  XBYTE[0x2A30] = 0x18;       		//Set Hoffsetm(0x34)
  XBYTE[0x2A31] = 0x00;
  XBYTE[0x2A34] = 0x01;       		//Set Voffsetm(0x07)
  XBYTE[0x2A35] = 0x00;
  XBYTE[0x2A32] = 0x80;       		//Set Hsizem(0x80)
  XBYTE[0x2A33] = 0x02;
  XBYTE[0x2A36] = 0xEf;       		//Set Vsizem(0x01ee)
  XBYTE[0x2A37] = 0x01;
/*
  XBYTE[0x2A30] = 0x22;       		//Set Hoffsetm
  XBYTE[0x2A31] = 0x00;
  XBYTE[0x2A34] = 0x09;       		//Set Voffsetm
  XBYTE[0x2A35] = 0x00;
  XBYTE[0x2A32] = 0x80;       		//Set Hsizem
  XBYTE[0x2A33] = 0x02;
  XBYTE[0x2A36] = 0xe0;       		//Set Vsizem  0xa0
  XBYTE[0x2A37] = 0x01;
*/
  XBYTE[0x2A41] = 0x20;       		//Set LineTotal
  XBYTE[0x2A42] = 0x03;
  XBYTE[0x2A50] = 0x14;       		//Set FrameTotalm
  XBYTE[0x2A51] = 0x02;

  //Use SSC to initializes CMOS sensor register///////////////////////////////////		  			// Ov9620 1.3M CMOS Sensor
  XBYTE[0X2900]= 0xAA;				// Set sensor slave address
  XBYTE[0x2904]= 0x02;       		//Set to SSC Frequency
  reg_addr[0]  = 0x38;     			//Rst Sensor
  reg_data[0]  = 0x09;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  reg_addr[0]  = 0x38;     			//Rst Sensor
  reg_data[0]  = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  reg_addr[0]  = 0x38;     			//RUN
  reg_data[0]  = 0x04;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //status register
  reg_addr[0]  = 0x02;
  reg_data[0]  = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //Interrupt  Mask register
  reg_addr[0]  = 0x04;
  reg_data[0]  = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //Pad control register
  reg_addr[0]  = 0x06;
  reg_data[0]  = 0x03;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //Pad Drive control register
  reg_addr[0]  = 0x08;
  reg_data[0]  = 0x00;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //Interface Control register
  reg_addr[0]  = 0x0A;
  reg_data[0]  = 0x40;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //Interface Timming register
  reg_addr[0]  = 0x0C;
  reg_data[0]  = 0x2A;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //Baud Fraction register
  reg_addr[0]  = 0x0E;
  reg_data[0]  = 0x01;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //Baud Rate register
  reg_addr[0]  = 0x10;
  reg_data[0]  = 0x9B;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //ADC Control register
  reg_addr[0]  = 0x12;
  reg_data[0]  = 0x0A;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //First row register
  reg_addr[0]  = 0x14;
  reg_data[0]  = 0x01;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //First column register
  reg_addr[0]  = 0x16;
  reg_data[0]  = 0x01;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //Last row register
  reg_addr[0]  = 0x18;
  reg_data[0]  = 0x7A;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //Last column register
  reg_addr[0]  = 0x1A;
  reg_data[0]  = 0xA7;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  //Timming Control register
  reg_addr[0]  = 0x1C;
  reg_data[0]  = 0x07;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  // even row even col gain
  reg_addr[0]  = 0x1E;
  reg_data[0]  = 0x0A;
  L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00);  //Set Seq SSC Write
  // even row odd col gain
  reg_addr[0]  = 0x20;
  reg_data[0]  = 0

⌨️ 快捷键说明

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