OV7725摄像头之OV7725芯片

article/2025/9/13 22:10:12

近日入手了一块正点原子家的OV7725摄像头模块,秉着小白尽可能学得透彻些的想法,选择了野火家的相同摄像头教学视频。链接如下:【单片机】野火STM32F103教学视频 (配套霸道/指南者/MINI)【全】(刘火良老师出品) (无字幕)_哔哩哔哩_bilibili

现对PPT和火哥所授内容进行整理:

在各类传感器获取信息中,图像包含有最丰富的信息。但是摄像头模块仅用于获取输出图像,像利用摄像头进行人脸识别,图像识别之类功能,主要是依赖于识别算法,这是另外的技术。

分类:

摄像头按输出信号分类可分为模拟摄像头数字摄像头,而数字摄像头又可以根据图像传感器材料分为CCDCMOS两类。

接口类型:

数字摄像头有USB接口IEE1394火线接口千兆网接口。输出数字信号。

模拟摄像头多采用AV视频端子S-VIDEO。输出标准的模拟信号。

分辨率:

现在的数字摄像头分辨率一般从数十万到上千万;模拟摄像头的分辨率维持在41万左右,但由于输出的是模拟量,可以直接输入至电视或监视器,所以依据实际情况可以但没必要做那么高。

成像材料:

CCD是“电荷耦合器件”(Charge Coupled Device)的简称;

CMOS是“互补金属氧化物半导体”(Complementary Metal Oxide Semiconductor)的简称。

功耗:

CCD取像系统除了要多个电源外,其外设电路也会消耗相当大的功率。有的需要2~5W的功率;

CMOS光电传感器耗电量非常小,仅为CCD的1/8~1/10,有的只消耗20~50mW的功率。

现在主流的单反相机、智能手机都已普遍采用CMOS传感器。

OV7725摄像头
        镜头部件包含一个镜头座和一个可旋转调节距离的凸透镜,通过旋转可以调节焦距,正常使用时,镜头座覆盖在电路板上遮光,光线只能经过镜头传输到正中央的图像传感器,它采集光线信号,采集得的数据被缓存到摄像头背面的FIFO缓存中,然后外部器件通过下方的信号引脚获取拍摄得到的图像数据。若拆开摄像头座,在摄像头的正下方可看到PCB板上的一个方形器件,它是摄像头的核心部件,型号为OV7725的CMOS类型数字图像传感器。(勿触碰到,会影响成像质量)该传感器支持输出最大为30万像素的图像(640x480分辨率),它的体积小,工作电压低,支持使用VGA时序输出图像数据,输出图像的数据格式支持YUV(422/420)、YCbCr422以及RGB565格式。它还可以对采集得的图像进行补偿,支持伽玛曲线、白平衡、饱和度、色度等基础处理。

OV7725引脚图

OV7725传感器采用BGA封装(引脚在背面),引脚的分布如下:

 图中的非彩色部分是电源相关的引脚,彩色部分是主要的信号引脚;

管脚名称管脚类型管脚描述
RSTB输入系统复位管脚,低电平有效
PWDN输入掉电/省电模式(高电平有效)
HREF输出行同步信号
VSYNC输出场同步信号
PCLK输出像素时钟
XCLK输入系统时钟输入端口
SCL输入SCCB总线的时钟线
SDAI/OSCCB总线的数据线
D0...D9输出像素数据端口

所谓的SCCB总线,跟IIC基本一致(实际上SCCB总线也支持突发读写,所以可以说完全一致);

D0~D9,一般只取8根用来在VGA时序下每个时钟输出一个字节;

VGA时序输出:由HREF、VSYNC、PCLK和D0~D9数据线共同组成;

XCLK:系统时钟输入接口,摄像头内部自带有一个晶振。

OV7725功能框图

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

关于寄存器配置——于OV7725_datasheet文档中的Register Set(寄存器组)部分。最重要的是COM7寄存器,可负责配置输出分辨率等。

野火家将配置分辨率过程封装成了一个函数,可通过修改函数配置方便地修改分辨率。而且,生产OV7725的公司对寄存器组的文档描述并不完善,野火对寄存器的配置也都是部分来自网上流传、部分来自厂家。如果自己修改了某个寄存器的配置,可能会影响很大,但是并未在文档中记录。

所以建议如果不是特别感兴趣,没有必要去看寄存器组部分文档。

文档 OV7725 Software Application 也提供了许多寄存器的配置。后面讲解火哥不会介绍为什么往某个寄存器写入某个值,想探究的话自己找对应寄存器的描述(虽然可能找不到)自行理解。

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

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

数据输出信号——标号④处包含了DSP处理单元,它会根据控制寄存器的配置做一些基本的图像处理运算(如白平衡、色度、饱和度等等)。这部分还包含了图像格式转换单元及压缩单元,转换出的数据最终通过 DO-D9引脚输出,一般来说我们使用8根据数据线来传输,这时仅使用D2-D9引脚。④区的FIFO是芯片内部的,相当于stm32的SARM芯片,用于缓存一些东西。而整个OV7725芯片还外接了一个FIFO缓存芯片。两者不同。

SCCB时序——外部控制器对OV7725寄存器的配置参数是通过SCCB总线传输过去的,而SCCB总线跟I2C十分类似(基本一致),所以在STM32驱动中可直接使用片上I2C外设与它通讯。

SCCB的三步写操作 “发设备地址”—>“发寄存器地址”—>“发数据” 与I2C的写操作一样;

SCCB的两步写操作和两步读操作配合使用 “发设备地址”—>“发寄存器地址”—>“再次发送设备地址”—>“读数据” 与I2C的读操作一样。

像素输出时序——主控制器控制OV7725时采用SCCB协议读写其寄存器,而它输出图像时则用VGA或QVGA时序,其中VGA在输出图像分辨率为480*640时采用,QVGA是Quarter(四分之一) VGA,其输出分辨率为240*320,这些时序跟控制液晶屏输出图像数据时十分类似。且QVGA的输出分辨率刚好与4.3寸的TFTLCD屏分辨率一致,故在实验中采用QVGA时序输出像素。后面的时序讲解也为QVGA时序。

(像素输出不用SCCB是因为SCCB只有一根数据线,输出太慢。用D0~D9作为数据线会快得多)

OV7725输出图像时,一帧帧地输出,在帧内的数据一般从左往右,从上到下,一个像素一个像素地输出(也可通过寄存器修改方向)。

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

 

 理解时序图:

        HREF为低电平的时候,传输的电平无效,只有HREF为高电平时才有效。用D2~D9传输数据,每个像素同步时钟PCLK传输一个字节数据。所以根据RGB565(5+6+5=16bit=2byte),两个PCLK时钟能够传输一个像素点。

        PCLK由低变高时,D2~D9传输数据;PCLK由高变低时,D2~D9可以改变将要传输的数据。

        HREF用于控制(外接)FIFO,可以用来指示哪些信息是有效的。因为PCLK是一直不停跑的,所以D2~D9数据线中的数据也一直被发出。那么外部的控制器如何判断这些电平是否有效呢?总不可以全部数据都接收吧!因为数据无效期间HREF处于低电平,这样外部控制器可以在读取数据前先判断HREF是否为高电平,不是的话就不接收数据。

OV7725帧时序

每传输完一行数据时,行同步信号HREF会输出一个电平跳变信号,240*320的话,传输一帧图像数据,HREF会进行240次跳变。

每传输完一帧图像时,VSYNC会输出一个电平跳变信号。VSYNC在低电平时有效。


http://chatgpt.dhexx.cn/article/YYF86yrE.shtml

相关文章

二进制加法运算

两个二进制整数相加时,是位对位处理的,从最低的一对位(右边)开始,依序将每一对位进行加法运算。两个二进制数字相加,有四种结果,如下所示: 0 0 00 1 11 0 1 1 1 10 1 与 1 …

二进制加减法编程

1、二进制加法基本指令 (1)ADD指令 格式:ADD DST,SRC 该指令把源操作数(SRC)指向的数据与目的操作数(DST)相加后,将结果放到目的操作数(DST)中…

二进制乘除法运算原理

二进制乘除法原理 计算机所能完成的最基本操作是加减法和左右移。 虽然ISA中一般都有MUL类指令,但是这些经过译码之后最终的元操作还是加法和移位指令。 二进制乘法 假设不能使用乘除运算求ab的结果,当ab123时,最直接的方法是通过88个88相…

二进制加法计算

