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

📄 et61xx51.h

📁 凌阳SPCA5XX解码芯片USB驱动源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
	value = 0x20;	Et_RegWrite(etx->dev,0x0,0x0,0x80,&value,1);	value = 0x01;	Et_RegWrite(etx->dev,0x0,0x0,0x03,&value,1);	value = 0x00;	Et_RegWrite(etx->dev,0x0,0x0,0x03,&value,1);	value = 0x08;	Et_RegWrite(etx->dev,0x0,0x0,0x03,&value,1);	/********************************************/		// Et_RegRead(etx->dev,0x0,0x0,ET_I2C_BASE,&received,1); always 0x40 as the pas106 ???	/* set the sensor */  if (etx->mode){ /* 320*/  value = 0x04;	Et_RegWrite(etx->dev,0x0,0x0,ET_PXL_CLK,&value,1);	/* now set by fifo the FormatLine setting */	Et_RegWrite(etx->dev,0x0,0x0,0x62,FormLine,6);	  } else { /* 640 */  /* setting PixelClock 	   0x03 mean 24/(3+1) = 6 Mhz	   0x05 -> 24/(5+1) = 4 Mhz	   0x0b -> 24/(11+1) = 2 Mhz	   0x17 -> 24/(23+1) = 1 Mhz  	*/	value = 0x1e; //0x17	Et_RegWrite(etx->dev,0x0,0x0,ET_PXL_CLK,&value,1);	/* now set by fifo the FormatLine setting */	Et_RegWrite(etx->dev,0x0,0x0,0x62,FormLine,6);	  }   value = 0x47;           // 0x47;    Et_RegWrite(etx->dev,0x0,0x0,0x81,&value,1);	// set exposure times [ 0..0x78] 0->longvalue 0x78->shortvalue  value = 0x40;           //  0x40;    Et_RegWrite(etx->dev,0x0,0x0,0x80,&value,1);  	/* Pedro change */  	// Brightness change Brith+ decrease value   	// Brigth- increase value   	// original value = 0x70;  value = 0x30;           // 0x20;   Et_RegWrite(etx->dev,0x0,0x0,0x81,&value,1);    // set brightness  value = 0x20;           // 0x20;  Et_RegWrite(etx->dev,0x0,0x0,0x80,&value,1); 	}static void Et_init1 (struct usb_spca50x *etx){		__u8 value = 0x00;	__u8 received = 0x00;	//__u8 I2c0 [] ={0x0a,0x12,0x05,0x22,0xac,0x00,0x01,0x00};	__u8 I2c0 [] ={0x0a,0x12,0x05,0x6d,0xcd,0x40,0x01,0x00}; // try 1/120	//__u8 I2c0 [] ={0x0a,0x12,0x05,0x92,0xba,0x40,0x01,0x00}; // 1/60000 hmm ??	PDEBUG(5,"Open Init1 ET");		value = 7;	Et_RegWrite(etx->dev,0x0,0x0,ET_GPIO_DIR_CTRL,&value,1);	Et_RegRead(etx->dev,0x0,0x0,ET_GPIO_IN,&received,1);	value = 1;	Et_RegWrite(etx->dev,0x0,0x0,ET_RESET_ALL,&value,1);	value = 0;	Et_RegWrite(etx->dev,0x0,0x0,ET_RESET_ALL,&value,1);	value = 0x10;	Et_RegWrite(etx->dev,0x0,0x0,ET_ClCK,&value,1);	value = 0x19;	Et_RegWrite(etx->dev,0x0,0x0,ET_CTRL,&value,1);	/*   compression et subsampling */	if (etx->mode){	value = ET_COMP_VAL1;		} else {	value = ET_COMP_VAL0;	}	PDEBUG(0,"Open mode %d Compression %d",etx->mode,value);	Et_RegWrite(etx->dev,0x0,0x0,ET_COMP,&value,1);	value = 0x1d;	Et_RegWrite(etx->dev,0x0,0x0,ET_MAXQt,&value,1);	value = 0x02;	Et_RegWrite(etx->dev,0x0,0x0,ET_MINQt,&value,1);	/* undocumented registers */	value = 0xff;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG1d,&value,1);	value = 0xff;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG1e,&value,1);	value = 0xff;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG1f,&value,1);	value = 0x35;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG20,&value,1);	value = 0x01;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG21,&value,1);	value = 0x00;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG22,&value,1);	value = 0xf7;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG23,&value,1);	value = 0xff;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG24,&value,1);	value = 0x07;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG25,&value,1);	/* colors setting */	value = 0x80;	Et_RegWrite(etx->dev,0x0,0x0,ET_G_RED,&value,1);	value = 0x80;	Et_RegWrite(etx->dev,0x0,0x0, ET_G_GREEN1,&value,1);	value = 0x80;	Et_RegWrite(etx->dev,0x0,0x0,ET_G_BLUE,&value,1);	value = 0x80;	Et_RegWrite(etx->dev,0x0,0x0,ET_G_GREEN2,&value,1);	value = 0x00;	Et_RegWrite(etx->dev,0x0,0x0,ET_G_GR_H,&value,1);	value = 0x00;	Et_RegWrite(etx->dev,0x0,0x0,ET_G_GB_H,&value,1);	/* Window control registers */	value = 0xf0;	Et_RegWrite(etx->dev,0x0,0x0,ET_SYNCHRO,&value,1);	value = 0x56;//0x56	Et_RegWrite(etx->dev,0x0,0x0,ET_STARTX,&value,1);	value = 0x05;//0x04	Et_RegWrite(etx->dev,0x0,0x0,ET_STARTY,&value,1);	value = 0x60;	Et_RegWrite(etx->dev,0x0,0x0,ET_WIDTH_LOW,&value,1);	value = 0x20;	Et_RegWrite(etx->dev,0x0,0x0,ET_HEIGTH_LOW,&value,1);	value = 0x50;	Et_RegWrite(etx->dev,0x0,0x0,ET_W_H_HEIGTH,&value,1);	value = 0x86;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG6e,&value,1);	value = 0x01;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG6f,&value,1);	value = 0x86;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG70,&value,1);	value = 0x14;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG71,&value,1);	value = 0x00;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG72,&value,1);	/* Clock Pattern registers */	value = 0x00;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG73,&value,1);	value = 0x00;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG74,&value,1);	value = 0x0a;	Et_RegWrite(etx->dev,0x0,0x0,ET_REG75,&value,1);	value = 0x04;	Et_RegWrite(etx->dev,0x0,0x0,ET_I2C_CLK,&value,1);	value = 0x01;	Et_RegWrite(etx->dev,0x0,0x0,ET_PXL_CLK,&value,1);	/* set the sensor */	if (etx->mode){		I2c0[0] = 0x06;		Et_i2cwrite(etx->dev,PAS106_REG2,I2c0,sizeof(I2c0),1);		Et_i2cwrite(etx->dev,PAS106_REG9,I2c2,sizeof(I2c2),1);		value = 0x06;		Et_i2cwrite(etx->dev,PAS106_REG2,&value,1,1);		Et_i2cwrite(etx->dev,PAS106_REG3,I2c3,sizeof(I2c3),1);			//value = 0x1f;		value = 0x04;		Et_i2cwrite(etx->dev,PAS106_REG0e,&value,1,1);	} else {		I2c0[0] = 0x0a;				Et_i2cwrite(etx->dev,PAS106_REG2,I2c0,sizeof(I2c0),1);		Et_i2cwrite(etx->dev,PAS106_REG9,I2c2,sizeof(I2c2),1);		value = 0x0a;				Et_i2cwrite(etx->dev,PAS106_REG2,&value,1,1);		Et_i2cwrite(etx->dev,PAS106_REG3,I2c3,sizeof(I2c3),1);		value = 0x04;		//value = 0x10;		Et_i2cwrite(etx->dev,PAS106_REG0e,&value,1,1);		/* bit 2 enable bit 1:2 select 0 1 2 3 		value = 0x07;// curve 0		Et_i2cwrite(etx->dev,PAS106_REG0f,&value,1,1);		*/	}		//value = 0x01;	//value = 0x22;	//Et_i2cwrite(etx->dev,PAS106_REG5,&value,1,1);	/* magnetude and sign bit for DAC */	Et_i2cwrite(etx->dev,PAS106_REG7,I2c4,sizeof(I2c4),1);	/* now set by fifo the whole colors setting */	Et_RegWrite(etx->dev,0x0,0x0,ET_G_RED,GainRGBG,6);	etx->colour= Et_getcolors(etx);	Et_setcolors(etx);}	static int Et_init (struct usb_spca50x *etx){		int err = -1;	__u8 value = 0x00;		PDEBUG(5,"Initialize ET1");	if(etx->desc == Etoms61x151) {			Et_init1(etx);	} else {		Et_init2(etx);	}	value = 0x08;	Et_RegWrite(etx->dev,0x0,0x0,ET_RESET_ALL,&value,1);	err = Et_videoOff(etx->dev);	PDEBUG(5,"Et_Init_VideoOff %d",err);	return 0;}static void Et_startCamera(struct usb_spca50x *etx){	int err = -1;	__u8 value = 0x00;	if(etx->desc == Etoms61x151) {			Et_init1(etx);	} else {		Et_init2(etx);	}		value = 0x08;	Et_RegWrite(etx->dev,0x0,0x0,ET_RESET_ALL,&value,1);	err=Et_videoOn(etx->dev);	PDEBUG(5,"Et_VideoOn %d",err); }static void Et_stopCamera(struct usb_spca50x *etx){		int err = -1;	err = Et_videoOff(etx->dev);	PDEBUG(5,"Et_VideoOff %d",err);	}static void Et_setbrightness(struct usb_spca50x *etx){	int i;	__u8 brightness = etx->brightness >> 9;	for (i=0;i<4;i++){		Et_RegWrite(etx->dev,0x0,0x0,(ET_O_RED +i),&brightness,1);	}}static int Et_getbrightness(struct usb_spca50x *etx){	int i;	int brightness = 0;	__u8 value = 0;	for(i=0;i<4;i++){		Et_RegRead(etx->dev,0x0,0x0,(ET_O_RED+i),&value,1);	 	brightness += value;	 }	return (brightness << 6);}static void Et_setcontrast(struct usb_spca50x *etx){	__u8 RGBG [] ={0x80,0x80,0x80,0x80,0x00,0x00};	__u8 contrast = etx->contrast >> 8;	memset(RGBG,contrast,sizeof(RGBG)-2);	Et_RegWrite(etx->dev,0x0,0x0,ET_G_RED,RGBG,6);}static int Et_getcontrast(struct usb_spca50x *etx){	int i;	int contrast = 0;	__u8 value = 0;	for(i=0;i<4;i++){		Et_RegRead(etx->dev,0x0,0x0,(ET_G_RED+i),&value,1);		contrast += value;	}	return (contrast << 6);}static __u8 Et_getgainG (struct usb_spca50x *etx){	__u8 value = 0;	if(etx->sensor == SENSOR_PAS106){	Et_i2cread(etx->dev,PAS106_REG0e,&value,1,1);	PDEBUG(5 , "Etoms gain G %d",value);	return value;	} else {	return 0x1f;	}}static void  Et_setgainG (struct usb_spca50x *etx, __u8 gain){	__u8 i2cflags = 0x01;	if(etx->sensor == SENSOR_PAS106){	Et_i2cwrite(etx->dev,PAS106_REG13,&i2cflags,1,3);	Et_i2cwrite(etx->dev,PAS106_REG0e,&gain,1,1);	}}#define BLIMIT(bright) (__u8)((bright>0x1F)?0x1f:((bright<4)?3:bright))#define LIMIT(color) (unsigned char)((color>0xFF)?0xff:((color<0)?0:color))static void Et_setAutobright (struct usb_spca50x *etx){ 	__u8 GRBG[] = {0,0,0,0};	__u8 luma = 0;	__u8 luma_mean = 128;	__u8 luma_delta = 20;	__u8 spring = 4;	int Gbright = 0;		__u8 r,g,b;	Gbright = Et_getgainG(etx);	Et_RegRead(etx->dev,0x0,0x0,ET_LUMA_CENTER,GRBG,4);	g= (GRBG[0]+GRBG[3]) >> 1;	r= GRBG[1];	b= GRBG[2];	r = ((r << 8)-( r << 4) -( r << 3)) >> 10;	b = (( b << 7) >>10);	g = ((g <<9)+(g << 7)+(g << 5)) >> 10;	luma = LIMIT(r+g+b);	PDEBUG(5 , "Etoms luma G %d",luma);	if ((luma < (luma_mean - luma_delta)) ||	( luma > (luma_mean + luma_delta))) {		Gbright += ((luma_mean-luma) >> spring);		Gbright = BLIMIT(Gbright);		PDEBUG(5 , "Etoms Gbright %d",Gbright);		Et_setgainG (etx, (__u8) Gbright);	}}static void Et_setcolors(struct usb_spca50x *etx){		static	__u8 I2cc [] ={0x05,0x02,0x02,0x05,0x0d};	__u8 i2cflags = 0x01;	//__u8 green = 0;	__u8 colors = (etx->colour >> 12) & 0x0f;		I2cc[3] = colors ;    //red	I2cc[0] = 15-colors; //blue		// green = 15 - ((((7*I2cc[0]) >> 2 ) + I2cc[3]) >> 1);	// I2cc[1] = I2cc[2] = green;	if(etx->sensor == SENSOR_PAS106){	Et_i2cwrite(etx->dev,PAS106_REG13,&i2cflags,1,3);	Et_i2cwrite(etx->dev,PAS106_REG9,I2cc,sizeof(I2cc),1);	}	//PDEBUG(5 , "Etoms red %d blue %d green %d",I2cc[3],I2cc[0],green);	}static int Et_getcolors(struct usb_spca50x *etx){	//__u8 valblue = 0;	__u8 valred = 0 ;	if(etx->sensor == SENSOR_PAS106){	//Et_i2cread(etx->dev,PAS106_REG9,&valblue,1,1);	Et_i2cread(etx->dev,PAS106_REG9+3,&valred,1,1);	return (((valred) & 0x0f) << 12);	}return 0;}#endif /* ET61XX51_H */

⌨️ 快捷键说明

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