学习笔记——STM32摄像头OV7725(二)

学习笔记——STM32摄像头OV7725(二)AL422B及摄像头驱动原理一、AL422B简介STM32F4系列的控制器主频高、一般会扩展外部SRAM、SDRAM等存储器,且具有DCMI外设,可以直接根据VGA时序接收并存储摄像头输出的图像数据;而STM32F1系列的控制器一般主频较低、为节省成本可能不扩展SRAM存储器,而且不具DCMI外设,难以直接接收和存储OV7725图像传感器输出的数据。为了针对上述…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

AL422B及摄像头驱动原理

一、AL422B简介

STM32F4 系列的控制器主频高、一般会扩展外部 SRAM、SDRAM 等存储器,且具有
DCMI 外设,可以直接根据 VGA 时序接收并存储摄像头输出的图像数据;而 STM32F1 系列的控制器一般主频较低、为节省成本可能不扩展 SRAM 存储器,而且不具 DCMI 外设,难以直接接收和存储 OV7725 图像传感器输出的数据。

为了针对上述问题,OV7725添加了一个型号为AL422B的FIFO,英文全称为:First in first out。用于缓冲数据,AL422B的本质是一种RAM存储器,容量大小为393216字节,支持同时写入和读取。

这就是FIFO的原理图了:
在这里插入图片描述

以下是它的引脚功能图:

DI[0:7] 数据输入引脚
WCK 数据输入同步时钟
/WE 写使能信号,低电平有效
/WRST 写指针复位信号,低电平有效
DO[0:7] 数据输出引脚
RCK 数据输出同步时钟
/RE 读使能信号,低电平有效
/RRST 读指针复位信号,低电平有效
/OE 数据输出使能,低电平有效
TST 测试引脚,实际使用时设置成低电平

1、写时序

在写时序中,当 WE 管脚为低电平时,FIFO 写入处于使能状态,随着读时钟 WCK 的运转, DI[0:7]表示的数据将会就会按地址递增的方式存入 FIFO;当 WE 管脚为高电平时,关闭输入,DI[0:7]的数据不会被写入 FIFO。 在控制写入数据时,一般会先控制写指针作一个复位操作:把 WRST 设置为低电平,写指针会复位到 FIFO 的 0 地址,然后 FIFO 接收到的数据会从该地址开始按自增的方式写入。

在这里插入图片描述

2、读时序

FIFO 的读时序类似,不过读使能由两个引脚共同控制,即 OE 和 RE 引脚均为低电平时,输出处于使能状态,随着读时钟 RCK 的运转,在数据输出管脚 DO[0:7]就会按地址递增的方式输出数据。类似地,在控制读出数据时,一般会先控制读指针作一个复位操作:把 RRST 设置为低电平,读指针会复位到 FIFO 的 0 地址,然后 FIFO 数据从该地址开始按自增的方式输出。
在这里插入图片描述

二、摄像头的驱动原理
OV7725中包含有FIFO,所以外部控制器驱动摄像头时,需要协调好FIFIO与OV7725之间的关系。

摄像头引出的接口包含了 OV7725 传感器及 FIFO 的混合引脚,外部的控制器使用这些引脚即可驱动摄像头。如下图:
在这里插入图片描述

1、摄像头的引出接口
(1)与 OV7725 传感器像素输出相关的 PCLK 和 D[0:7]并没有引出,因为这些引脚被连接到了 FIFO 的输入部分,OV7725 的像 素输出时序与 FIFO 的写入数据时序是一致的,所以在 OV7725 时钟 PCLK 的驱动下,它输出的数据会一个字节一个字节地被 FIFO 接收并存储起来。
(2)其中最为特殊的是 WEN 引脚,它与 OV7725 的 HREF 连接到一个与非门的输入,与非门的输出连接到 FIFO 的 WE 引脚,因此,当 WEN 与 HREF 均为高电平时,FIFO 的 WE为低电平,此时允许 OV7725 向 FIFO 写入数据。
(3)外部控制器通过控制 WEN 引脚,可防止 OV7725 覆盖了还未被控制器读出的旧 FIFO数据。另外,在 OV7725 输出时序中,只有当 HREF 为高电平时,PCLK 驱动下 D[0:7]线表示的才是有效像素数据,因此,利用 HREF 控制 FIFO 的 WE 可以确保只有有效数据才被写入到 FIFO 中。

2、配合摄像头的原理图,以及OV7725、FIFO的时序,可以总结出摄像头菜鸡数据的过程如下:
(1)利用 SIO_C、SIO_D 引脚通过 SCCB 协议向 OV7725 的寄存器写入初始化配置;

(2)初始化完成后,OV7725 传感器会使用 VGA 时序输出图像数据,它的 VSYNC 会首先输出帧有效信号(低电平跳变),当外部的控制器(如 STM32)检测到该信 号时,把 WEN 引脚设置为高电平,并且使用 WRST 引脚复位 FIFO 的写指针到 0 地址;

