zoukankan      html  css  js  c++  java
  • ov5640介绍

    1 摄像头

    在各类信息中,图像含有最丰富的信息,作为机器视觉领域的核心部件,摄像头被广泛地应用在安防、探险以及车牌检测等场合。摄像头按输出信号的类型来看可以分为数字摄像头和模拟摄像头,按照摄像头图像传感器材料构成来看可以分为CCDCMOS。现在智能手机的摄像头绝大部分都是CMOS类型的数字摄像头。

    1.1 数字摄像头跟模拟摄像头区别

        输出信号类型

    数字摄像头输出信号为数字信号,模拟摄像头输出信号为标准的模拟信号。

        接口类型

    数字摄像头有USB接口(比如常见的PC端免驱摄像头)IEE1394火线接口(由苹果公司领导的开发联盟开发的一种高速度传送接口,数据传输率高达800Mbps)、千兆网接口(网络摄像头)。模拟摄像头多采用AV视频端子(信号线+地线)或S-VIDEO(即莲花头--SUPER VIDEO,是一种五芯的接口,由两路视频亮度信号、两路视频色度信号和一路公共屏蔽地线共五条芯线组成)。

        分辨率

    模拟摄像头的感光器件,其像素指标一般维持在752(H)*582(V)左右的水平,像素数一般情况下维持在41万左右。现在的数字摄像头分辨率一般从数十万到数千万。但这并不能说明数字摄像头的成像分辨率就比模拟摄像头的高,原因在于模拟摄像头输出的是模拟视频信号,一般直接输入至电视或监视器,其感光器件的分辨率与电视信号的扫描数呈一定的换算关系,图像的显示介质已经确定,因此模拟摄像头的感光器件分辨率不是不能做高,而是依据于实际情况没必要做这么高。

    1.2 CCD与CMOS的区别

    摄像头的图像传感器CCDCMOS传感器主要区别如下:

        成像材料

    CCDCMOS的名称跟它们成像使用的材料有关,CCD"电荷耦合器件"(Charge Coupled Device)的简称,而CMOS"互补金属氧化物半导体"(Complementary Metal Oxide Semiconductor)的简称。

        功耗

    由于CCD的像素由MOS电容构成,读取电荷信号时需使用电压相当大(至少12V)的二相或三相或四相时序脉冲信号,才能有效地传输电荷。因此CCD的取像系统除了要有多个电源外,其外设电路也会消耗相当大的功率。有的CCD取像系统需消耗2~5W的功率。而CMOS光电传感器件只需使用一个单电源5V3V,耗电量非常小,仅为CCD1/8~1/10,有的CMOS取像系统只消耗20~50mW的功率。

        成像质量

    CCD传感器件制作技术起步早,技术成熟,采用PN结或二氧化硅(sio2)隔离层隔离噪声,所以噪声低,成像质量好。与CCD相比,CMOS的主要缺点是噪声高及灵敏度低,不过现在随着CMOS电路消噪技术的不断发展,为生产高密度优质的CMOS传感器件提供了良好的条件,现在的CMOS传感器已经占领了大部分的市场,主流的单反相机、智能手机都已普遍采用CMOS传感器。

    2 OV5640摄像头

    本章主要讲解实验板配套的摄像头,它的实物见图 461,该摄像头主要由镜头、图像传感器、板载电路及下方的信号引脚组成。

    461 实验板配套的OV5640摄像头

    镜头部件包含一个镜头座和一个可旋转调节距离的凸透镜,通过旋转可以调节焦距,正常使用时,镜头座覆盖在电路板上遮光,光线只能经过镜头传输到正中央的图像传感器,它采集光线信号,然后把采集得的数据通过下方的信号引脚输出数据到外部器件。

    2.1 OV5640传感器简介

    图像传感器是摄像头的核心部件,上述摄像头中的图像传感器是一款型号为OV5640CMOS类型数字图像传感器。该传感器支持输出最大为500万像素的图像 (2592x1944分辨率),支持使用VGA时序输出图像数据,输出图像的数据格式支持YUV(422/420)YCbCr422RGB565以及JPEG格式,若直接输出JPEG格式的图像时可大大减少数据量,方便网络传输。它还可以对采集得的图像进行补偿,支持伽玛曲线、白平衡、饱和度、色度等基础处理。根据不同的分辨率配置,传感器输出图像数据的帧率从15-60帧可调,工作时功率在150mW-200mW之间。

    2.2 OV5640引脚及功能框图

    OV5640模组带有自动对焦功能,引脚的定义见图 462

    462 OV5640传感器引脚分布图

    信号引脚功能介绍如下,介绍如下表 461

    461 OV5640管脚

    管脚名称

    管脚类型

    管脚描述

    SIO_C

    输入

    SCCB总线的时钟线,可类比I2CSCL

    SIO_D

    I/O

    SCCB总线的数据线,可类比I2CSDA

    RESET

    输入

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

    PWDN

    输入

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

    HREF

    输出

    行同步信号

    VSYNC

    输出

    帧同步信号

    PCLK

    输出

    像素同步时钟输出信号

    XCLK

    输入

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

    Y2Y9

    输出

    像素数据输出端口

    下面我们配合图 463中的OV5640功能框图讲解这些信号引脚。

    463 OV5640功能框图

    (5)    控制寄存器

    标号处的是OV5640的控制寄存器,它根据这些寄存器配置的参数来运行,而这些参数是由外部控制器通过SIO_CSIO_D引脚写入的,SIO_CSIO_D使用的通讯协议跟I2C十分类似,在STM32中我们完全可以直接用I2C硬件外设来控制。

    (6)    通信、控制信号及时钟

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

    (7)    感光矩阵

    标号ƒ处的是感光矩阵,光信号在这里转化成电信号,经过各种处理,这些信号存储成由一个个像素点表示的数字图像。

    (8)    数据输出信号

    标号„处包含了DSP处理单元,它会根据控制寄存器的配置做一些基本的图像处理运算。这部分还包含了图像格式转换单元及压缩单元,转换出的数据最终通过Y0-Y9引脚输出,一般来说我们使用8根据数据线来传输,这时仅使用Y2-Y9引脚,OV5640与外部器件的连接方式见图 464

    464     8位数据线接法

    (9)    数据输出信号

    标号⑤处为VCM处理单元,他会通过图像分析来实现图像的自动对焦功能。要实现自动对焦还需要下载自动对焦固件到模组,后面摄像头实验详细介绍这个功能。

    46.2.3 SCCB时序

    外部控制器对OV5640寄存器的配置参数是通过SCCB总线传输过去的,而SCCB总线跟I2C十分类似,所以在STM32驱动中我们直接使用片上I2C外设与它通讯。SCCB与标准的I2C协议的区别是它每次传输只能写入或读取一个字节的数据,而I2C协议是支持突发读写的,即在一次传输中可以写入多个字节的数据(EEPROM中的页写入时序即突发写)。关于SCCB协议的完整内容可查看配套资料里的《SCCB协议》文档,下面我们简单介绍下。

    SCCB的起始、停止信号及数据有效性

    SCCB的起始信号、停止信号及数据有效性与I2C完全一样,见图 465及图 466

        起始信号:在SIO_C为高电平时,SIO_D出现一个下降沿,则SCCB开始传输。

        停止信号:在SIO_C为高电平时,SIO_D出现一个上升沿,则SCCB停止传输。

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

    465 SCCB停止信号

    466 SCCB的数据有效性

    SCCB数据读写过程

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

    467 SCCB的三步写操作

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

    468 SCCB的两步写操作

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

    469 SCCB的两步读操作

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

    46.2.4 OV5640的寄存器

    控制OV5640涉及到它很多的寄存器,可直接查询《ov5640datasheet》了解,通过这些寄存器的配置,可以控制它输出图像的分辨率大小、图像格式及图像方向等。要注意的是OV5640寄存器地址为16位。

    官方还提供了一个《OV5640_自动对焦照相模组应用指南(DVP_接口)__R2.13C.pdf》的文档,它针对不同的配置需求,提供了配置范例,见图 4610。其中write_SCCB是一个利用SCCB向寄存器写入数据的函数,第一个参数为要写入的寄存器的地址,第二个参数为要写入的内容。

    4610 调节帧率的寄存器配置范例

    46.2.5 像素数据输出时序

    OV5640采用SCCB协议进行控制,而它输出图像时则使用VGA时序(还可用SVGAUXGA,这些时序都差不多),这跟控制液晶屏输入图像时很类似。OV5640输出图像时,一帧帧地输出,在帧内的数据一般从左到右,从上到下,一个像素一个像素地输出(也可通过寄存器修改方向),见图 4611

    4611 摄像头数据输出

    例如,图 4612,若我们使用Y2-Y9数据线,图像格式设置为RGB565,进行数据输出时,Y2-Y9数据线会在1个像素同步时钟PCLK的驱动下发送1字节的数据信号,所以2PCLK时钟可发送1RGB565格式的像素数据。像素数据依次传输,每传输完一行数据时,行同步信号HREF会输出一个电平跳变信号,每传输完一帧图像时,VSYNC会输出一个电平跳变信号。

    4612 DVP接口时序

  • 相关阅读:
    Benelux Algorithm Programming Contest 2016 Preliminary K. Translators’ Dinner(思路)
    Benelux Algorithm Programming Contest 2016 Preliminary Target Practice
    Benelux Algorithm Programming Contest 2016 Preliminary I. Rock Band
    Benelux Algorithm Programming Contest 2016 Preliminary A. Block Game
    ICPC Northeastern European Regional Contest 2019 Apprentice Learning Trajectory
    ICPC Northeastern European Regional Contest 2019 Key Storage
    2018 ACM ICPC Asia Regional
    2018 ACM ICPC Asia Regional
    Mybatis入库出现异常后,如何捕捉异常
    优雅停止 SpringBoot 服务,拒绝 kill -9 暴力停止
  • 原文地址:https://www.cnblogs.com/xuexizhe/p/8710063.html
Copyright © 2011-2022 走看看