读计算机原理这本书的的时候涉及到二进制数的加法,个人做个直观的记录,防止遗忘。 计算时,先把两个二进制数对齐(如同十进制一样, 从右向左)11为10,此时向上一位进1,0写在本位(如同十…

二进制加减乘除

最重要的,理解十进制的借位和进位.十进制中,由于一个循环是10,所以借1位,就相当于从高位借过来10,也就是常说的借1当10,同时,高位需要减去10(外在体现上是减去1,因为高位已经在高位了).反过来,进1,就等于高位加上10,但因为高位已经在高位了,所以去掉位数考虑,高位实际是加1,也就…

二进制加法

计算机中二进制相关运算 有符号二进制与无符号二进制数之间的区别有符号二进制加法运算讨论关于有符号二进制数算术的溢出问题(重点)无符号二进制运算 有符号二进制与无符号二进制数之间的区别 对于一个有符号二进制数来讲,最高位是该数的符…

二进制加减法计算

二进制加减法:原码、反码、补码 1.十进制下的计算1.模数2.补数 2.二进制数的存储1.计算机计数2.原码3.反码4.补码 3.二进制计算1.中位对称2.循环进位3.二进制减法推算4.结论 1.十进制下的计算 1.模数 假设下文【模】定义如下:某个可度量系统的度量范围…

二进制数的运算方法

1.二进制数的算术运算 二进制数的算术运算包括:加、减、乘、除四则运算,下面分别予以介绍。 (1)二进制数的加法 根据“逢二进一”规则,二进制数加法的法则为:0+0=00&…

简单计算二进制的加减法

二进制就是计算机技术中广泛采用的一种数制,由(0,1)组成。你可以广泛的认为,每一个 0,1 都(存储在)对应着一个比特位(bit),而由这些由例如:010010…

二进制的加减乘除法全了看一下叭

看这里~ 前言一、二进制加法二、二进制减法三、二进制乘法四、二进制除法总结 前言 最近在学习通信网络中的CRC算法,所以积累一下二进制的各种算法,如果对您有用,记得点个赞喔!谢谢啦。 一、二进制加法 对于二进制加法和十进制的…

二进制加,减法,23个位运算技巧

二进制加,减法 二进制最高位为1时表示负数,为0时表示正数。 **原码:**一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。 举例说明:       int类型的 …

二进制的加减法_二进制加减法

二进制的加减法 1)二进制加法 (1) Binary Addition) Since binary numbers consist of only two digits 0 and 1, so their addition is different from decimal addition. Addition of binary numbers can be done following certain rules: 由于二进制数仅由两位数字0和1组成…

补码二进制减法计算

二进制减法计算 -1 - 1 二进制表示为 -1 1 -2 补码1111 ... 1110 原码1000 ... 0010 如果是5 - 3 如果-12 如果Int_min - 1 127 此处是在Int的范围,所以在环内-1到了127 如果不在int范围中,在二进制中,结果就是-(int_min1)…

二进制减法图解

写在前面 二进制减法类似于十进制的减法,我们根据小学学过的十进制的减法来推出二进制减法如何进行运算。 十进制减法 例如74323-4756226761的运算。灰色部分为计算过程,绿色字为被减一得到的数,红色字为借一后得到的数。 在运算过程中&…

DenseNet简介

论文传送门:https://arxiv.org/pdf/1608.06993.pdf CNN模型的发展十分火热,自LeNet提出以来,涌现了一批优秀的CNN模型。 LeNet是CNN的开山之作,标志着CNN真正的提出。2012年AlexNet夺得ILSVRC2012的冠军,深度学习大火…

图像分类算法DenseNet论文解读

论文名称:Densely Connected Convolutional Networks 论文地址:https://arxiv.org/pdf/1608.06993.pdf 如果说ResNet扩展了网络的深度,GoogLeNet扩展了网络的宽度,那么DenseNet就是利用特征图的重用。 一、论文解读 1、DenseNet…

DenseNet论文笔记

DenseNet论文笔记 Densely Connected Convolutional Networks Introduction中引用了Deep networks with stochastic depth,提到了resnet里很多层都学不到东西,贡献很少可以随机丢掉,解释了InceptionV4里的Scaling of the Residuals操作,Ince…

DenseNet解析

1 前言 在计算机视觉领域,卷积神经网络(CNN)已经成为最主流的方法,比如最近的GoogLenet,VGG-19,Incepetion等模型。CNN史上的一个里程碑事件是ResNet模型的出现,ResNet可以训练出更深的CNN模型…

denseNet 详解

CNN网络架构演进:从LeNet到DenseNet - Madcola - 博客园 (cnblogs.com) 1、解决梯度消失问题 2、特征图相应变少

DenseNet详述

简介 从2012年AlexNet大展身手以来,卷积神经网络经历了(LeNet、)AlexNet、ZFNet、VGGNet、GoogLeNet(借鉴Network in Network)、ResNet、DenseNet的大致发展路线。其实,自从ResNet提出之后,Res…