//尝试写作,记录学习过程。

一、OV2640摄像头简介

本节将主要讲解OV2640摄像头基础部分和一些引脚配置。

  1. OV2640传感器简介

OV2640是Omni Vision公司生产的一颗1/4寸的CMOS UXGA(1632*1232)图像传感器,如图1.1 OV2640摄像头所示。该传感器体积小、工作电压低,提供单片 UXGA 摄像头和影像处理器的所有功能。通过 SCCB 总线控制,可以输出整帧、子采样、缩放和取窗口等方式的各种分辨率 8/10 位影像数据。该产品 UXGA 图像最高达到 15 帧/秒(SVGA 可达 30 帧,CIF 可达 60 帧)。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、对比度、色度等都可以通过 SCCB 接口编程。Omni Vision图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、拖尾、浮散等,提高图像质量,得到清晰的稳定的彩色图像。

图1.1 实验室配套的OV2640摄像头

OV2640 传感器特点有:

  1. 高灵敏度、工作电压低适合嵌入式应用;
  2. 通过 SCCB 总线控制,标准的 SCCB 接口,类似 IIC 接口,SDA数据线和SCL时钟线;
  3. 支持图像压缩,即可输出压缩后的JPEG图像数据,大大减少数据量;
  4. 支持 RawRGB、RGB(RGB565/RGB555)、GRB422、YUV(422/420)和 YCbCr (422)输出格式;
  5. 支持自动曝光控制、自动增益控制、自动白平衡、自动消除灯光条纹等自动控制功能,对图像进行处理;
  6. 自带嵌入式微处理器;
  7. 支持图像缩放、平移和窗口设置。
  8. UXGA最高15帧/秒,SVGA可达30帧,CIF可达60帧。UXGA,即分辨率位1600*1200的输出格式,类似还有SXGA(1280*1024)、XVGA(1280*960)、WXGA(1280*800)、XGA(1024*768)、SVGA(800*600)、VGA(640*480)、CIF(352*288)和QQVGA(160*120)等。

2.  ATK-OV2640模块原理图

如图1.2 OV2640原理图所示。

3. OV2640引脚及功能框图

OV2640传感器采用BGA封装,它的前端是采光窗口,引脚都在背面引出,引脚的分布如图1.3 OV2640传感器引脚分布图,其中彩色部分是主要信号的引脚,非彩色部分是电源相关引脚。

图1.3 OV2640引脚分布图

具体引脚功能及描述如表1.1 OV2640引脚功能表所示。

表1.1 OV2640引脚功能表

引脚名称

引脚类型

功能

SIO_C

输入

SCCB总线的时钟线,类比IIC的SCL

SIO_D

I/O

SCCB总线的数据线,类比IIC的SDA

RESETB

输入

系统复位管脚,低电平有效

PWDN

输入

掉电/省电模式,高电平有效

HREF

输出

行同步信号

VSYNC

输出

帧同步信号

PLCK

输出

像素时钟信号,一个PCLK时钟,输出一个(或半个)像素

XVCLK

输入

外部时钟输入端口,可接外部晶振

Y[9:0]

输出

像素数据输出端口

如图1.4 OV2640功能框图所示,共分为四个部分:

  1. 控制寄存器

标号①处是OV2640的控制寄存器,它根据这些寄存器配置的参数来运行,而这些参数是由外部控制器通过SIO_C和SIO_D引脚写入的,SIO_C与SIO_D通讯协议跟I2C十分类似。SCCB接口控制图像传感器芯片的运行。OV2640自带了一个8位微处理器,该处理器有512字节SRAM,4KB的ROM,具有细调图像质量的功能。

2. 通信、控制信号及时钟

标号②处包含了OV2640的通信、控制信号及外部时钟,其中PCLK、HREF及VSYNC分别是像素同步时钟、行同步信号以及帧同步信号。RESETB引脚为低电平时,用于复位整个传感器芯片,PWDN用于控制芯片进入低功耗模式。注意最后的一个XCLK引脚,它跟PCLK是完全不同的,XCLK是用于驱动整个传感器芯片的时钟信号,是外部输入到OV2640的信号;而PCLK是OV2640输出数据时的同步时钟信号,它是由OV2640输出的信号。XCLK可以外接晶振或由外部控制器提供,若要类比XCLK之于OV2640就相当于HSE(高速外部时钟信号)时钟输入引脚与STM32芯片的关系,PCLK引脚可类比STM32的I2C外设的SCL引脚。

