CrazyBingo

Chapter 03: OV7670 寄存器配

0
阅读(5950)

Chapter 03: OV7670 寄存器配置

wps_clip_image-8122

wps_clip_image-754

1. 写在前面的话

时间是2012年7月12号,23:34,不能休息,我还在继续……

关于OV7670的寄存器,我折腾了很久,因为没有一个官方的手册,告诉你哪些寄存器必须怎么初始化,那些寄存器必须以怎样的顺序初始化,你到底要怎么样。。。

最后我想说,还是按照彬哥这样吧……

2. 很重要的一些寄存器

首先申明一条,千万不要看中文版的手册,会害死人了。。。不听彬哥言,吃亏在眼前!

1) 复位,并且选择图像输出模式,YUV,RGB565 (00:YUV,04:RGB)(8x全局复位)

wps_clip_image-447

wps_clip_image-28264

2) 彩条 0x70 0x71 = 0x80 (00关闭)

wps_clip_image-1520

wps_clip_image-7355

wps_clip_image-7780

有点无法理解,就是如下“正常”是手册得出的结果,但实际上是“实验”的结果。郁闷!!!

正常 移位1 8彩条 渐变灰

0x70: 00 00 80 80

0x71: 00 80 00 80

实验 8彩条 移位1 8彩条 渐变灰

0x70: 00 00 80 80

0x71: 00 80 00 80

3) 时钟输入设置

这里直接使用了外部时钟,即FPGA给的25MHz,如下:

wps_clip_image-27835

wps_clip_image-22389

4) PLL寄存器设置

这里用来设计PLL或者外部时钟的分频参数,我直接0分频。同时有个很强大的功能,就是可以通过设置打开内部LDO,省略了外部电路,如下:

wps_clip_image-26360

wps_clip_image-5771

5) PCLK像素时钟设置

通过这个寄存器的配置,可以改变采样时钟,同时改变输出图像的大小,不过我FPGA当然用了全屏最大,如下:

wps_clip_image-17903

wps_clip_image-13337

同时这个寄存器的配置,即PCLK,还跟0x73有关,如下

wps_clip_image-4234

wps_clip_image-29342

如下,PCLK 4分频的SinalTap图:

wps_clip_image-24984

6) 设置数据位RGB565 00-FF,实验证明YUV的时候,00-ff就挂,必须01-FE或者更小!如下:

wps_clip_image-8884

wps_clip_image-3125

7) 设置YUV格式

这需要两个寄存器的合作才能输出固定的序列,如下:

wps_clip_image-1124

wps_clip_image-3123

wps_clip_image-14432

3. 寄存器最终版

还有一些寄存器,太多太多,比如说0x1e可以调节水平或者竖直镜像等,如下:

wps_clip_image-27393

实际配置中,通常设定好比较重要的几个参数,其他的参数,照搬照抄吧。。。经过长时间的测试研究,我提取出了比较重要的一些参数,如下图所示:

wps_clip_image-26579

通过这些参数的配置,基本能实现数据格式,帧率,时钟等模式,参数的设计。其实寄存器设置本身没有一个固定的顺序,只是我把重要的参数都提前了便于修改。我列出的当然只是最基础的部分,关于寄存器的设置,还是要多看看英文原版手册。手册是万能的!