📄 tv8532.h
字号:
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 + -