📄 tvp5105.c
字号:
#include "ssd192X.h"#include "i2c.h"#include "tvp5105.h"#include "io.h"int CAM_WIDTH=720;int CAM_HEIGHT=320;int CAM_FRAME_RATE=70;int video_blank_check(void){ UINT8 status; I2C i2c; i2c.deviceID=I2C_DEVICE_ID; i2c.bitRate=1;// ssd192X_i2c_init(&i2c); status= ssd192X_i2c_readb(&i2c, 0x88, SSD_I2C_READ_WO_ACK); // myprintf("vdieo status: %x\n",status); if (status & 0x06) return 0; else return 1; }void cam_hw_init(void){ I2C i2c; i2c.deviceID=I2C_DEVICE_ID; i2c.bitRate=1;// myprintf("DV NTSC\n"); ssd192X_i2c_init(&i2c); ssd192X_i2c_writeb(&i2c, 0x0, 0x00);//kevinzhu 0x00 ssd192X_i2c_writeb(&i2c, 0x1, 0x15); ssd192X_i2c_writeb(&i2c, 0x2, 0x00); ssd192X_i2c_writeb(&i2c, 0x3, 0x69);//kevinzhu 0x69 ssd192X_i2c_writeb(&i2c, 0x4, 0x00);//kevinzhu 0x00 ssd192X_i2c_writeb(&i2c, 0x5, 0x00); ssd192X_i2c_writeb(&i2c, 0x6, 0x10); ssd192X_i2c_writeb(&i2c, 0x7, 0x60); ssd192X_i2c_writeb(&i2c, 0x8, 0x00); ssd192X_i2c_writeb(&i2c, 0x9, 0x8c); ssd192X_i2c_writeb(&i2c, 0xa ,0xa0); ssd192X_i2c_writeb(&i2c, 0xb, 0x00); ssd192X_i2c_writeb(&i2c, 0xc, 0x98); ssd192X_i2c_writeb(&i2c, 0xd, 0x47);//kevinzhu 0x47 ssd192X_i2c_writeb(&i2c, 0xe, 0x00); ssd192X_i2c_writeb(&i2c, 0xf, 0x0a); ssd192X_i2c_writeb(&i2c, 0x10, 0x00); ssd192X_i2c_writeb(&i2c, 0x11, 0x00); // ssd192X_i2c_writeb(&i2c, 0x12, 0x00); // ssd192X_i2c_writeb(&i2c, 0x13, 0x00); // ssd192X_i2c_writeb(&i2c, 0x14, 0x00); // ssd192X_i2c_writeb(&i2c, 0x15, 0x25); ssd192X_i2c_writeb(&i2c, 0x16, 0x80); ssd192X_i2c_writeb(&i2c, 0x17, 0x00); ssd192X_i2c_writeb(&i2c, 0x18, 0x00); ssd192X_i2c_writeb(&i2c, 0x19, 0x00); ssd192X_i2c_writeb(&i2c, 0x1a, 0x1c);//kevinzhu 0x1c ssd192X_i2c_writeb(&i2c, 0x1b, 0x14); ssd192X_i2c_writeb(&i2c, 0x28, 0x00); ssd192X_i2c_writeb(&i2c, 0x2e, 0x0f); ssd192X_i2c_writeb(&i2c, 0x2f, 0x01); ssd192X_i2c_writeb(&i2c, 0x30, 0x00); // myprintf("***********dvd cam hw init\n"); // SSD_IOW(REG_DV_VMEM_STR_ADDR1_0)= 0x3250; // Set Preview Memory Start Address// SSD_IOW(REG_DV_VMEM_STR_ADDR2_0)= 0x5820; // Set Preview Memory Start Address// SSD_IOW(REG_DV_DV0_START_ADDR_0)= 0x3250; // Set Digital Video Window Display Start Address// SSD_IOW(REG_DV_DV1_START_ADDR_0)= 0x5820; // Set Digital Video Window Display Start Address //note the setting below is assuming a normal DVD player input, //with dimension of 720x240 //the display target window have dimension of 160x120, //to demonstrate horizontal and vertical scaling function, //the crop window size is set to 640x240 //with horizontal and vertical downscaling of 4 and 2 respectively //setup the crop window// SSD_IOW(REG_DV_HCROP_STR_0)=0x0028;// SSD_IOW(REG_DV_VCROP_STR_0)=12;//Philips codec specific 12:NTSC;0 for PAL mode// SSD_IOW(REG_DV_HCROP_SIZE_0)=0x0280;// SSD_IOW(REG_DV_VCROP_SIZE_0)=0x00f0;// SSD_IOB(REG_DV_VHDEC_RATIO)=0x02; // Set horizontal scaling = 4// SSD_IOB(REG_DV_VVDEC_RATIO)=0x01; // Set vertical scaling = 2 //below registers are something I have no idea. Please do not touch SSD_REGWW(REG_DV_NFRAME_POS_0, 0x0002); // Set Frame Position SSD_REGWW(REG_DV_HORI_PERIOD_0, 0x0270); // Set Horizontal Period // WriteRegByte(REG_DV_TV_0,0x02); // WriteRegByte(REG_DV_TV_1,0x2d); // WriteRegByte(REG_DV_TV_2,0x01); // WriteRegByte(0x17e, 0x3f); // DV test // WriteRegByte(REG_DV_OP_MODE,0x12); // below settting for 8 bit DVD mode only //SSD_REGWB(REG_DV_OP_MODE,0x02); SSD_REGWB(REG_DV_TV_0,0x02); SSD_REGWB(REG_DV_TV_1,0x0d); SSD_REGWB(REG_DV_TV_2,0x01); SSD_REGWB(REG_VCLK_CONFIG_1,0x04);//real chip =7; FPGA=4// SSD_IOB(REG_MAIN_WIN_ADDR_OFFSET0)=0x6e; SSD_REGWB(REG_SPECIAL_EFFECTS,0x40); SSD_REGWB(REG_DV_FRAME_SAMPLING,0x01);//0x161:1frame per 2frames // SSD_IOW(REG_MAIN_WIN_DISP_START_ADDR0)=0x157b; //SSD_IOL(REG_PCLK_FREQ_RATIO_0)=0x17fff;// 176 x 220 pannel ssd1278// rotate 90 degree// SSD_IOB(REG_DV_HCROP_STR_0 )=0x8c;//dummy space=(720-440);starting pos= (720-440)/2// SSD_IOW(REG_DV_HCROP_SIZE_0)=0x1b8;//440=220*2// SSD_IOB(REG_DV_VCROP_SIZE_0)=0xf0;//240// SSD_IOB(REG_DV_VHDEC_RATIO )=0x1;//divide 440 by 2 (2^1=2)// SSD_IOB( REG_DV_VVDEC_RATIO)=0x0;//divide 240 by 1// casio 160x240 panel// SSD_IOB(REG_DV_HCROP_STR_0 )=40;//(720-640)/2// SSD_IOW(REG_DV_HCROP_SIZE_0)=640;//640// SSD_IOB(REG_DV_VCROP_SIZE_0)=0xf0;//240// SSD_IOB(REG_DV_VHDEC_RATIO )=0x2; // 2^2 = 4 (640/4=160)// SSD_IOB( REG_DV_VVDEC_RATIO)=0x0; // 2^0 = 1 (240/1=240)/* myprintf(">>>>>>>>>>>>>>>>>>%X\n",SSD_IOW(REG_DV_HCROP_SIZE_0)); */}void cam_hw_still(void){ // bt656 / field stuff select// myprintf("**********dvd cam hw still\n"); SSD_REGWB(REG_DV_FRAME_PULSE_WIDTH,0x08);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -