Chapter 03: OV7670 寄存器配
0赞Chapter 03: OV7670 寄存器配置
1. 写在前面的话
时间是2012年7月12号,23:34,不能休息,我还在继续……
关于OV7670的寄存器,我折腾了很久,因为没有一个官方的手册,告诉你哪些寄存器必须怎么初始化,那些寄存器必须以怎样的顺序初始化,你到底要怎么样。。。
最后我想说,还是按照彬哥这样吧……
2. 很重要的一些寄存器
首先申明一条,千万不要看中文版的手册,会害死人了。。。不听彬哥言,吃亏在眼前!
1) 复位,并且选择图像输出模式,YUV,RGB565 (00:YUV,04:RGB)(8x全局复位)
2) 彩条 0x70 0x71 = 0x80 (00关闭)
有点无法理解,就是如下“正常”是手册得出的结果,但实际上是“实验”的结果。郁闷!!!
正常 移位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,如下:
4) PLL寄存器设置
这里用来设计PLL或者外部时钟的分频参数,我直接0分频。同时有个很强大的功能,就是可以通过设置打开内部LDO,省略了外部电路,如下:
5) PCLK像素时钟设置
通过这个寄存器的配置,可以改变采样时钟,同时改变输出图像的大小,不过我FPGA当然用了全屏最大,如下:
同时这个寄存器的配置,即PCLK,还跟0x73有关,如下
如下,PCLK 4分频的SinalTap图:
6) 设置数据位RGB565 00-FF,实验证明YUV的时候,00-ff就挂,必须01-FE或者更小!如下:
7) 设置YUV格式
这需要两个寄存器的合作才能输出固定的序列,如下:
3. 寄存器最终版
还有一些寄存器,太多太多,比如说0x1e可以调节水平或者竖直镜像等,如下:
实际配置中,通常设定好比较重要的几个参数,其他的参数,照搬照抄吧。。。经过长时间的测试研究,我提取出了比较重要的一些参数,如下图所示:
通过这些参数的配置,基本能实现数据格式,帧率,时钟等模式,参数的设计。其实寄存器设置本身没有一个固定的顺序,只是我把重要的参数都提前了便于修改。我列出的当然只是最基础的部分,关于寄存器的设置,还是要多看看英文原版手册。手册是万能的!