解碼芯片TVP5150與SAA7115配置的驅動程序
(2011/11/4 9:28:00)
(一)關于TVP5150
在合眾達提供的loop2例程中,有一個_tvp51xx.c的文件,里面包括了所有關于TVP5150
寄存器的配置參數,但好像是沒有用,因為根本沒有調用這個文件的,而只是用下面的幾條語句進行幾項配置:
_IIC_write(hSeeddm642i2c, addrI2C,0x00, input_sel);
_IIC_write(hSeeddm642i2c, addrI2C,0x03, misc_ctrl);
_IIC_write(hSeeddm642i2c, addrI2C,0x0D, output_format);
_IIC_write(hSeeddm642i2c, addrI2C,0x0F, pin_cfg);
_IIC_write(hSeeddm642i2c, addrI2C,0x1B, chro_ctrl_2);
根據地址,我們可以知道是對以下寄存器進行了設置,(由于人懶了一點,直接把PDF的東西粘貼過來了)
(二)關于SAA7115(基于TI的驅動)
在TI的例程里有一個結構體,里面有對7115需要配置的項目
SAA7115_ConfParams EVMDM642_vCapParamsSAA7115 = {
SAA7115_MODE_PAL720,
SAA7115_MODE_PAL720,
SAA7115_AFMT_COMPOSITE,
TRUE,
TRUE,
INV, /*handleI2C */
};
這個結構體的原形在頭文件saa7115.h中定義
typedef struct {
SAA7115_Mode inMode;
SAA7115_Mode outMode;
SAA7115_AnalogFormat aFmt;
Bool enableBT656Sync;
Bool enableIPortOutput;
I2C_Handle hI2C;
/* optional parameters for inMode == SAA7115_MODE_USER */
Int hSize;
Int vSize;
Bool interlaced;
} SAA7115_ConfParams;
(1)inMode 定義為視頻輸出格式(在saa7115.h中定義)
typedef enum SAA7115_Mode {
SAA7115_MODE_NTSC640,
SAA7115_MODE_NTSC720,
SAA7115_MODE_PAL720,
SAA7115_MODE_PAL768,
SAA7115_MODE_CIF,
SAA7115_MODE_QCIF,
SAA7115_MODE_SQCIF,
SAA7115_MODE_SIF,
SAA7115_MODE_USER
}SAA7115_Mode;
(2)outMode 定義為輸出視頻格式,值同上
(3) aFmt 定義為視頻輸出設備的模擬信號格式(值在saa7105.h)中定義
typedef enum SAA7115_AnalogFormat {
SAA7115_AFMT_SVIDEO,
SAA7115_AFMT_COMPOSITE
} SAA7115_AnalogFormat;
(4)enableBT656Sync 定義為在輸出視頻數據流中允許插入ITU-R BT.656定義的SAV/EAV碼
(5)enableIPortOutput:用I-PORT口代替X-PORT口輸出視頻流
(6)hI2C DM642的I2C
控制器的句柄
當inMode = SAA7115_MODE_USER時,下面的參數可選
(7)hSize 用戶定義圖畫水平大小
(8)vSize用戶自定義圖畫垂直大小
(9)interlaced 定義用戶圖像是隔行掃描還是逐行掃描模式
由上面我們可以看出,一般在PAL制式采集視頻時,需要配置的東西主要是:
輸入輸出模式、是否有同步信號、使能數據輸出口