stm32

您所在的位置:网站首页 kingfisher摄像头ID号是什么开头的 stm32

stm32

2024-07-14 22:42| 来源: 网络整理| 查看: 265

第一次写文章,有什么不对的地方,还望各位多多指出-

学习知识内容: *** 摄像头原理+OV7670开发手册 * IIC通信(软件) * OV7670初始化程序和获取图像程序 * lcd液晶初始化程序 * 主函数编写** 整体开发流程:

在这里插入图片描述

一.摄像头成像,组成原理

本次摄像头原理参考好文章:https://blog.csdn.net/qq_40732350/article/details/88541417

摄像头的设计与人的眼睛成像原理一致 在这里插入图片描述

camera的成像框架

在这里插入图片描述 景物通过凸镜头反射聚焦到感光片(CCD/CMOS:图像传感器)中,感光片产生电荷传导自ADC进行数模信号转换,形成RAW颜色数据,经过ISP图像处理算法(变成RGB,YUV常见的像素颜色格式)储存到相应的储存其中,在让CPU读取显示到相应的显示设备中

二. 摄像头基本结构

摄像头结构组成: Lens:镜头,负责成像和对焦 Holder:基座,负责固定镜头 IR:红外滤波片,负责过滤红外光(滤除人不可见的波) Sensor:图像传感器,负责将图像转换电信号 PCB:印刷电路板,负责供电控制及信号传输 FPC:可绕性印刷电路板,负责接口 马达:用来改变像距

三.介绍几个摄像头核心

图像传感器CCD,CMOS

CCD就像传统相机的底片一样的感光系统,是感应光线的电路装置,你可以将它想象成一颗颗微小的感应粒子,铺满在光学镜头后方,当光线与图像从镜头透过、投射到CCD表面产生电流,将感应到的内容转换成数码资料储存起来。CCD像素数目越多、单一像素尺寸越大,收集到的图像就会越清晰 CCD:好用,图像更清晰,公益复杂,贵 CMOS:便宜,简单,图像质量较差 在这里插入图片描述 电荷耦合器件(CCD)原理简单。我们可以把它想象成一个没有盖子的记忆芯片。撞击记忆单元的光子在这些单元中产生电子(光电效应),因此光子的数目与电子的数目互成比例(光的明暗)。然而光子的波长(颜色)并没有被转换为电子。换言之,CCD 裸芯片实际上没有把色彩信息转换为任何形式的电信号。拍摄出来的照片是黑白的!(那为啥能得到彩色数据?)

大多数相机的方案:拜尔滤光片(马赛克滤波片)+单CCD+算法插值(ISP运算)。 拜尔滤光片使每个像素只能产生红、绿或蓝三色当中一种颜色的值。但是在输出时,由相机处理单元执行空间色彩插值法,使每个像素均包含三基色的成分。

拜尔滤光片原理 在这里插入图片描述在这里插入图片描述 拜尔滤光片使每个像素只能产生红、绿或蓝三色当中一种颜色的值

在这里插入图片描述通过拜尔滤光片的值为: 在这里插入图片描述 由于人对红色光不敏感,对绿色光敏感,所以拜尔滤光片的色彩比为:红:绿:蓝 = 1:2:1 所以为了得到真实色彩值,红和蓝的算法一样,和绿不一样。

ISP图像处理算法 原始的数据图像经过ISP颜色差算法,算出正确的颜色数据(RGB为一个字,所以ISP中有数据格式的转变, RAW->RGB,YUV)

在这里插入图片描述

二.OV7670摄像头模块 -《PZ-0V7670 摄像头模块开发手册》 使用的设备:普中STM32F103学习版与之配套的OV7670摄像头,lcd液晶屏和原理图资料

内容: 1 OV7670 介绍 2 硬件设计 3 软件设计 4 实验现象

OV7670 简单简介(更多信息查看相应的开发手册) 通过 SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分 辨率 8 位影像数据。该产品 VGA 图像最高达到 30 帧/秒。用户可以完全控制 图像质量、数据格式和传输方式。

在这里插入图片描述 描述的是 OV7670/OV7171 图像传感器的功能模块,包括:****(加粗为比较重要的模块**)**

●感光阵列(Image Array)(共有 656x488 个像素,其中在 YUV 的模式中,有效像素为 640x480 个)(cmos) ●模拟信号处理理( Analog Processing) ●A/D 转换 ●测试图案发生器器( Test Pattern Generator) ●数字信号处理器(DSP) ●图像缩放( Image Scaler) ●时序发生器( Video Timing Generator)内部信号发生器和分布、帧率时序、自动曝光控制、输出外部时序( VSYNC、HREF/HSYNC 和 PCLK)。 ●数字视频端口( Digital Video Port) ●SCCB 接口 ●LED 和闪光灯输出控制 Note1: DSP(镜头校正、去噪声、黑白点补偿、自动白平衡等)配置文档-《OV7670 Software Application Note》*

像素输出格式: VGA,即分辨率为 640480 的输出模式; **QVGA,即分辨率为 320240 的输出格式,也就是本手册我们需要用到的格 式;** QQVGA,即分辨率为 160*120 的输出格式;

数据输出时序 PCLK,即像素时钟,一个 PCLK 时钟,输出一个像素(或半个像素,高字节+低字节)。 VSYNC,即帧同步信号。 HREF /HSYNC,即行同步信号(有效时,数据才被穿走或者写入) OV7670 的图像数据输出(通过 D[7:0])就是在 PCLK, VSYNC 和 HREF/ HSYNC 的控制下进行的(一个高电平开始写数据,再次高电平时写数据完成)。首先看看行输出时序,如图所示: 在这里插入图片描述 对外输出时序 在这里插入图片描述 因为 OV7670 的像素时钟( PCLK)最高可达 24Mhz,我们用 STM32F103ZET6 的 IO 口直接抓取,是非常困难的,也十分占耗 CPU(可以通过降低 PCLK 输出 频率,来实现 IO 口抓取,但是不推荐这样操作)。所以,我们并不是采取直接 抓取来自 OV7670 的数据,而是通过 FIFO 读取,PZ-OV7670 摄像头模块自带了 一个 FIFO 芯片,用于暂存图像数据,有了这个芯片,我们就可以很方便的获取 图像数据了

对外引脚描述 在这里插入图片描述 (1)如何存储图像数据。 PZ-OV7670 摄像头模块存储图像数据的过程为:等待 OV7670 同步信号→ FIFO 写指针复位→FIFO 写使能→等待第二个 OV7670 同步信号→FIFO 写禁 止。通过以上 5 个步骤,我们就完成了 1 帧图像数据的存储。 (2)如何读取图像数据。 在存储完一帧图像以后,我们就可以开始读取图像数据了。读取过程为: FIFO 读指针复位→给 FIFO 读时钟( FIFO_RCLK)→读取第一个像素高字节→ 给 FIFO 读时钟→读取第一个像素低字节→给 FIFO 读时钟→读取第二个像素 高字节→循环读取剩余像素→结束。

方法:中断检测同步帧跳变,第一次跳变:数据可以开始写入FIFO了,第二次跳变,数据写入完成可开始读取

硬件接口 在这里插入图片描述 OV的大量寄存器在文档:《OV7670高级数据手册》

程序可改进:SCCB通信方式用硬件,或者库函数编写 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3