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

📄 tv8532.h

📁 LINUX下的万能摄象头驱动
💻 H
📖 第 1 页 / 共 2 页
字号:
    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 };    __u16 err;    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    err = 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_stop(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);}

⌨️ 快捷键说明

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