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

📄 tv8532.h

📁 Linux下面摄像头最新源代码:支持200多中摄像头
💻 H
📖 第 1 页 / 共 2 页
字号:
    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_POINTB_H, &data, 1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_BUDGET_L, &data, 1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_BUDGET_H, &data, 1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_VID_L, &data, 1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_VID_H, &data, 1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_PID_L, &data, 1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_PID_H, &data, 1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_DeviceID, &data, 1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_AD_COLBEGIN_L, &data,		   1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_AD_COLBEGIN_H, &data,		   1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_AD_ROWBEGIN_L, &data,		   1);    spca5xxRegRead(dev, TV8532_REQ_RegRead, 0, TV8532_AD_ROWBEGIN_H, &data,		   1);}static void tv_8532_setReg(struct usb_spca50x *spca50x){    struct usb_device *dev = spca50x->dev;    __u8 data = 0;    __u8 value[2] = { 0, 0 };    data = ADCBEGINL;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_COLBEGIN_L, &data, 1);	//0x10    data = ADCBEGINH;		// also digital gain    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_COLBEGIN_H,		    &data, 1);    data = TV8532_CMD_UPDATE;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_PART_CTRL, &data, 1);	//0x00<-0x84    data = 0x0a;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_GPIO_OE, &data, 1);	/*******************************************************************/    data = ADHEIGHL;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_ADHEIGHT_L, &data, 1);	//0e    data = ADHEIGHH;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_ADHEIGHT_H, &data, 1);	//0f    value[0] = EXPOL;    value[1] = EXPOH;		// 350d 0x014c;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_EXPOSURE, value, 2);	//1c    data = ADCBEGINL;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_COLBEGIN_L, &data, 1);	//0x10    data = ADCBEGINH;		// also digital gain    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_COLBEGIN_H,		    &data, 1);    data = ADRBEGINL;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_ROWBEGIN_L, &data, 1);	//0x14    data = 0x00;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_SLOPE, &data, 1);	//0x91    data = 0x02;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_BITCTRL, &data, 1);	//0x94    data = TV8532_CMD_EEprom_Close;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_CTRL, &data, 1);	//0x01    data = 0x00;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_SLOPE, &data, 1);	//0x91    data = TV8532_CMD_UPDATE;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_PART_CTRL, &data, 1);	//0x00<-0x84}static void tv_8532_PollReg(struct usb_spca50x *spca50x){    struct usb_device *dev = spca50x->dev;    __u8 data = 0;    int i;    /* strange polling from tgc */    for (i = 0; i < 10; i++) {	data = TESTCLK;		//0x48; //0x08;	spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_SETCLK, &data, 1);	//0x2c	data = TV8532_CMD_UPDATE;	spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_PART_CTRL,			&data, 1);	data = 0x01;	spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_UDP_UPDATE, &data, 1);	//0x31    }}static int tv8532_init(struct usb_spca50x *spca50x){    struct usb_device *dev = spca50x->dev;    __u8 data = 0;    __u8 dataStart = 0;    __u8 value[2] = { 0, 0 };    data = 0x32;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_SLOPE, &data,		    1);    data = 0;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_BITCTRL, &data,		    1);    tv_8532ReadRegisters(spca50x);    data = 0x0b;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_GPIO_OE, &data, 1);    value[0] = ADHEIGHL;    value[1] = ADHEIGHH;	// 401d 0x0169;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_ADHEIGHT_L, value, 2);	//0e    value[0] = EXPOL;    value[1] = EXPOH;		// 350d 0x014c;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_EXPOSURE, value, 2);	//1c    data = ADWIDTHL;		// 0x20;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_ADWIDTH_L, &data, 1);	//0x0c    data = ADWIDTHH;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_ADWIDTH_H, &data, 1);	// 0x0d	/*******************************************************************/    data = TESTCOMP;		//0x72 compressed mode    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_QUANT_COMP, &data, 1);	//0x28    data = TESTLINE;		//0x84; // CIF | 4 packet    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_MODE_PACKET, &data, 1);	//0x29	/*******************************************************************/    data = TESTCLK;		//0x48; //0x08;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_SETCLK, &data, 1);	//0x2c    data = TESTPTL;		// 0x38;     spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_POINT_L, &data, 1);	//0x2d    data = TESTPTH;		// 0x04;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_POINT_H, &data, 1);	// 0x2e    dataStart = TESTPTBL;	//0x04;     spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_POINTB_L, &dataStart, 1);	//0x2f    data = TESTPTBH;		//0x04;     spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_POINTB_H, &data, 1);	//0x30    data = TV8532_CMD_UPDATE;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_PART_CTRL, &data, 1);	//0x00<-0x84	/********************************************************************/    data = 0x01;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_UDP_UPDATE, &data, 1);	//0x31    wait_ms(200);    data = 0x00;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_UDP_UPDATE, &data, 1);	//0x31	/********************************************************************/    tv_8532_setReg(spca50x);	/*******************************************************************/    data = 0x0b;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_GPIO_OE, &data, 1);	/*******************************************************************/    tv_8532_setReg(spca50x);	/********************************************************************/    tv_8532_PollReg(spca50x);    return 0;}static void tv8532_start(struct usb_spca50x *spca50x){    struct usb_device *dev = spca50x->dev;    __u8 data = 0;    __u8 dataStart = 0;    __u8 value[2] = { 0, 0 };    data = 0x32;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_SLOPE, &data,		    1);    data = 0;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_AD_BITCTRL, &data,		    1);    tv_8532ReadRegisters(spca50x);    data = 0x0b;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_GPIO_OE, &data, 1);    value[0] = ADHEIGHL;    value[1] = ADHEIGHH;	// 401d 0x0169;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_ADHEIGHT_L, value, 2);	//0e    tv8532_initPictSetting(spca50x);    //value[0] = EXPOL; value[1] =EXPOH; // 350d 0x014c;    //spca5xxRegWrite(dev,TV8532_REQ_RegWrite,0,TV8532_EXPOSURE,value,2); //1c    tv8532_setbrightness(spca50x);    data = ADWIDTHL;		// 0x20;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_ADWIDTH_L, &data, 1);	//0x0c    data = ADWIDTHH;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_ADWIDTH_H, &data, 1);	// 0x0d	/*******************************************************************/    data = TESTCOMP;		//0x72 compressed mode    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_QUANT_COMP, &data, 1);	//0x28    if (spca50x->mode) {	data = QCIFLINE;	//0x84; // CIF | 4 packet	spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_MODE_PACKET, &data, 1);	//0x29    } else {	data = TESTLINE;	//0x84; // CIF | 4 packet	spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_MODE_PACKET, &data, 1);	//0x29    }	/*******************************************************************/    data = TESTCLK;		//0x48; //0x08;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_SETCLK, &data, 1);	//0x2c    data = TESTPTL;		// 0x38;     spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_POINT_L, &data, 1);	//0x2d    data = TESTPTH;		// 0x04;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_POINT_H, &data, 1);	// 0x2e    dataStart = TESTPTBL;	//0x04;     spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_POINTB_L, &dataStart, 1);	//0x2f    data = TESTPTBH;		//0x04;     spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_POINTB_H, &data, 1);	//0x30    data = TV8532_CMD_UPDATE;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_PART_CTRL, &data, 1);	//0x00<-0x84	/********************************************************************/    data = 0x01;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_UDP_UPDATE, &data, 1);	//0x31    wait_ms(200);    data = 0x00;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_UDP_UPDATE, &data, 1);	//0x31	/********************************************************************/    tv_8532_setReg(spca50x);	/*******************************************************************/    data = 0x0b;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_GPIO_OE, &data, 1);	/*******************************************************************/    tv_8532_setReg(spca50x);	/********************************************************************/    tv_8532_PollReg(spca50x);    data = 0x00;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_UDP_UPDATE, &data, 1);	//0x31}static void tv8532_stopN(struct usb_spca50x *spca50x){    struct usb_device *dev = spca50x->dev;    __u8 data = 0;    data = 0x0b;    spca5xxRegWrite(dev, TV8532_REQ_RegWrite, 0, TV8532_GPIO_OE, &data, 1);}static int tv8532_sofdetect(struct usb_spca50x *spca50x,struct spca50x_frame *frame, unsigned char *cdata,int *iPix, int seqnum, int *datalength){				*iPix = 0;		PDEBUG(1, "icm532, sequenceNumber: 0x%02x packet %d ",		       seqnum, spca50x->packet);		/* here we detect 0x80 */		if (cdata[0] == 0x80) {		    /* counter is limited so we need few header for a frame :) */		    /* header 0x80 0x80 0x80 0x80 0x80 */		    /* packet  00   63  127  145  00   */		    /* sof     0     1   1    0    0   */		    /* update sequence */		    if ((spca50x->packet == 63)			|| (spca50x->packet == 127))			spca50x->synchro = 1;		    /* is there a frame start ? */		    if (spca50x->packet >= ((spca50x->hdrheight >> 1) - 1)) {			PDEBUG(1, "SOF > %d seqnumber %d packet %d",			       spca50x->synchro, seqnum, spca50x->packet);			if (!spca50x->synchro) {			    spca50x->packet = 0;			    return 0; //frame start			}		    } else {			if (!spca50x->synchro) {			    // Drop packet frame corrupt			    PDEBUG(1, "DROP SOF %d seqnumber %d packet %d",				   spca50x->synchro, seqnum,				   spca50x->packet);			    frame->last_packet = 0;			    seqnum = 0 ;			    spca50x->packet = 0;			    return -1;			}			spca50x->synchro = 1;			spca50x->packet++;			return (seqnum+1);		    }		} else { 		    spca50x->packet++;		    return (seqnum+1);		}   PDEBUG(0, "Warning wrong TV8532 frame detection %d",				   spca50x->packet);   return -1;}

⌨️ 快捷键说明

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