OV9650摄像头驱动分析
首先要明确一下摄像头工作方式:
一、摄像头是怎么把数据传送给mini2440的呢?
这个摄像头有10个数据口,mini2440通过这些数据口采集摄像头的数据。
二、硬件以什么样的方式交换采集数据呢?
摄像头将采集到的图像数据以一些标准的格式通过数据口输出。有两种输出方式,一种是一次输出10个bits.另一种是每次输出8bits.我们的mini2440采集的是第二种接法。
三、camera interface怎么把数据传给我们的程序呢?
我们在程序中设定一大块内存区如:frame_bufffer[][],这样的数组,并把这个数组的地址传给 camera interface的相应寄存器。这样camera interface会自动把摄像头传给它的数据经过自己的处理后存入那个内存区。至于camera interface做何种处理是我们可以通过寄存器设定的。
四、ov9650以什么格式输出呢,参见(二)红色字体
ov9650支持很多种格式,比如说我们常用的YCbCr4:2:2格式,这种格式我们的camera interface也支持。只到我们把两方都设成这种格式,camera interface就能正确处理数据。
五、camera interface以什么格式存入我们给的内存区中呢?
这个也是可以通过设定寄存器设置的。
比如说我们设成RGB565格式,camera interface就会把从ov9650拿到的YCbCr像素用硬件广商设定的程序转换成RGB565的格式,并存内我们的数组里,我们按照这个格式从数组里取数据就可以,也可以直接把这个地址给LCD的寄存器,LCD就可以直接显示了。
六、mini2440怎么设置ov9650中的寄存器呢?
ov9650有SCCB总线,我们可以用mini2440的IO口模拟一个SCCB总线传送方式。其实SCCB总线是弱化的IIC总线,我们也可以用IIC总线传送命令。
七、ov9650中有很多寄存有设置啊?
是啊,真多,不过广商提供一些标准的设置方法,我们只要写成数据,并循环写入就可以了。