zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Twitter如何在数千台服务器上快速部署代码?
    系统架构师学习笔记_第六章(上)_连载
    使用IIS内置压缩功能,增加网站访问速度
    系统架构师学习笔记_第八章_连载
    微软企业库4.1学习笔记(十五)缓存模块3 使用数据库作为后端存储
    快速搞懂 SQL Server 的锁定和阻塞
    微软企业库4.1学习笔记(十四)缓存模块2 使用缓存模块进行开发
    微软企业库4.1学习笔记(十六)缓存模块4 服务器场中的缓存使用
    Agile PLM Engineering Collaboration
    EC Client Customizing EC Client 客户化
  • 原文地址:https://www.cnblogs.com/aslmer/p/5999381.html
Copyright © 2011-2022 走看看