解码芯片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制式采集视频时,需要配置的东西主要是:
输入输出模式、是否有同步信号、使能数据输出口