STM32学习笔记----摄像头OV7670

介绍

OV7670 CAMERACHIPTM 图像传感器,体积小、工作电压低,提供单片 VGA 摄像头和影像处理器的所有功能。通过 SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率 8 位影响数据。该产品 VGA 图像最高达到 30 帧/秒。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过 SCCB 接口编程。OmmiVision 图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质量,得到清晰的稳定的彩色图像。
STM32学习笔记----摄像头OV7670_第1张图片

引脚介绍

STM32学习笔记----摄像头OV7670_第2张图片
STM32学习笔记----摄像头OV7670_第3张图片

结构框图

STM32学习笔记----摄像头OV7670_第4张图片

功能实现描述

微控制器主要操控RESET、PWDN、SIO_C、SIO_D、D[7:0]
通过SIO_C、SIO_D进行两线SCCB通信,对摄像头的寄存器进行设定,以及发送指令
通过D[7:0]获取具体图像数据
通过RESET、PWDN以及其他引脚实现特殊功能

在STM32例程里,
1、完成各引脚的初始化
2、完成SCCB初始化
3、利用SCCB完成摄像头初始化
4、设置摄像头各参数与功能
进入主函数
5、利用帧同步信号开启FIFO功能(在中断中开启),当摄像头完成一帧的采集时会产生帧同步信号,表示有一张图片
6、在主函数中若开启了FIFO,则设置LCD显示区域,并利用FIFO读取图片数据,将这些数据放入LCD的RAM中,完成显示

OV7670的图像数据输出格式

VGA:分辨率为640480的输出模式
QVGA:分辨率为320
240的输出格式
QQVGA:分辨率为160*120的输出格式
PCLK:像素时钟,一个PCLK时钟,输出1个像素或半个像素
VSYNC:帧同步信号
HREF/HSYNC:行同步信号

先看行输出时序:
STM32学习笔记----摄像头OV7670_第5张图片
图像数据在HREF为高的时候输出,当HREF变高后,每一个PCLK时钟,输出一个字节数据。比如我们采用VGA时序,RGB565格式输出,每两个字节组成一个像素的颜色(高字节在前,低字节在后),这样每行输出总共有6402个PCLK周期,输出6402个字节。

再来看帧时序:
STM32学习笔记----摄像头OV7670_第6张图片
VSYNC位高时产生一个帧同步信号,故当产生两个帧同步信号时,一帧数据输出完成。注意:图中的HSYNC和HREF其实是一个引脚产生的信号,只是在不同的场合下面,使用不同的信号方式。

存储和读取图像数据的过程

对于该模块,我们只关心两点:1、如何存储图像数据;2、如何读取图像数据
1、存储(OV7670往FIFO中写数据)
战舰OV7670模块存储图像数据的过程为:等待OV767同步信号->FIFO写指针复位->FIFO写使能->等待第二个同步信号->FIFO写禁止,通过以上5个步骤就可以完成一帧图像的存储
2、读取(MCU从FIFO中读取数据)
读取过程:FIFO读指针复位->给FIFO读时钟(FIFO RCLK)->读取第一个像素高字节->给FIFO读时钟(FIFO RCLK)->读取第一个像素低字节->给FIFO读时钟(FIFO RCLK)->读取第二个像素高字节->循环读取剩余像素->结束

比如QVGA模式,RGB565格式,我们总共循环读取3202402次,就可以读取一帧数据,把这些数据写入LCD模块,就可以看到摄像头的画面了。

你可能感兴趣的:(软件代码,STM32笔记)