前言
前几天分析了ov9650的驱动,觉得还看得懂吧。于是开始移植代码,驱动ov7670。其实那个ov9650的驱动程序架构并不好。没有使用v4l2的驱动架构,这样应用就不能用完美使用v4l2的接口了。还有,他只是采集了p-path。并没有对c-path进行任何处理,也没开放什么接口。本文主要想讲讲s3c2440的camera接口和ov7670的寄存器配置。
一、开发环境
1.开发板:tq2440(s3c2440)
2.摄像头: ov7670
二、接口电路
下面是我买来的ov7670的摄像头的pcb图,重点是它的引脚图。为了与tq2440的camera接口更好的做比较,我把他们放在一起吧。
我选的是3.3v的那个vdd,这根据摄像头模块要求吧。所以这里VCC-VDD33V,当我把ov7670的管脚全部接到camera接口上时,我发现这接口上有两个口,这个ov7670模块没有。是CAMRST和ENIT19。查一下datasheet,这CAMRST是用来复位cmos摄像头。原来的ov9650应是想通过驱动将该管脚拉高,从而产生硬复位。但很遗憾,这个ov9650的驱动程序并没有这么做。而我们这ov7670模块则直接将这个口连到VCC,通俗易懂。还有一个是ENIT19,这个口在ov9650的驱动程序里看到了他的用法,
staticvoid __inline__ ov9650_poweron(void)
{
s3c2410_gpio_cfgpin(S3C2410_GPG11,S3C2410_GPG11_OUTP);
s3c2410_gpio_setpin(S3C2410_GPG11,0);
mdelay(20);
}
这里的S3C2410_GPG11就是ENIT19了,目的就是用通断cmos摄像头的电。至于是高还是低电平,那要看电路设计。我这个ov7670模块没有放出这个控制口。
温馨提醒:这个东东不支持热插拔,所以请在断电情况下连接!
三、s3c2440camera interface
1.简介
下面的简介是抄自datashe