FPGA 第2章 摄像头驱动讲解

这篇具有很好参考价值的文章主要介绍了FPGA 第2章 摄像头驱动讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考文献
图像采集——OV5640摄像头简介、硬件电路及上电控制的Verilog代码实现并进行modelsim仿真
https://blog.csdn.net/H19981118/article/details/115503184


前言

本文介绍OV5640摄像头相关知识。


一、OV5640简介

OV5640 是一款 1/4 英寸单芯片图像传感器,其感光阵列达到 25921944(即 500W 像素),能实现最
快 15fps QSXVGA(2592
1944)或者 90fps VGA(640*480)分辨率的图像采集。

传感器内部集成了图像处理的功能,包括自动曝光控制(AEC)、自动白平衡(AWB), 以及 自动聚焦控制(AFC)等功能。

传感器支持MIPI(移动产业处理器接口)输出接口和 DVP(数字视频并行)输出接口选择、ISP(图像信
号处理)。

二、功能框图

FPGA 第2章 摄像头驱动讲解,fpga开发
(1)
时序发生器(timing generator)控制着感光阵列(image array)、放大器(AMP)、AD转换。感光阵列将光信号转化成模拟信号,经过增益放大器之后进入 10 位 AD 转换器;AD 转换器将模拟信号转化成数字信号,并且经过 ISP 进行相关图像处理,最终输出所配置格式的 10位视频数据流。
(2)
时序发生器(timing generator)输出外部时序信号(VSYNC、HREF 和 PCLK),输入时钟 XVCLK 经过 PLL 锁相环后输出的时钟作为系统的控制时钟。
(3)
增益放大器控制以及 ISP 等都可以通过寄存器(registers)来配置,配置寄存器的接口就是SCCB 接口,该接口协议兼容 IIC 协议,不同的是,OV7725 是用 8 位(1 个字节)来表示寄存器地址,而 OV5640 是用 16 位(两个字节)表示寄存器地址。

三、传输协议

OV5640 SCCB 的写传输协议如下图所示:
FPGA 第2章 摄像头驱动讲解,fpga开发
ID ADDRESS 是由 7 位器件地址和 1 位读写控制位构成(0:写 1:读),OV5640 的器件地址为 7’h3c,所以在写传输协议中,ID Address(W)= 8’h78(器件地址左移 1 位,低位补 0)。

Sub-address(H)为高 8 位寄存器地址,Sub-address(L)为低 8 位寄存器地址,在 OV5640 众多寄存器中,有些寄存器是可改写的,有些是只读的,只有可改写的寄存器才能正确写入;Write Data 为 8 位写数据。

每一个寄存器地址对应 8 位的配置数据。在 OV5640 正常工作之前,必须先对传感器进行初始化,即通过配置寄存器使其工作在预期的工作模
式,以及得到较好画质的图像。这么多寄存器也并非都需要配置,很多寄存器可以采用默认的值。OV 公司提供了 OV5640 的软件应用手册,下表是本程序用到的关键寄存器的配置说明。

FPGA 第2章 摄像头驱动讲解,fpga开发

FPGA 第2章 摄像头驱动讲解,fpga开发

四、输出图像餐宿设置

介绍 OV5640 的 ISP 输入窗口设置、预缩放窗口设置、输出大小窗口设置

FPGA 第2章 摄像头驱动讲解,fpga开发
(1)
ISP 输入窗口设置(ISP Input Size)允许用户设置整个传感器显示区域(physical pixel size,2632x1951,其中 2592x1944 像素是有效的),开窗范围从 0*0~2632x1951 都可以任意设置。也就是上图中的 X_ADDR_ST(寄存器地址 0x3800、0x3801)、Y_ADDR_ST(寄存器地址 0x3802、0x3803)、
X_ADDR_END(寄存器地址 0x3804、0x3805)和 Y_ADDR_END(寄存器地址 0x3806、0x3807)寄存器。该窗口设置范围中的像素数据将进入 ISP 进行图像处理。
(2)
预缩放窗口设置(pre-scaling size)允许用户在 ISP 输入窗口的基础上进行裁剪,用于设置将进行缩放的窗口大小,该设置仅在 ISP 输入窗口内进行 X/Y 方向的偏移。可以通过 X_OFFSET(寄存器地址0x3810、0x3811)和 Y_OFFSET(寄存器地址 0x3812、0x3813)进行配置。
(3)
输出大小窗口设置(data output size)是在预缩放窗口的基础上,经过内部 DSP 进行缩放处理,并将处理后的数据输出给外部的图像窗口,图像窗口控制着最终的图像输出尺寸。可以通过 X_OUTPUT_SIZE(寄存器地址 0x3808、0x3809)和 Y_OUTPUT_SIZE(寄存器地址 0x380A、0x380B)进行配置。注意:
当输出大小窗口与预缩放窗口比例不一致时,图像将进行缩放处理(图像变形),仅当两者比例一致时,输出比例才是 1:1(正常图像)。
(4)
上图 的图像窗口设置中,右侧 data output size 区域,才是 OV5640 输出给外部的图像尺寸,也就是显示在显示器或者液晶屏上面的图像大小。输出大小窗口与预缩放窗口比例不一致时,会进行缩放处理,在显示器上面看到的图像将会变形。

五、输出像素格式

OV5640 支持多种不同的数据像素格式,包括 YUV(亮度参量和色度参量分开表示的像素格式)、RGB(其中 RGB 格式包含 RGB565、RGB555 等)以及 RAW(原始图像数据)通过寄存器地址 0x4300配置成不同的数据像素格式。

如果摄像头采集的图像最终要通过 LCD 显示,可以将 OV5640 摄像头输出的图像像素数据配置成RGB565 格式。将寄存器 0x4300 寄存器的 Bit[7:4]设置成 0x6 即可。OV5640支持调节 RGB565 输出格式中各颜色变量的顺序,对于我们常见的应用来说,一般是使用 RGB 或 BGR 序列。

我们可以将 OV5640 输出的 RGB565 的颜色顺序按照 RGB 的顺序输
出,将寄存器 0x4300 寄存器的Bit[3:0]设置成 0x1。

当外界环境光较暗时,传感器采集图像会受到较大影响,此时可以通过打开 LED 补光灯来弥补光照不足所带来的影响,就像手机在夜晚拍照时也会打开闪光灯来提高图像质量。通过配置寄存器0x3016=0x02,0x301c=0x02 来使能 LED 补光灯功能;配置寄存器 0x3019=0x02 打开闪光灯,0x3019=0x00关闭闪光灯。

六、图像输出时序

QSXGA,指:分辨率为 2592x1944 的输出格式,类似的还有:QXGA(2048x1536)、UXGA(1600x1200)、SXGA(1280x1024)、WXGA(1440x900)、WXGA(1280x800)、XGA(1024x768)、SVGA(800x600)、VGA(640x480)、QVGA(320x240)、QQVGA(160x120)等。
(1)
PCLK:像素时钟,一个 PCLK 时钟输出一个像素或者半个像素(像素数据的高 8 位或者低 8 位)。
(2)
VSYNC:帧同步信号。
(3)
HREF/HSYNC:行同步信号。
(4)
D[9:0]:像素数据,在 RGB565 格式中,只有高 8 位是有效的。
(5)
tPclk:一个时钟周期 。
tp:一个像素点的周期,在 RGB565 和 YUV422 输出格式下,tp=2*tPclk;Raw 输出格式下,tp=tPclk。
(6)
下图为 OV5640 输出图像数据的行时序图
FPGA 第2章 摄像头驱动讲解,fpga开发

从上图可以看出,传感器在 HREF 为高电平的时候输出图像数据,当 HREF 变高后,每一个 PCLK时钟,输出一个 8 位或者 10 位像素数据。比如我们采用 QSXGA 时序,RGB565 格式输出,tp=2tPclk,每 2 个字节组成一个像素的颜色,这样每行总共输出 25922 个 PCLK,也就是 25922 个字节。
(7)
帧时序(QSXGA 模式,分辨率 2592
1944),如下图所示:
FPGA 第2章 摄像头驱动讲解,fpga开发
由上图可知,VSYNC 的上升沿作为一帧的开始,高电平同步脉冲的时间为 5688tp,紧接着等待48276tp 时间后,HREF 开始拉高,此时输出有效数据;HREF 由 2592tp 个高电平和 252tp 个低电平构成;
最后一行图像数据输出完成之后等待 14544tp 时间,一帧数据传输结束。所以输出一帧图像的时间实际上是 tFrame = 5596992tp。

(2592 + 252)x1944+5688+48276+14544-252=5596992

这里到底像素时钟是多少,有分歧,但是可以知道的是:PCLK是 OV5640输出数据时的同步信号,它是由 OV5640 输出的信号。
而XCLK为工作时钟,可以外接晶振或由外部控制器提供。
但是如果真的需要手动计算像素时钟那么公式如下
因此这里对于DVP 640 * 480 * 30fps标准来说,像素时钟的求解方式 : 物理分辨率 * 帧率 = 784 * 510 * 30 = 12Mhz

七、硬件设计

FPGA 第2章 摄像头驱动讲解,fpga开发

