目前FPGA用于图像采集 传输 处理 显示应用越来越多,主要原因是图像处理领域的火热以及FPGA强大的并行处理能力。本文以OV7725为例,对摄像头使用方面的基础知识做个小的总结,为后续做个铺垫。

  下图是OV7725 datasheet中摄像头传感器内部结构视图。我们主要关注常用的用户接口——DVP(数字视频端口)。

   XCLK:工作时钟输入,由主控器产生,频率为24MHz;

  HREF:行参考信号输出;

  PCLK:像素时钟输出,由XCLK产生,用于控制器采样图像数据;

  VSYNC:场同步信号输出;

  RSTB:复位输入,低电平有效;

  PWDN:低功耗模式选择输入,正常工作期间需拉低;

  SCL:SCCB管理接口时钟,最高频率400KHz;

  SDA:SCCB接口串行数据总线;

  D[9:0] 像素数据输出;

  PCLK引出一个帧率的概念,单位为fps(Frames Per Second),指每秒钟输出几幅静态图像,帧率越高视频越流畅。另外SCCB总线与IIC总线非常相近,主机写时序基本一致,故多数图像采集系统直接复用IIC控制器对图像传感器内部寄存器进行配置。这里给出大体的读写流程,具体见参考文献2。需要格外注意的是,SIO_C时钟信号在IDLE状态下必须为高电平。

写操作:

读操作(分两部分):

总结来说,SCCB与IIC的主要区别在以下两点:

1 IIC有重复开始的概念,读操作先写设备地址 再写寄存器地址,然后重新开始,写设备地址,读取数据。而SCCB读操作时在第一次写寄存器地址后必须有结束条件。

2 IIC主机写数据到从机时,从机必须在写8bit下一时钟拉低总线响应主机。IIC主机读取从机数据时,多字节连续读取除最后字节主句均在第9时钟周期拉低总线响应,单字节读取拉高总线便于下一拍提供停止条件。而SCCB每个phase第9bit为don't care bit /NACK,主机写从机第9bit不关心,读取从机数据由于不支持多字节操作第9bit主机必须拉高总线。

  接下来从整体上把握输出图像数据与同步信号的关系。(图片截取自《OV7725摄像头编程基本知识笔记》,见参考文献3.

  两个VSYNC高脉冲之间为包含一帧图像数据,但只有HREF高电平期间数据才为有效数据,每个HREF高电平区间对应一行图像数据。因此通过这两个信号即可找到有效的图像数据。OV7725摄像头支持多种图像输出格式,此处阐述常用的RGB565格式:

  图像数据在PCLK下降沿输出,控制器在其上升沿采样。当选择此模式输入时,仅使用数据线高八位。时序图给出了相邻两个字节数据内容,可见两个字节表示一个像素点数据,从高位到低位依次是:R 5bit,G 6bit,B 5bit。Ov7725图像传感器的像素30万,分辨率:640*480,即每行640个有效像素点,一共480行。所以每个HREF高脉冲期间有640*2个PCLK周期,两个VSYNC高脉冲期间循环480次。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

参考文献:

1 ov7725手册(可注释)_图文_百度文库 https://wenku.baidu.com/view/3e5504004431b90d6c85c764.html 

2 OV7725学习之SCCB协议(一) - aslmer - 博客园 https://www.cnblogs.com/aslmer/p/5965229.html

3 ov7725数字摄像头编程基本知识笔记_图文_百度文库 https://wenku.baidu.com/view/d1af7a731711cc7931b716c6.html

OV摄像头图像采集基础知识总结的更多相关文章

  1. SLAM第一篇:基础知识

    无论在室内.野外.空中还是水下,SLAM是机器人进入未知环境遇到的第一个问题.本期给大家介绍SLAM的基础知识:传感器与视觉SLAM框架 近来年,智能机器人技术在世界范围内得到了大力发展.人们致力于把 ...

  2. 在DevExpress中使用CameraControl控件进行摄像头图像采集

    在我们以前的项目了,做摄像头的图片采集,我们一般还是需要做一个封装处理的,在较新版本的DevExpress控件里面,增加了一个CameraControl控件,可以直接调用摄像头显示的,因此也可以做头像 ...

  3. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  4. Android基础知识(一)

    前言 前言 从软件测试最终目的发现问题缺陷来看,Findyou比较认同一个观念,测试的能力大致可以划分成三个能力层次:发现问题.定位问题.预防问题.有机会探讨一下这个分类. 发现问题各种方式方法,比如 ...

  5. Deep Reinforcement Learning 基础知识

    Introduction 深度增强学习Deep Reinforcement Learning是将深度学习与增强学习结合起来从而实现从Perception感知到Action动作的端对端学习的一种全新的算 ...

  6. scrapy实战1,基础知识回顾和虚拟环境准备

        视频地址 https://coding.imooc.com/learn/list/92.html   一. 基础知识回顾     1. 正则表达式 1)贪婪匹配,非贪婪匹配 .*? 非贪婪 . ...

  7. Deep Reinforcement Learning 基础知识(DQN方面)

    Introduction 深度增强学习Deep Reinforcement Learning是将深度学习与增强学习结合起来从而实现从Perception感知到Action动作的端对端学习的一种全新的算 ...

  8. [转帖]IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)

    IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”) 2016-06-02 14:23:49 Times_poem 阅读数 9734更多 分类专栏: IPC网 ...

  9. 【STM32H7教程】第55章 STM32H7的图形加速器DMA2D的基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第55章       STM32H7的图形加速器DMA2D的基 ...

随机推荐

  1. PrismCDN 网络的架构解析,以及低延迟、低成本的奥秘

    5 月 19.20 日,行业精英齐聚的 WebRTCon 2018 在上海举办.又拍云 PrismCDN 项目负责人凌建发在大会做了<又拍云低延时的 WebP2P 直播实践>的精彩分享. ...

  2. Java核心技术及面试指南 多线程并发部分的面试题总结以及答案

    7.2.10.1有T1.T2.T3三个线程,如何保证T2在T1执行完后执行,T3在T2执行完后执行? 用join语句,在t3开始前join t2,在t2开始前join t1. 不过,这会破坏多线程的并 ...

  3. Zara精讲C#.Cache、它和Redis区别是什么???

    前言:今天在博客园看到大佬在用Cache,非常不懂,原来它是搞缓存的,原来我只知道Redis是搞这个的,才知道有这个玩腻. 那它们的区别是什么呢?? 区别: redis是分布式缓存,是将数据随机分配到 ...

  4. Python之高级特性

    一.切片 L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']取出前三个元素 , 笨方法就是通过下标一个一个获取 [L[0], L[1], L[2]]Pyt ...

  5. nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in ......

    nginx如果未开启SSL模块,配置https时提示错误 nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_modu ...

  6. 『Candies 差分约束系统』

    差分约束系统 我们先来认识一下差分约束系统鸭! 差分约束系统是一种特殊的\(n\)元一次不等式组,它包含了\(n\)个变量\(x_1-x_n\)以及\(m\)个不等式(约束条件).其中每一个不等式形如 ...

  7. Java导出CSV文件

    以前导出总是用POI导出为Excel文件,后来当我了解到CSV以后,我发现速度飞快. 如果导出的数据不要求格式.样式.公式等等,建议最好导成CSV文件,因为真的很快. 虽然我们可以用Java再带的文件 ...

  8. Java基础2:基本数据类型与常量池

    本文会结合虚拟机对引用和对象的不同处理来介绍三大特性的原理. 三大特性:继承 封装 多态 继承 Java中的继承只能单继承,但是可以通过内部类继承其他类来实现多继承. public class Son ...

  9. 微服务SpringCloud容器化案例

    前言 当我们在使用微服务的时候,那么有一个问题一定会困扰我们,那就是项目的测试和部署.因为在单体应用下,部署项目很简单,直接打包启动就可以了,而对于微服务来说,因为有各个组件的存在所以让测试和部署都变 ...

  10. web前端安全

    之前对web前端安全进行了总结,想给大家分享一下,有不对的地方,大家多多交流,由于写在了PPT上,只好给大家一张一张粘上来,希望大家不要在意,了解知识为主