首先要配置OV7725摄像头的寄存器,遵循的是SCCB协议,配置之前需要1ms的时间等待,保证系统稳定,而且刚开始要丢弃前10帧的数据,因为认为前10帧的数据是不稳定的,图1就是数据手册上关于这一点的描述。

SCCB协议已经在上一篇博文中仔细研究过了,详情参考 http://www.cnblogs.com/aslmer/p/5965229.html

图 1

OV7725摄像头可以输出RGB,YUV等多种格式的数据,在这里我们以数据格式为RGB565为例,

RGB565即每个像素点都是16位的,由 图2 可以知道从摄像头输出的数据并不是16位的,而是8位的,

先出来第一个字节,紧接着再出来第二个字节,占用的是D2-D9这八个数据输出口,

一个完整的16位数据为{first byte ,second byte},因此我们需要把这两个字节拼接成16位的数据,然后再应用。

图 2

配置完寄存器后,通过SignalTap逻辑分析仪捕捉一下实际出来的数据流如图 3,格式为:RGB565,640*480的像素,cmos_href高电平有效

cmos_vsync 是场同步信号,即一幅图像,

cmos_href 是行同步信号,即图像的一行,

cmos_data是输出的数据

一共有480行,每行有640个像素点,这一点和VGA的时序类似

通过 图3 可知在cmos_href有效时才有数据,否则输出为0,我们想知道一个cmos_href下一共有多少个数据,因此将图 3 中的第 2 个 数据流放大,如图 4 、图 5 所示。

图 3

图 4

图 5

我们先计算一下看每行是不是640个数据:2162 - 882 = 1280,为什么不是640(我们配置的是RGB565,每位是16位,但是摄像头是8位输的,即一个16位的数据需要2个8位数据),1280/2=640.这和我们前面分析的是一模一样的。

因此驱动完摄像头并不能完事了,要将数据整合成我们需要的16位。

仿真的结果如下:

1、丢弃了前10帧数据。

2、检查数据是否拼接成功。

最近一周时间都没怎么自学FPGA了,突然不想写开题报告,不想做光学、热学仿真,感觉有那么一丢丢烦,

干脆暂时放下那些,学习学习我的FPGA,心里才能觉得踏实。

原文链接:http://www.cnblogs.com/aslmer/p/5999381.html

OV7725学习(二)的更多相关文章

  1. emberjs学习二(ember-data和localstorage_adapter)

    emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...

  2. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  3. TweenMax动画库学习(二)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  4. Hbase深入学习(二) 安装hbase

    Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...

  5. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  6. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  7. Quartz学习--二 Hello Quartz! 和源码分析

    Quartz学习--二  Hello Quartz! 和源码分析 三.  Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...

  8. SpringCloud学习(二):微服务入门实战项目搭建

    一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...

  9. DjangoRestFramework学习二之序列化组件、视图组件 serializer modelserializer

      DjangoRestFramework学习二之序列化组件.视图组件   本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组 ...

  10. SpringMVC入门学习(二)

    SpringMVC入门学习(二) ssm框架 springMVC  在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...

随机推荐

  1. Installing FIM 2010 R2 SP1 Portal on SharePoint Foundation 2013

    http://www.fimspecialist.com/fim-portal/installing-fim-2010-r2-sp1-portal-on-sharepoint-foundation-2 ...

  2. 简易的可拖动的桌面悬浮窗效果Demo

    首先,我们需要知道,悬浮窗分为两种:Activity级别的悬浮窗,系统级别的悬浮窗 Activity级别的悬浮窗跟随所属Activity的生命周期而变化,而系统级别的悬浮窗则可以脱离Activity而 ...

  3. Volley网络连接

    一.Volley a burst or emission of many things or a large amount at once Volley是Android平台上的网络通信库,能使网络通信 ...

  4. Effective Java 阅读笔记——方法

    38:检查参数的有效性 每当编写方法或者构造器的时候,应该考虑它的参数有哪些限制,在方法的开头处对参数进行检查,并且把这些限制写入文档. 注意: 对于公有方法,应该使用@throws标签在文档中说明违 ...

  5. OC知识梳理-NSArray与NSMutableArray相关知识

    知识普及: 1.数组中的元素在系统中都会有其默认对应的下标,下标是一个整形的数字,默认从0开始. 例:NSArray *arr3 = @["345","234" ...

  6. 用二进制大对象类型Blob实现图片入库与出库的操作

    package readclobDemo.bao; import java.io.FileInputStream; import java.io.FileNotFoundException; impo ...

  7. iOS中发送HTTP请求的方案

    在iOS中,常见的发送HTTP请求的方案有 苹果原生(自带) NSURLConnection:用法简单,最古老最经典的一种方案 NSURLSession:功能比NSURLConnection更加强大, ...

  8. Javascript中的五种数据类型

    Undefined 未定义.只有一个值undefined Null         只有一个值,null Boolean 在javascript中,只要逻辑表达式不返回undefined不返回null ...

  9. 软件测试作业3--Junit、hamcrest、eclemmat的安装和使用

    1.   how to install junit, hamcrest and eclemma? 首先下载下来Junit和Hamcrest的jar包,然后新建项目的时候将这两个jar包导入到工程里面就 ...

  10. Spring自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法的实例

    利用Spring的拦截器可以在处理器Controller方法执行前和后增加逻辑代码,了解拦截器中preHandle.postHandle和afterCompletion方法执行时机. 自定义一个拦截器 ...