(3)随着 OV7725 继续按 VGA 时序输出图像数据,它在传输每行有效数据时, HREF引脚都会持续输出高电平,由于 WEN 和 HREF 同时为高电平输入至与非门,使 得其连接到 FIFO WE 引脚的输出为低电平,允许向 FIFO 写入数据,所以在这期
间,OV7725 通过它的 PCLK 和 D[0:7]信号线把图像数据存储到 FIFO 中,由于前
面复位了写指针,所以图像数据是从 FIFO 的 0 地址开始记录的;

(4)各行图像数据持续传输至 FIFO,受 HREF 控制的 WE 引脚确保了写入到 FIFO 中的都是有效的图像数据,OV7725 输出完一帧数据时,VSYNC 会再次输出帧有效
信号,表示一帧图像已输出完成;

(5)控制器检测到上述 VSYNC 信号后,可知 FIFO 中已存储好一帧图像数据,这时控制 WEN 引脚为低电平,使得 FIFO 禁止写入,防止 OV7725 持续输出的下一帧数据覆盖当前 FIFO 数据;

(6)控制器使用 RRST 复位读指针到 FIFO 的 0 地址,然后通过 FIFO 的 RCLK 和
DO[0:7]引脚,从 0 地址开始把 FIFO 缓存的整帧图像数据读取出来。在这期间,
OV7725 是持续输出它采集到的图像数据的,但由于禁止写入 FIFO,这些数据被
丢弃了;

(7)控制器使用 WRST 复位写指针到 FIFO 的 0 地址,然后等待新的 VSYNC 有效信号到来,检测到后把 WEN 引脚设置为高电平,恢复 OV7725 向 FIFO 的写入权限,OV7725 输出的新一帧图像数据会被写入到 FIFO 的 0 地址中,重复上述过程。

在这里插入图片描述
在这里插入图片描述

在使用本摄像头时,使用开发板的液晶屏,把 OV7725 配置为 240320 分辨率(QVGA),RGB565 格式,那么 OV7725 输出一帧的图像大小为 2403202=153600 字 节,而本摄像头采用的 FIFO 型号 AL422B 容量为 393216 字节,最多可以缓存 2 帧这样的图像,通过这样的方式,STM32 无需直接处理 OV7725 高速输出的数据。但是,如果配置OV7725 为 480640 分辨率时,其一帧图像大小为 4806402=614400 字节,FIFO 的容量不足以直接存储一帧这样的图像,因此,当 OV7725 往 FIFO 写数据的时候,STM32 端要同时读取数据,确保在 OV7725 覆盖旧数据的之前,STM32 端已经把这部分数据读取出来了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/190192.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Android UI布局优化之ViewStub[通俗易懂]

    Android UI布局优化之ViewStub[通俗易懂]尊重原创,转载请注明出处:http://blog.csdn.net/a740169405/article/details/50351013前言:在设计模式的单利模式中,懒汉式和饿汉式是其中两种。一种是在类被加载的时候就完成单例对象的初始化,一种是在需要使用该单例的时候才初始化。在android的视图设计中,同样需要使用的这样的设计模式。这样的视图加载起来需要耗费很多的时间。在这几…

  • shiro框架是什么_shiro+jwt

    shiro框架是什么_shiro+jwt1,什么是shiroApacheShiro是Java的一个安全框架。Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。2,为什么要学shiro1,既然shiro将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成…

  • t276芯片(芯片st是什么意思)

    ST7789V2是一个单芯片TFT-LCD驱动器。该芯片可以直接连接到外部MCU,支持并行8080系列的8位/9位/16位/18位接口,也支持SPI串行通讯接口。显示数据可以存储在240x320x18bits的片上显示数据RAM中。它可以在没有外部操作时钟的情况下执行显示数据RAM读写操作,以尽量减少功耗。并行接口占用外部MCU芯片引脚较多,但其通讯速率较快,一般只在需要高速刷新及MCU资源比较丰富的场合使用。SPI串行通讯接口占用MCU芯片引脚较少,通讯速率相对并行接口较慢,但因其占用MCU引脚.

  • QUIC简单介绍

    QUIC简单介绍

    2021年12月16日
  • Verilog 流水线设计[通俗易懂]

    Verilog 流水线设计[通俗易懂]一、什么是流水线流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。目的是将一个大操作分解成若干的小操作,每一步小操作的时间较小,所以能提高频率,各小操作能并行执行,所以能提高数据吞吐率(提高处理速度)。二、什么时候用流水线设计使用流水线一般是时序比较紧张,对电路工作频率较高的时候。典型情况如下:1)功能模块之间的流水线,用乒乓buffer来交互数据。代价是增加了memory的数量,但是和获得的巨大性能提升相比,可以忽略不计。2)I/O瓶

  • 北京航空航天博士生的待遇_北航博士补贴涨到3500

    北京航空航天博士生的待遇_北航博士补贴涨到3500第二十四条博士后在站期间的工资及其他相关待遇,按照国家有关规定执行。博士后在站期满,工资停发,住房公积金及住房补贴随之停发。第二十五条企业博士后的工资、住房等福利待遇由与我校签订协议的联合培养单位负责。在职博士后的工资、住房等待遇由原所在单位或合作导师负责。第二十六条博士后在站期间,学校为非在职博士后建立住房公积金,并为暂时没有租赁到公寓的非在职博士后发放住房补贴1000元/月。博士后公寓的…

    2022年10月29日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号