📄 l2_fponcmos.c
字号:
#include "general.h"
extern ULONG Shutter;
void L3_PowerOnCMOS (void) USING_0
{
#ifdef OV13 // Ov9620 1.3M CMOS Sensor
L3_CMOSIniPad00();
L3_CMOSIniClk00();
L3_CMOSIniPhase00();
L3_CMOSIniParameter00();
L2_SetFrameRate (20, 0);
L2_SetExposureTime (300,0);
L2_AdjustGain(0x15, 1);
//L3_SetProbe (0);
#endif
#ifdef OV2610 // Ov2610 2.0M CMOS Sensor
L3_CMOSIniPad17();
L3_CMOSIniClk17();
L3_CMOSIniPhase17();
L3_CMOSIniParameter17();
L2_SetFrameRate (20, 0);
L2_SetExposureTime (200,0);
L2_AdjustGain(0x00, 1);
//L3_SetProbe (0);
#endif
#ifdef OV3610 // Ov3610 3.2M CMOS Sensor //patch5.2.1@jhyu@OV3610
L3_CMOSIniPad20();
L3_CMOSIniClk20();
L3_CMOSIniPhase20();
L3_CMOSIniParameter20();
L2_SetFrameRate (20, 0);
L2_SetExposureTime (200,0);
L2_AdjustGain(0x00, 1);
L3_SetProbe (0);
#endif
//-------------------Davis:patch4.0.0.0_2005/Jun/07 begin
#ifdef OV3620
L3_CMOSIniPad28();
L3_CMOSIniClk28();
L3_CMOSIniPhase28();
L3_CMOSIniParameter28();
L2_SetFrameRate(20, 0);
L2_SetExposureTime(200,0);
L2_AdjustGain(0x00, 1);
L3_SetProbe (0);
#endif
//-------------------Davis:patch4.0.0.0_2005/Jun/07 end
#ifdef MCM20027 // Motorola 1.3M CMOS Sensor
//PRINT_FRONT (" Setting MCM20027 \n");
L3_CMOSIniPad02();
L3_CMOSIniClk02();
L3_CMOSIniPhase02();
L3_CMOSIniParameter02();
//L2_SetFrameRate (30, 0);
L2_SetFrameRate (15, 0); //patch4.3@jhyu@0612
//Joe@2003.3.17 20:37 unmask begin
L2_SetExposureTime (241, 0);
//Joe@2003.3.17 20:37 unmask end
//patch3.2@richie@0409
L2_AdjustGain(0x30, 0);
//L3_SetProbe (0);
//PRINT_FRONT (" Exit Setting MCM20027 \n");
#endif
#ifdef ICM105 // IC-Media VGA CMOS Sensor
//PRINT_FRONT ("Enter Setting ICM-105 \n");
L3_CMOSIniPad10();
L3_CMOSIniClk10();
L3_CMOSIniPhase10();
L3_CMOSIniParameter10();
//L2_SetExposureTime (30,0);
#endif
// version4.0@andrew@0513
#ifdef ICM107B // IC-Media 1.0M CMOS Sensor
L3_CMOSIniPad11();
L3_CMOSIniClk11();
L3_CMOSIniPhase11();
L3_CMOSIniParameter11();
L2_SetFrameRate (20, 0);
#endif
#ifdef ICM108 // IC-Media 1.3M CMOS Sensor
L3_CMOSIniPad16();
L3_CMOSIniClk16();
L3_CMOSIniPhase16();
L3_CMOSIniParameter16();
L2_SetFrameRate (20, 0);
L3_SetProbe (0);
#endif
#ifdef TASC5130 // IC-Media 1.0M CMOS Sensor
//PRINT_FRONT (" Setting TASC5130 \n");
L3_CMOSIniPad12();
L3_CMOSIniClk12();
L3_CMOSIniPhase12();
L3_CMOSIniParameter12();
L2_SetFrameRate (15, 0);
L2_SetExposureTime (151, 0);
L2_AdjustGain(4, 0);
//L3_SetProbe (0);
//PRINT_FRONT (" Exit Setting TASC5130 \n");
#endif
#ifdef TASC5160 // TASC SXVGA CMOS Sensor
PRINT_FRONT (" Setting TASC5160 \n");
L3_CMOSIniPad15();
L3_CMOSIniClk15();
L3_CMOSIniPhase15();
L3_CMOSIniParameter15();
L2_SetFrameRate (30, 0);
L2_SetExposureTime (151, 0);
L2_AdjustGain(9, 0);
L3_SetProbe (0);
PRINT_FRONT (" Exit Setting TASC5160 \n");
#endif
#ifdef HP2020 // HP VGA CMOS Sensor
PRINT_FRONT (" Setting HP2020 \n");
L3_CMOSIniPad03();
L3_CMOSIniClk03();
L3_CMOSIniPhase03();
L3_CMOSIniParameter03();
//L2_SetFrameRate (30, 0);
//L2_SetExposureTime (300,0);
//L2_AdjustGain(0x25, 1);
L3_SetProbe (0);
PRINT_FRONT (" Exit Setting HP2020 \n");
#endif
#ifdef YM3170 // Y-Media 3.0M CMOS Sensor
//PRINT_FRONT (" Setting YM3170 \n");
L3_CMOSIniPad13();
L3_CMOSIniClk13();
L3_CMOSIniPhase13();
L3_CMOSIniParameter13();
//L2_SetFrameRate (15, 0);
L2_SetExposureTime (80, 0);
L2_AdjustGain(1, 0);
//L3_SetProbe (0);
//PRINT_FRONT (" Exit Setting YM3170 \n");
#endif
#ifdef PB111 // PB111 CIF CMOS Sensor
//PRINT_FRONT (" Enter Setting PB111 \n");
L3_CMOSIniPad14();
L3_CMOSIniClk14();
L3_CMOSIniPhase14();
L3_CMOSIniParameter14();
//L3_SetProbe (0);
//PRINT_FRONT (" Exit Setting PB111 \n");
#endif
#ifdef CCDTEST // SONY 4.0M CCD Sensor
//PRINT_FRONT (" Setting CCDTEST \n");
L3_CMOSIniPadF0();
L3_CMOSIniClkF0();
L3_CMOSIniPhaseF0();
L3_CMOSIniParameterF0();
//L2_SetFrameRate (15, 0);
//L2_SetExposureTime (150, 0);
//L2_AdjustGain(4, 0);
//L3_SetProbe (0);
//PRINT_FRONT (" Exit Setting CCDTEST \n");
#endif
//patch4.4@andrew@ICM109
#ifdef ICM109 // IC-Media 1.3M CMOS Sensor
L3_CMOSIniPad18();
L3_CMOSIniClk18();
L3_CMOSIniPhase18();
L3_CMOSIniParameter18();
L2_SetFrameRate (20, 0);
L3_SetProbe (0);
L2_AdjustGain(384, 0);
L2_SetExposureTime(200, 0);
Shutter=200;
#endif
}
#ifdef OV13 // Ov9620 1.3M CMOS Sensor
void L3_CMOSIniPad00(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_CMOSIniClk00(void)
{
XBYTE[0x2080] = 0x00; //Disable TG PLL
XBYTE[0x2A80] = 0x00; //Disable HP, let Clk2x Change immediate
XBYTE[0x2A81] = 0x01; //Set Clk1xDiv
XBYTE[0x2A82] = 0x03; //Set Clk2xDiv
//Joe@2003.2.27 13:55 modify begin
//XBYTE[0x2019] = XBYTE[0x2019] | 0xC0; //Select input clk1x, clk2x from Internal
//XBYTE[0x2019] = XBYTE[0x2019] | 0x80; //Select input clk2x from Internal
XBYTE[0x2019] = XBYTE[0x2019] & 0xbf; //Select input clk1x from External
XBYTE[0x2019] = XBYTE[0x2019] | 0x80;
//Joe@2003.2.27 13:55 modify end
XBYTE[0x2A80] = 0x02; //Disable HP, let Clk2x Change sync witd Vd
}
void L3_CMOSIniPhase00(void) //Adjust this part to get better Image quality
{
XBYTE[0x2A83] = 0x00; //Clk1x Out delay
XBYTE[0x2023] = 0x10; //Clk1x Input delay
XBYTE[0x2022] = 0x00; //Clk2x Input delay
}
/*void L3_CMOSIniParameter00(void)
{
UCHAR reg_addr[6], reg_data[6];
UCHAR i,j;
XBYTE[0x2AB0] = 0x01; //Reset Sensor interface
XBYTE[0x2AB0] = 0x00;
XBYTE[0x2A00] = 0x02; //Inverise Vsync input polarity
XBYTE[0x2A15] = 0x04; //Vfall
XBYTE[0x2A17] = 0x00; //Vrise
XBYTE[0x2A10] = 0x02; //V reshape enable
XBYTE[0x2A20] = 0xDC; //Set Hoffset
XBYTE[0x2A21] = 0x00;
XBYTE[0x2A22] = 0x0E; //Set Voffset
XBYTE[0x2A23] = 0x00;
XBYTE[0x2A26] = 0x08; //Set Vsize
XBYTE[0x2A27] = 0x04;
XBYTE[0x2A24] = 0x00; //Set Hsize
XBYTE[0x2A25] = 0x05;
XBYTE[0x2A30] = 0x7E; //Set Hoffsetm
XBYTE[0x2A31] = 0x00;
XBYTE[0x2A32] = 0x80; //Set Hsizem
XBYTE[0x2A33] = 0x02;
XBYTE[0x2A34] = 0x07; //Set Voffsetm
XBYTE[0x2A35] = 0x00;
XBYTE[0x2A36] = 0xED; //Set Vsizem
XBYTE[0x2A37] = 0x01;
XBYTE[0x2A41] = 0x20; //Set LineTotal
XBYTE[0x2A42] = 0x03;
XBYTE[0x2A50] = 0xF4; //Set FrameTotalm
XBYTE[0x2A51] = 0x01;
//patch4.3@richie@po0603
L2_Wait(200);
//Use SSC to initializes CMOS sensor register/////////////////////////////////// // Ov9620 1.3M CMOS Sensor
XBYTE[0X2900]= 0x60; // Set sensor slave address
XBYTE[0x2904]= 0x03; //Set to SSC Frequency
reg_addr[0] = 0x12; //Rst Sensor
reg_data[0] = 0x80;
//patch4.3@richie@po06
L2_Wait(200);
L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00); //Set Seq SSC Write
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x12; //Set VGA Mode
reg_data[0] = 0x60;
L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00); //Set Seq SSC Write
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x13; //Set COMI
reg_data[0] = 0x00;
L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00); //Set Seq SSC Write
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x01; //Set blue Gain
reg_data[0] = 0x80;
L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00); //Set Seq SSC Write
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x02; //Set Red Gain
reg_data[0] = 0x80;
L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00); //Set Seq SSC Write
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x03; //Blue, Red bow bits Gain
reg_data[0] = 0x40;
L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00); //Set Seq SSC Write
reg_addr[0] = 0x2A;
reg_data[0] = 0x80;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x2B;
reg_data[0] = 00;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
//patch4.3@jhyu@0606
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x14;
reg_data[0] = 0x40;//0x46;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x0E;
reg_data[0] = 00;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x33;
reg_data[0] = 0xdf;//0x28;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x35;
reg_data[0] = 0x64;//0x90;//patch4.5@andrew@OV13_A Blooming //patch4.4@jhyu@reduce_blooming
L2_WriteSSC(reg_addr, reg_data, 1, 0);
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x36;
reg_data[0] = 0x37;//0x17;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x0F;
reg_data[0] = 0x43;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
//patch4.3@jhyu@0606
reg_addr[0] = 0x17;
reg_data[0] = 0x11;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
reg_addr[0] = 0x1a;
reg_data[0] = 0x7b;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
//patch4.5@andrew@OV13_A // AD range
reg_addr[0] = 0x37;
reg_data[0] = 0x05;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
#if 0
//Jane for ov9630
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x33;
reg_data[0] = 0xdf;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x35;
reg_data[0] = 0x64;//patch4.5@andrew@OV13_A Blooming //patch4.4@jhyu@reduce_blooming
L2_WriteSSC(reg_addr, reg_data, 1, 0);
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x36;
reg_data[0] = 0x37;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
reg_addr[0] = 0x14;
reg_data[0] = 0x40;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
reg_addr[0] = 0x0f;
reg_data[0] = 0x43;
L2_WriteSSC(reg_addr, reg_data, 1, 0);
#endif
////////////////////////////////////////////////////////////////////////////////
}
#endif*/
void L3_CMOSIniParameter00(void)
{
UCHAR reg_addr[6], reg_data[6];
UCHAR i,j;
XBYTE[0x2AB0] = 0x01; //Reset Sensor interface
XBYTE[0x2AB0] = 0x00;
XBYTE[0x2A00] = 0x02; //Inverise Vsync input polarity
XBYTE[0x2A15] = 0x04; //Vfall
XBYTE[0x2A17] = 0x00; //Vrise
XBYTE[0x2A10] = 0x02; //V reshape enable
XBYTE[0x2A20] = 0xDC; //Set Hoffset
XBYTE[0x2A21] = 0x00;
XBYTE[0x2A22] = 0x0E; //Set Voffset
XBYTE[0x2A23] = 0x00;
XBYTE[0x2A26] = 0x08; //Set Vsize
XBYTE[0x2A27] = 0x04;
XBYTE[0x2A24] = 0x00; //Set Hsize
XBYTE[0x2A25] = 0x05;
XBYTE[0x2A30] = 0x7E; //Set Hoffsetm
XBYTE[0x2A31] = 0x00;
XBYTE[0x2A32] = 0x80; //Set Hsizem
XBYTE[0x2A33] = 0x02;
XBYTE[0x2A34] = 0x07; //Set Voffsetm
XBYTE[0x2A35] = 0x00;
XBYTE[0x2A36] = 0xED; //Set Vsizem
XBYTE[0x2A37] = 0x01;
XBYTE[0x2A41] = 0x20; //Set LineTotal
XBYTE[0x2A42] = 0x03;
XBYTE[0x2A50] = 0xF4; //Set FrameTotalm
XBYTE[0x2A51] = 0x01;
//patch4.3@richie@po0603
L2_Wait(200);
//Use SSC to initializes CMOS sensor register/////////////////////////////////// // Ov9620 1.3M CMOS Sensor
XBYTE[0X2900]= 0x60; // Set sensor slave address
XBYTE[0x2904]= 0x03; //Set to SSC Frequency
reg_addr[0] = 0x12; //Rst Sensor
reg_data[0] = 0x80;
//patch4.3@richie@po06
L2_Wait(200);
L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00); //Set Seq SSC Write
for (i=0; i<40;i++) //Delay
for (j=0; j<255; j++);
reg_addr[0] = 0x12; //Set VGA Mode
reg_data[0] = 0x60;
L2_WriteSSC(reg_addr, reg_data, 0x01, 0x00); //Set Seq SSC Write
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -