01-03: OV7670摄像头模块详解
版权声明:Copyright © 2016-2019,Stardust Studio,All Rights Reserved
序言——凡尘
(1)笔者的驱动芯片为stm32f103系列,但不限于stm系列单片机、51、K6X、LPC 单片机亦或是树莓派等;
(2)欢迎各位大牛投稿补充和完善;
本文将从以下四个方面详细介绍OV7670摄像头模块的使用:
1.入门
2.进阶
2.1.不带fifo芯片摄像头配置
2.2.带fifo芯片摄像头配置
2.2.1.fifo芯片详解
2.2.2.fifo芯片在OV7670摄像头模块中的电路配置
2.2.3.SN74LVC1G00芯片在OV7670摄像头模块中的电路配置
2.2.4.PAM3101DAB芯片在OV7670摄像头模块中的电路配置
2.3.OV7670摄像头寄存器配置
3.高阶
4.OV系列摄像头模组
1.入门
在阅读后续内容时请先阅读:
1.摄像头简介 (建议详读);
2.OV7670摄像头入门基础知识 (建议详读);
3.OV7670摄像头彻底解读 (建议略读);
4.OV7670使用说明和程序讲解 (建议前期先略读后期详读);
5.OV7670中文版数据手册V1.4 (建议后期和英文数据手册一起看);
6.OV7670 datasheet V1.1 (建议后期和中文数据手册一起看);
注:(1)OV7670中文版数据手册错误较多包括具体寄存器配置,具体寄存器配置需以英文数据手册为参考;
(2)V1.1和V1.4版本数据手册差异不大;
2.进阶
2.1.不带fifo芯片摄像头配置
笔者在这里使用的是这款:
未完待续
2.2.带fifo芯片摄像头配置
笔者在这里使用的是这款:
首先来分析一下它的电路结构:
2.2.1.fifo芯片详解
在阅读后续内容时请先阅读:
1.AL422B Data Sheets(Revision V1.01) (建议详读);
2.AL422B详解 (建议详读);
笔者在此归纳一下要点:
(1)AL422B由3M容量DRAM组成,配置为393216字x 8位FIFO(3Mbits x 1024 x 1024 = 393216word x 8bit);
(2)读/写数据周期为20ns;
(3)5v或3.3v供电(此款摄像头为3.3v供电,因此AL422B的DEC引脚要上拉3.3v,并且要下拉0.1uF,详见数据手册配置和OV7670 fifo摄像头电路图);
(4)标准28脚SOP封装;
(5)DO0~DO7(Data output)
在此,按照TTL电路标准输入电压大于2V为高电平,小于0.8V为低电平,按照上拉为3.3v计算,输出点的外部加载电平为1.25v,实际上,单片机io输入配置为上/下拉或者浮空输入都没问题的,因为在读取stm32 IDR寄存器值的时候,fifo已经有了电平输出,输入电平高低取决于AL422B输出,笔者在此使用的是浮空输入模式,因为stm32初始化寄存器配置后,默认为浮空输入,笔者只需要开启APB2总线GPIOx时钟即可,非常方便;
(6)输入/输出控制时钟范围1MHz~50MHz(此款摄像头为12MHz时钟输入,而PCLK时钟默认不分频即12MHz,这里尤其要注意,笔者在此配置的IO口速度模式为:GPIO_Speed_50MHz);
2.2.2.fifo芯片在OV7670摄像头模块中的电路配置
在2.2.1节已经提到了部分IO配置,接下来笔者带大家来了解一下剩余IO口配置:
(1)TST:Test pin (pulled-down)仅用于测试目的,正常应用时应将其拉低。
(2)WCLK:连接摄像头PCLK;
(3)RE:此款摄像头中接GND,在此,看数据手册就会发现AL422B还有一个OE引脚,这两个引脚是有区别的:
RE和OE都有高电平钳制数据的作用,不同的是RE钳制数据恢复的时候数据会正常位移,OE钳制数据时输出会呈高阻态,由时序图知会损失钳位期间的数据,相当于钳位期间数据指针仍在位移,因此,笔者认为应该把OE拉地而把RE引出这样就不会丢失数据,当然这样做也没有错误,目前这样的好处在于方便筛选需要的数据输送给单片机,如果是浮空输入状态的话,需要在钳位期间关闭数据采集,否则数据会随意浮动。
2.2.3.SN74LVC1G00芯片在OV7670摄像头模块中的电路配置
感兴趣的读者可以翻看:
SN74LVC1G00是一款两端输入与非门,Vcc电压范围为–0.5v~6.5v,Vcc运行电压范围1.65v~5.5v,两端输入电压范围为0v~5.5v,高电平有效范围为2v~5.5v(因为我们这里的输入电压理想是3.3v),低电平有效范围为-0.5v~0.8v(因为我们这里的输入电压理想是3.3v)。当摄像头WR引脚给高电平使能写和摄像头内部HREF(摄像头外部HREF)行同步信号为高时,使能fifo写指针(低电平有效)。
2.2.4.PAM3101DAB芯片在OV7670摄像头模块中的电路配置
感兴趣的读者可以翻看:
在这里我们用的是PAM3101DAB280,即输出2.8v,当然PAM3101DAB285输出2.85v也可。此款芯片分别给摄像头AVDD(Analog power supply)和DOVDD(Digital power supply)引脚供电,可承受电压范围分别是2.45v~ 3.0v(典型值为2.75v)和1.7v ~ 3.0v,而"OV7670 fifo摄像头电路图"中的做法是比较合理的,将数字和模拟地分流处理增加了电路的稳定性。但其中有一路DVDD(digital logic core)电压范围1.62v~1.98v(典型值为1.8v)的核电压未给出,笔者认为这个引出端应该和DOVDD共接了。
2.3.OV7670摄像头寄存器配置
未完待续
最终效果: