• 硬件基础知识和典型应用-关于OVXXXX 系列摄像头使用说明


    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnHardware" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

    说明

    首先能够采集OVXXXX系列的摄像头数据并不是什么高端和困难的事情!

    现在说一下怎么采集摄像头数据(不带FIFO)

    1.摄像头就是里面有很多采集点组成

    如果说一个摄像头是 240*320的

    就是说横着有240个采集点,竖着有320个采集点,共76800个采集点

    2.以OV7670为例(假设采集240*320个像素点,模式输出是RGB422)

    3.3V和GNG  -- 摄像头供电

    -------------------------------------------------------------------------

    SDA和SCL为IIC配置摄像头的引脚

    可以设置摄像头具体横竖采集的像素点个数

    可以设置采集模式,列如:RGB 422(就是说一个像素点用 8位数据表示 ,前面4位代表红色,中间2位代表蓝色,最后2位代表绿色)

    列如: 采集的数据是  0xF0 (1111 0000)  就是纯绿色

    采集的数据是  0x00 (0000 1100)  就是纯蓝色

    采集的数据是  0x00 (0000 1000)  就是不怎么蓝的颜色

    有可能有人会问这颜色识别的有点不好呀,分辨率有点低.其实有RGB565,但是呢为了方便叙述,咱先按照RGB422来讲解.

    -------------------------------------------------------------------------

    VS (VSYNC) ----摄像头工作的时候,这个引脚来一个高脉冲说明摄像头开始采集一副图像了(采集240*320个像素点)

    注意哈,一般咱们把开始采集一副图像就做开始采集一帧图像

    一般摄像头采集是从左到右 从上到下采集,当然也可以使用IIC发送命令控制它采集的模式

    -------------------------------------------------------------------------

    HS (HREF) ---- 当这个引脚变为高电平,说明摄像头正在输出某一行像素点

    假设是刚开始采集,那么这个引脚第一次变为高电平,说明摄像头正在输出第一行的像素点(从左到右 240个)

    第一行的像素点采集完了,就会变为低电平,然后开始采集第二行,这个引脚又会主动变为高电平

    然后就是这样子循环.

    -------------------------------------------------------------------------

    PLK ---- 当这个引脚变为高电平,说明摄像头正在输出一个像素点的数据

    假设是刚开始采集,那么这个引脚第一次变为来一个高脉冲,说明摄像头正在输出第一行的第一个像素点的数据

    -------------------------------------------------------------------------

    D0 - D7引脚  ---- 这个是输出实际像素点采集的数据的引脚

    配合上面的 PLK引脚,当PLK引脚来一个高脉冲以后,读取D0 - D7引脚的值

    便可获取采集的像素点的数据.假设是刚开始采集采集的数据是 1111 0000  (0xF0)

    就说明采集的第一行的第一个像素点的数据是 0xF0 纯绿色

    最后总结

    假设是 240*320

    VS (VSYNC)  ,  HS (HREF) 和 PLK  引脚都接到单片机的中断引脚上

    D0 - D7 接到单片机的随意8个引脚上

    当检测到 VS (VSYNC) 来了一个高脉冲说明开始采集一帧图像了

    然后检测 HS (HREF) 引脚变为了高电平

    说明开始采集一行图像了,然后只要PLK引脚来一个高脉冲,说明摄像头输出了

    一个像素点的数据,然后单片机读取 D0 - D7 就获取了数据了

    然后通过 PLK 和  D0 - D7就可以获取第一行的 240个数据

    第一行输出完成 HS (HREF) 引脚变为了低电平

    开始输出第二行的时候 HS (HREF) 引脚变为了高电平

    然后只要PLK引脚来一个高脉冲,说明摄像头输出了

    一个像素点的数据,然后单片机读取 D0 - D7 就获取了数据了

    然后通过 PLK 和  D0 - D7就可以获取第二行的 240个数据

    然后就是循环采集320行数据.

    难在哪里呢?

    从上面的介绍可以看出好像挺简单的

    那难在哪里呢?

    1.难点1

    大部分人的基础知识不够,就是说连基本的IIC通信,中断采集都不会

    注意哈,我说的是会!!!

    列如我问下: 等待芯片应答具体是啥?

    发送非应答具体是啥??

    2.难点2

    摄像头输出的频率实在是太快了

    真的是太快了!!!!一般的单片机达不到这种速度

    咱们只看 PCLK 的输出速度哈

    下图中大概是 PCLK的高电平时间 大概是8ns

    整个周期才16ns .....这是普通单片机做不到的

    一般情况下就是72M主频的STM32F103 执行中断的时间也是约1us

    即使是关闭所有的其它外设,中断时间也只能达到 400ns

    然后摄像头模组加个FIFO芯片

    FIFO的作用是啥?

    没有FIFO的时候,摄像头输出数据是主动的,时钟也是摄像头主动发出的,咱单片机只能接收判断

    FIFO芯片帮你缓存图像数据.

    读取每一个字节的数据也是靠一个引脚产生时钟上升沿,不过这个引脚是单片机自己产生.

    现在就是说你想啥时候读取数据就啥时候读取....

    最后关于程序

    去淘宝搜索摄像头,然后基本上都会给例程!!!

  • 相关阅读:
    SSIS: 使用Lookup 和 Cache transformation 进行数据匹配简单介绍
    Linux(Debain)环境安装WordPress
    [转]Ubuntu 软件安装、查找、卸载--apt-get、apt-cache命令安全
    SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。
    SSIS DB目录设置 (Integration Services Catalogs)
    SSIS:捕获修改了的数据
    MSSQL:修改tempdb设置增加DW性能
    Mac下安装sbt
    [转] linux下 /etc/profile、~/.bash_profile ~/.profile的执行过程
    [转] Spark-Sql On YARN自动调整Executor数配置
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/14720167.html
Copyright © 2020-2023  润新知