OV7725学习(二)
首先要配置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学习(二)的更多相关文章
- emberjs学习二(ember-data和localstorage_adapter)
emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- TweenMax动画库学习(二)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- Hbase深入学习(二) 安装hbase
Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- Quartz学习--二 Hello Quartz! 和源码分析
Quartz学习--二 Hello Quartz! 和源码分析 三. Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...
- SpringCloud学习(二):微服务入门实战项目搭建
一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...
- DjangoRestFramework学习二之序列化组件、视图组件 serializer modelserializer
DjangoRestFramework学习二之序列化组件.视图组件 本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组 ...
- SpringMVC入门学习(二)
SpringMVC入门学习(二) ssm框架 springMVC 在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...
随机推荐
- Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件
大家都玩QQ空间客户端,对于每一个说说,我们都可以评论,那么,对于某一条评论: 白雪公主 回复 小矮人 : 你们好啊~ 我们来分析一下: .QQ空间允许我们 点击 回复人和被回复人的名字就可以进入对于 ...
- ruby语言是什么东西
1.简介 Ruby是日本的Yukihiro Matsumoto写的,简单易学的面向对象的脚本语言,像perl一样,有丰富的文字处理.系统管理等丰富 功能,但是ruby要简单,容易理解和扩充.跟p ...
- 深入理解java虚拟机(1)------内存区域与内存溢出
在C++领域,关于C++的内存存储,结构等等,有一本书:深度探索C++对象模型,讲解的非常透彻. 而Java确把这一工作交给了虚拟机来处理. 我们首先来看看关于内存的问题. 1.问题: 1)java ...
- 采用 PAT工具及CSP语言,对一个问题进行自动机 建模
pat是新加坡国立开发的工具,需要的去官网下http://www.comp.nus.edu.sg/~pat/ ,学了一天,是个不错的自动机验证工具,感觉还不错啊. 验证一个数是否为斐波那契数且为质数 ...
- 回文数 第N个回文数
判断回文数还是不难,如果能转为字符串就更简单了. 如果是求第N个回文数呢. 12321是一个回文数,这里先考虑一半的情况. 回文数的个数其实是有规律的.如: 1位回文数: 9个 2位回文数: 9个 3 ...
- 我眼中的自己ps:自我介绍
我是一个理科生,学的是计算机科学与技术专业,目前在桂林理工大学信息科学与工程学院就读.我心里不是很喜欢这个专业,但是因为当初的某种原因就入了这个门.自从学习了计算机以后,我发现这个专业可谓“博大精深, ...
- 输入三个整数,xyz,最终以从小到大的方式输出。利用中间变量
<script>function bijiao(){ var x= parseFloat(document.getElementById("X").value); va ...
- linux动态网络和静态网络和克隆后的网络配置
建议设置网卡NAT模式 动态网络配置:1.一定要开启本地DHCP服务 2.在虚拟网络编辑器中选择NAT模式选中DHCP项如下图 3.ifup eth0 静态网络配置 : 注释:ifcfg-eth0部分 ...
- css常见问题
CSS: 1.垂直居中布局 (1)已知宽高 (2)未知宽高 https://segmentfault.com/q/1010000004073623 2.文字退格 text-indent: 4em; 3 ...
- js追加元素,以及元素位置
function setShow(val_param,text){ var ul = document.getElementById("copyhere"); //<li&g ...