(1)
模块自带有源晶振,用于产生 24MHz 时钟作为 OV5640 的输入时钟。模块的闪光灯(LEDI&LED2)由OV5640 的 STROBE 引脚控制,用户可通过 SCCB 接口总线控制 STROBE 引脚输出高低电平,从而控制LED 闪光灯的亮灭。用户在使用 LED 灯时不建议一直点亮或者点亮时间太长。因为 LED 闪光灯功率较高,发光强度较强,模块温度上升会比较快,会造成器件的可靠性降低,同时注意避免直接照射人眼。
(2)
OV5640 在 RGB565 模式下只有高 8 位数据是有效的即 D[9:2],而摄像头排针上数据引脚的个数是 8 位。实际上,摄像头排针上的 8 位数据连接的就是 OV5640 传感器的 D[9:2],所以我
们直接使用摄像头排针上的 8 位数据引脚即可。
(3)
摄像头相关管脚分配
FPGA 第2章 摄像头驱动讲解,fpga开发
FPGA 第2章 摄像头驱动讲解,fpga开发


总结

本文介绍了ov5640摄像头驱动内容。文章来源地址https://www.toymoban.com/news/detail-843540.html

到了这里,关于FPGA 第2章 摄像头驱动讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MIPI摄像头工程=7系列FPGA + OV5640(MIPI) + 15 分钟 + VITIS

    硬件 Spartan-7 SP701 FPGA 7系列FPGA+电阻网络实现的MIPI接口 OV5640 MIPI接口 软件 AMD Vivado 2020 版本以上 AMD Vitis 2020 MIPI 接口现在非常流行,国产FPGA目前基本都带MIPI接口,而AMD-Xilinx是从U+系列开始支持MIPI电平,从国内使用情况来看,7系列FPGA是使用最广的器件,所以这次使用的FPGA是

    2024年02月08日
    浏览(24)
  • FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(四)

            在介绍完OV7725初始化配置和视频采集模块后,就到了整个项目的核心部分即DDR3乒乓存储图像模块,为了实现整个FPGA项目工程当中良好的实时性,乒乓操作在广泛应用在FPGA视频加速处理和数字信号处理中。        关于乒乓操作,有很多的FPGA相关书籍都多多少少做了

    2024年02月02日
    浏览(25)
  • FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(三)

           在详细介绍过OV7725 CMOS Sensor的相关背景知识和如何初始化其内部寄存器达到输出预期视频流的目的后,就到了该例程的核心内容即把OV7725输出的视频流预先缓存到外部DDR3颗粒,接着按照HDMI的视频格式把DDR3颗粒内存储的一帧一帧图像数据送显到屏幕上显示,如图1所示

    2024年01月17日
    浏览(29)
  • FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(一)

           在例程“OV7725摄像头实时采集送HDMI显示”中,我们将走近FPGA图像处理的世界,图像处理、数字信号、高速接口也一直被业界公认为FPGA应用的三大主流领域,这个例程主要基于OV7725摄像头的视频图像采集项目,进行了详细地需求分析,从顶层到底层,从框架到功能,

    2024年02月02日
    浏览(26)
  • windows驱动开发8:虚拟摄像头方案

    一、摄像头框架 在业务场景中,有许多是需要应用能够通过摄像头的方式来访问相关的音视频数据,比如美颜、摄像头多路复用、IP摄像头接入视频会议等。这些功能通过虚拟摄像头的方式来实现,是一个比较通用的解决方案。那么如何及选用哪种技术方案来开发虚拟摄像头

    2024年02月02日
    浏览(22)
  • 【正点原子FPGA连载】 第二十七章OV5640摄像头LCD显示 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html OV5640是OmniVision(豪威科技)公司生产的一颗CMOS图像传感器,该传感器功耗低、分辨率高以及采集速率快,主

    2024年02月16日
    浏览(33)
  • 【正点原子FPGA连载】 第三十章双目OV5640摄像头LCD显示实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html 双目摄像头是在一个模组上集成了两个摄像头,实现了双通道的图像采集。双目摄像头一般应用于安防监控、

    2024年02月13日
    浏览(22)
  • FPGA解码4line MIPI视频 IMX291/IMX290摄像头采集 提供工程源码和技术支持

    FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰,以至于Xilinx官方不得不推出专用的IP核供开发者使用,不然太高端的操作直接吓退一大批FPGA开发者,就没人玩儿了。 本设计基于Xilinx的Kintex7开发板,采集IMX291/IMX

    2023年04月22日
    浏览(28)
  • RK3568平台开发系列讲解(视频篇)摄像头采集视频的相关配置

    🚀返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 Android 平台的摄像头的采集核心部分都是在 Native 层构建的,所以这就会涉及 JNI 层的一些转换操作。 要想使用 Android 平台提供的摄像头,必须在配置文件里添加权限要求。

    2023年04月08日
    浏览(25)
  • 荔枝派Zero(全志V3S)驱动开发之USB摄像头

    上一篇博客实现了在ubuntu打开usb摄像头,也确认了 usb 摄像头支持 UVC,这节我们将 usb 驱动移植到荔枝派开发板上,并实现拍照的功能以及做 mjpeg-streamer 视频流服务器测试。 1、进入 linux 源码目录,执行 2、Device Drivers - USB support 按照下图进行配置 输出识别的每个usb设备的基

    2024年02月11日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包