OV7725之AL422B-FIFO及摄像头的驱动原理
今日入手了一块正点原子家OV7725摄像头模块,这是一篇关于模块内部的AL422B-FIFO芯片的学习笔记。学习资料为野火家的相关模块视频教程。链接如下:【单片机】野火STM32F103教学视频 (配套霸道/指南者/MINI)【全】(刘火良老师出品) (无字幕)_哔哩哔哩_bilibili
STM32F4系列的控制器主频高、一般会扩展外部SRAM、SDRAM等存储器。且具有DCMI外设,故可以与OV7725直接进行硬件通讯,速度更快。
而STM32F1系列的控制器一般主频较低、为节省成本可能不扩展SRAM存储器,而且不具有DCMI外设,难以直接接收和存储OV7725图像传感器输出的数据。
那么为何需要扩展 FIFO 呢?我们举例进行说明:
OV7725能够设置的分辨率有 240*320 或 640*320 ,假设为 240*320;
则一帧图像占的字节数为:240*320*2(一个像素占两字节) = 153600;
153600/1024 = 150.0 KB ;
然而我所使用的STM32F1ZET6的内部SRAM仅为 64KB,连一帧的图像都存储不了;
所以在扩展了FIFO后能够利用FIFO缓存数据图像,stm32再慢慢提取处理数据。
AL422B的容量大小为393216字节,至少能够缓存两帧 240*320 的图像。但如果选择分辨率为 640*320 的话, 640*320*2 = 409600 > 393216,也就是说FIFO连一帧图像数据也缓存不了,这时候需要OV7725一边往FIFO写入数据,stm32一边从FIFO读出来,确保在OV7725覆盖旧数据前,stm32端已经把这部分数据读取出来了。
AL422B芯片引脚图和功能图:
管脚名称 | 管脚类型 |
管脚描述 |
DI [0:7] | 输入 | 数据输入引脚 |
WCK | 输入 | 数据输入同步时钟 |
/WE | 输入 | 写使能信号,低电平有效 |
/WRST | 输入 | 写指针复位信号,低电平有效 |
DO [0:7] | 输出 | 数据输出引脚 |
RCK | 输入 | 数据输出同步时钟 |
/RE | 输入 | 读使能信号,低电平有效 |
/RRST | 输入 | 读指针复位信号,低电平有效 |
/OE | 输入 | 数据输出使能,低电平有效 |
TST | 输入 | 测试引脚,实际使用时设置为低电平 |
由于AL422B支持同时写入和读出数据,所以它的输入和输出的控制信号线都是互相独立的。写入和读出数据的时序类似,跟VGA的像素输出时序一致,AL422B读写时序介绍如下:
FIFO的读时序类似,不过读使能由两个引脚共同控制,即OE和RE引脚均为低电平时,输出处于使能状态,随着读时钟RCK的运转,在数据输出管脚 DO[0:7] 就会按地址递增的方式输出数据。
摄像头的驱动原理
OV7725摄像头模块中包含有FIFO,所以外部控制器驱动摄像头时,需要协调好FIFO与OV7725传感器的关系,下面配合摄像头的原理图介绍驱动原理。
原理图主要分为外部引出接口、OV7725及FIFO部分。
整个摄像头的采集过程:
摄像头本身有个OV7725传感器,背面有FIFO。
假如说OV7725跟stm32直接相连的话,由于OV7725输出的时钟很快,比24hz还高,超过stm32读取的速度。所以我们不希望这样直接读取7725的内容,而且32的sram空间不够大,根本无法完整地接收一帧图像。
所以stm32利用fifo。stm32通过读取ov7725的vsync信号,当出现vsync信号的时候,即7725输出了一帧,那32就让7725把ov7725的数据输出来的图像写入到FIFO(即这个时候控制FIFO去使能)(即图片中的"允许ov7725允许向fifo写入数据")。当检测到第二次vsync的时候,就表示一帧的图像结束,AL422B中存储了一帧的图像数据。
那么stm32就控制WE引脚输出高电平,即fifo不能写入(比前能写入状态是因为32控制WE为低电平)。这样子ov7725输出的图像数据就不能写入fifo了。ov7725的图像数据是一直在输出的,所以我们通过控制WE来控制fifo是否接受数据。
如图所示,WEN和HREF通过与非门对WE进行控制。只有WEN、HREF都为高电平时,WE才为低电平(有效),才能写入数据到FIFO。
当我们禁止了fifo接受图像数据时,stm32就赶紧地从fifo把刚刚缓存的那帧图像读回来。但!刚刚又有提及stm32的sram没法完全地缓存一帧图像,但是因为图像数据已经缓存在fifo内了,我们可以慢慢来读,也就没有必要一次性读一帧了,stm32可以自己控制fifo的时钟(RCK)慢慢地读回来,可以把速度调到32可以接收的速度去读取(而不是像7725那样速度快到32都来不及读取)。
由于sram太小,我们可以一行一行地读。即240/320×2=480/640字节,这对32来说是肯定可以接受的。那么我们可以这样处理(处理方法之一而已):如果我们想要直接把数据显示在液晶屏上,那我们可以直接把这一行数据通过32的fsmc传给液晶屏的ILI9341,那液晶屏也就可以一行一行地显示出来。
当32处理完一帧数据之后,又重复图片中的步骤继续传输!
OV7725之AL422B-FIFO及摄像头的驱动原理相关推荐
- OV7670 FIFO 30W摄像头介绍(四) --- OV7670上位机验证驱动
在介绍OV7670之前先附上模块链接:点击购买OV7670摄像头模块 介绍代码前,首先来看之前写的文章: OV7670 FIFO 30W摄像头介绍(一) - 整体介绍/SCCB时序 OV7670 FI ...
- 虚拟摄像头驱动原理及开发
(以下所说的都是基于微软的windows平台) 类似功能的产品,如著名的e2eSoft的 VCam,国内新浪的9518虚拟视频, 新浪的虚拟视频是DirectShow应用 ...
- (兼容正点原子引脚)OV7670 FIFO 30W摄像头介绍(二) --- 寄存器图示说明
在介绍OV7670之前先附上模块链接:点击购买OV7670摄像头模块 前面的文章介绍了OV7670以及SCCB的代码 (兼容正点原子引脚)OV7670 FIFO 30W摄像头介绍(一) - 整体介绍/ ...
- ubuntu18.04安装Realsense D435i 摄像头的驱动SDK和ROS Wrapper
ubuntu18.04安装Realsense D435i 摄像头的驱动SDK和ROS Wrapper 2022年更新: 安装教程同:进更新安装包下载方式和下载链接--见文末. 1.安装Realsens ...
- 乐视 LeTMC-520体感摄像头 ROS驱动
乐视 LeTMC-520体感摄像头 ROS驱动 我以为它的驱动跟Xtion是一样的,其实它的驱动是奥比中光的,安装驱动参考这篇文章
- 摄像头ISP系统原理(下)
摄像头ISP系统原理(下) l WDR(Wide Dynamic Range)------宽动态 动态范围(Dynamic Range)是指摄像机支持的最大输出信号和最小输出信号的比值,或者说图像最亮 ...
- LoRa SX1278/76驱动原理 附代码
LoRa SX1278/76驱动原理 附代码 原理解释 LoRa 关键参数说明 前导码: 报头: 显式报头模式: 隐式报头模式: LoRa 调制解调: 扩频因子: 编码率: 信号带宽: 代码说明 SP ...
- 第三阶段应用层——2.6 视频监控—CMOS摄像头的硬件原理
视频监控-CMOS摄像头的硬件原理 硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3) 软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.0 ...
- 摄像头ISP系统原理(中)
摄像头ISP系统原理(中) · AF(FOCUS)----自动对焦 根据光学知识,景物在传感器上成像最清晰时处于合焦平面上.通过更改 LENS 的位置,使得景物在传感器上清晰的成像,是 ISP FOC ...
- 摄像头ISP系统原理(上)
摄像头ISP系统原理(上) ISP(Image Signal Processor),即图像信号处理器,用于处理图像信号传感器输出的图像信号.它在相机系统中占有核心主导的地位,是构成相机的重要设备. 主 ...
最新文章
- 【Leetcode】大神总结的所有TopK问题模板(基于快速排序)
- mybatis学习笔记四(动态sql)
- 一起来学习丨听海华大赛第一名团队聊比赛经验和心得
- html中播放的语法是什么,css语法是什么?
- 【用jersey构建REST服务】系列文章
- 计算机二级c语言程序设计题评分标准,计算机二级C语言题型和评分标准
- 智能语音机器人系统介绍
- ico图标制作的在线工具
- 如何设置快速启动栏 win7 快速启动栏 快速启动栏不见了
- jQuery-WEUI的Uploader实现上传多张图片并且限制上传数量的方法
- 针对华为产品,如何在小红书宣传中发布有关图文笔记并达到最佳效果?
- 讲讲如何将图片格式转化成base64格式的
- Vue插件报错:Vue.js is detected on this page.
- Java开发者跳槽指南面试篇
- c语言case套case,switch…case
- 【基础篇】C#基础知识——面向对象
- 物联卡中心:怎么判断是不是物联卡?
- 机器学习(十二)-基于规则的分类器
- c语言程序设计3000字论文,考核体系毕业论文提纲范文 c语言和c语言程序设计方面有关论文范文文献3000字...
- NPP VIIRS卫星数据介绍
热门文章
- 导向滤波-Guided Image Filtering
- AWS ARN 学习
- 隐藏的BUG探讨——从“Y2K”问题到“2038”年问题
- servlet3 文件上传
- 猴子排序算法_猴子排序-有史以来最慢的排序算法?
- OSChina 周二乱弹 ——女孩在身上纹了个四叶草
- Web 自动化神器 TestCafe(二)—元素定位篇
- php中file_get_contents与curl性能比较分析
- access工资明细表_利用ACCESS数据库报表功能制作工资条
- 【深度学习笔记(九)】之物体的分类与定位