一种数码相机成像和视频处理前端的设计
4.1 硬件连接
考虑到TMS320DSCX的CCD控制器只能接收12位宽的数据,在TVP5040端决定采用10位YUV 4:2:2的视频输出格式,则TMS320DSCX与TVP5040的硬件连接如图5所示。
由于TVP5040输出10位数据,所以本设计保留最高位,低两位接地或者悬空。TMS320DSC接收来自TVP5040的VD、HD以及场信号并与其保持同步。图像数据输入TMS320DSC系列DSP时,在输入点时钟的上升沿和下降沿被锁存,可通过寄存器DET设置。CCD控制器可以将数据直接存入SDRAM,也可以通过预览引擎(preview engine)Burst压缩单元将数据压缩后存入SDRAM。
TVP5040输出的写信号(WEN)用于从CCD接口直接将数据写入SDRAM,可通过EWEN位进行设置。当WEN信号为高读写位(RDWE),即位是“1”时,图像数据就载入SDRAM。
需要注意的是,TVP5040必须外接14.31818MHz的晶振才能保持正常的工作频率。
4.2 软件实现
首先需要初始化TVP5040,将微代码通过TVP5040的I2C主机端口下载到微处理器中。
Void TVP5040INIT(void)
{
resetTVP(); //首先将TVP5040复位
DELAYTIME; //延时,下载代码需要时序稳定
MicrocodeDown(); //下载微代码
RestartMicroprocessor();//下载完后,需要重新启动5040的微处理器
TimerWait(5); //微处理器重新启动需要等待5ms
PatchTVPRegister(); //内部寄存器处于默认状态,需要重新设置
}
然后需要设置CCD控制器以获取一帧图像数据并送入SDRAM。
Void main()
{
TVP5040INIT();//初始化TVP5040
SdramInit(); //初始化SDRAM
CCDCInit();//初始化CCD控制器
CCDCSetLinePerFrame();//设置每帧图像的行数
CCDCSetRawDataMode();//设置内部生成时序信号的宽度、极性、位置和方向
CCDCGetFrame();//获取一帧图像数据送入SDRAM
}
然后,就可以对SDRAM中的图像数据进行处理了,