3. 感光阵列

标号③是感光矩阵,光信号在这里转化为电信号,经过各种处理,这些信号存储成一个个像素点表示的数字图像。OV2640总共有1632*1232个像素,但最大输出尺寸为UXGA(1600*1200),即200W像素。

4. 数据输出信号

标号④处包含了DSP处理单元,它会控制寄存器的配置做一些基本的图像处理运算:颜色空间转换(原始信号到RGB或者YUV/YCbYCr)、边缘锐化、降噪等。压缩引擎将原始的数据流压缩成JPEG数据输出。OV2640有一个10位数字视频接口,其MSB和LSB可以程序设置先后顺序,默认只使用了Y2-Y9引脚,如图1.5 数据位连接示例。

图1.4 OV2640功能框图

图1.5 数据位连接示例

4. SCCB协议

外部控制器对OV2640寄存器的配置参数是通过SCCB总线传输过去的,而SCCB总线跟I2C十分类似,所以在STM32驱动中我们直接使用片上I2C外设与它通讯。SCCB与标准的I2C协议的区别是它每次传输只能写入或读取一个字节的数据,而I2C协议是支持突发读写的,即在一次传输中可以写入多个字节的数据(EEPROM中的页写入时序即突发写)。

(1)SCCB起始、停止信号及数据有效性

SCCB的起始信号、停止信号及数据有效性与I2C完全一样,如图1.6 SCCB起始信号,在SIO_C为高电平时,SIO_D出现一个下降沿,则SCCB开始传输。如图1.7停止信号,在SIO_C为高电平时,SIO_D出现一个上升沿,则SCCB停止传输。

                      

图1.6 SCCB起始信号                                                  图1.7 SCCB停止信号

如图1.8 SCCB的数据有效性,除了开始和停止状态,在数据传输过程中,当SIO_C为高电平时,必须保证SIO_D上的数据稳定,也就是说,SIO_D上的电平变换只能发生在SIO_C为低电平的时候,SIO_D的信号在SIO_C为高电平时被采集。

图1.8 SCCB的数据有效性

(3)SCCB数据读写过程

在SCCB协议中定义的读写操作与I2C也是一样的,只是换了一种说法。它定义了两种写操作,即三步写操作和两步写操作。三步写操作可向从设备的一个目的寄存器中写入数据,如图1.9 SCCB三步写操作所示。在三步写操作中,第一阶段发送从设备的ID地址+W标志(等于I2C的设备地址:7位设备地址+读写方向标志),第二阶段发送从设备目标寄存器的8位地址,第三阶段发送要写入寄存器的8位数据。图中的"X"数据位可写入1或0,对通讯无影响。

图1.9 SCCB三步写操作

而两步写操作没有第三阶段,即只向从器件传输了设备ID+W标志和目的寄存器的地址,如图1.10 SCCB的两步写操作。两步写操作是用来配合后面的读寄存器数据操作的,它与读操作一起使用,实现I2C的复合过程。

图1.10 SCCB两步写操作

两步读操作,它用于读取从设备目的寄存器中的数据,如图1.11 SCCB的两步读操作。在第一阶段中发送从设备的设备ID+R标志(设备地址+读方向标志)和自由位,在第二阶段中读取寄存器中的8位数据和写NA 位(非应答信号)。由于两步读操作没有确定目的寄存器的地址,所以在读操作前,必需有一个两步写操作,以提供读操作中的寄存器地址。

图1.11 SCCB两步读操作

可以看到,以上介绍的SCCB特性都与I2C无区别,而I2C比SCCB还多出了突发读写的功能,所以SCCB可以看作是I2C的子集,我们完全可以使用STM32的I2C外设来与OV2640进行SCCB通讯。

STM32 F4 OV2640摄像头学习笔记(一)相关推荐

  1. STM32 F4 OV2640摄像头学习笔记(三)

    四.DCMI(Digital camera interface)接口 功能描述 STM32F4 自带了一个数字摄像头(DCMI)接口,该接口是一个同步并行接口,能够接收外部8位.10位.12位或14位 ...

  2. STM32 F4 OV2640摄像头学习笔记(二)

    二.OV2640数据读取过程 OV2640模块初始化 初始化IO口 上电并复位 读取传感器ID 执行初始化序列 完成初始化 2. OV2640数据读取 如图2.1 OV2640行输出时序图所示,OV2 ...

  3. 【STM32】OV2640摄像头学习笔记 转

    [STM32]OV2640摄像头学习笔记 2019年03月03日 13:01:35 淹死的大白鲨 阅读数 4736更多 分类专栏: [STM32] 版权声明:本文为博主原创文章,遵循 CC 4.0 B ...

  4. 【STM32】OV2640摄像头学习笔记

    目录: 一.OV2640 Camera 二.读取OV2640模块图像数据过程: 三.DCMI(Digital camera interface)接口 四.SCCB协议 1.起始信号 2.停止信号 五. ...

  5. STM32 LCD中英文字符显示学习笔记

    本实验基于STM32 LCD英文字符显示学习笔记. 开发板:野火指南者(STM32F103VE) STM32库版本:STM32F10x_StdPeriph_Lib_V3.5.0 IDE:KEIL5(代 ...

  6. STM32 CAN总线通信学习笔记(一)

    STM32 CAN总线通信学习笔记(一) 一.CAN总线简介 CAN 是控制器局域网络(Controller Area Network, CAN)的简称.CAN采用数据块编码的方式,数据块根据帧的类型 ...

  7. STM32 CAN通信的学习笔记总结(从小白开始)

       知识来源于互联网,回馈于互联网!   目录 1. 总体概述 1.1 基本概念 1.2 通讯方式 1.3 为什么使用CAN? 1.4 CAN的协议及组成 2. 上帝视角看CAN的通讯过程 2.1 ...

  8. STM32 HAL库开发学习笔记: USART1串口通讯(中断方式) IDE-STM32CubeIDE

    STM32串口通讯有三种方式,分别为阻塞(轮询).中断.DMA.这里将用中断的方式开发. 笔者也是刚入门STM32 HAL库开发,该笔记致希望于能帮到初学者,文中配置步骤.代码.实验现象均是笔者实践可 ...

  9. STM32的map文件学习笔记

    前言 前几个月针对公司自己的芯片写了个程序,这个程序有个硬性要求,就是能用的FLASH空间只有4KB,之前已经写得差不多了,最终占用空间3.6KB. 这不,最近又得加需求,还剩一点点FLASH空间可以 ...

最新文章

  1. springboot在centos下安装环境+部署war包
  2. 面向动态环境基于点的语义SLAM系统
  3. [C++再学习系列] 引用和指针
  4. 链表排序(C语言)选择排序
  5. Hibernate插入错误:GenericJDBCException: could not insert:
  6. 国产数据库占央采九成份额
  7. [C++11]对模板右尖括号的优化
  8. 【MyBatis框架】mapper配置文件-foreach标签
  9. PropertyChangeSupport的使用
  10. Selenium自动化测试-3.元素定位(1)
  11. 我的世界javamod怎么装_你不装绞盘,怎么在越野圈混?
  12. 2020,ToB 生态全景解读
  13. 知识驱动的主动式开放域对话系统 by 车万翔 2020/4/11
  14. 如何设置PPT里的表格行高等高
  15. torch.optim的一些方法
  16. 计算机键盘标注,电脑键盘上怎么打√和×
  17. amcharts学习
  18. 安卓手机如何更改开机 关机 动画
  19. java rar_java如何解压rar文件
  20. 我的天,《扶摇》的海报也太好看了吧

热门文章

  1. 2022年熔化焊接与热切割考题及模拟考试
  2. 数字孪生智能造船大型起重机械管理研究案例
  3. .NET常见线程简介(翻译)
  4. 使用Coded UI进行UI的自动化测试
  5. 【linux】查看Linux系统版本信息的几种方法
  6. PLC 西门子smart200 锁机 最新原创有图片证明配对应西门子smart700IE V3程序,分期期付款 动态验证码
  7. c++从入门到精通——虚函数与纯虚函数
  8. 韩国将迎来了第二家苹果商店Apple Store
  9. springMVC上传图片并压缩
  10. Echarts 自动切换选中状态