STM32F1之OV7725摄像头

目录

1.  摄像头简介        

2.  OV7725  摄像头简介

3.  OV7725 引脚

4.  OV7725 功能框架图

5.  SCCB时序

5.1  SCCB 的起始、停止信号及数据有效性

5.2  SCCB 数据读写过程


1.  摄像头简介        

        在各类信息中,图像含有最丰富的信息,作为机器视觉领域的核心部件,摄像头被广泛地应用在安防、探险以及车牌检测等场合。

        摄像头按输出信号的类型来看可以分为数字摄像头和模拟摄像头,数字摄像头跟模拟摄像头区别在于:

①输出信号类型:数字摄像头输出信号为数字信号,模拟摄像头输出信号为标准的模拟信号。

②接口类型:数字摄像头有 usb 接口(比如常见的 pc 端免驱摄像头)、IEE1394 火线接口(由苹果公司领导的开发联盟开发的一种高速度传送接口,数据传输率高达 800Mbps)、千兆网接口(网络摄像头)。模拟摄像头多采用 AV 视频端子(信号线+地线)或 S-VIDEO(即莲花头--SUPER VIDEO,是一种五芯的接口,由两路视频亮度信号、两路视频色度信号和一路公共屏蔽地线共五条芯线组成)。

③分辨率:模拟摄像头的感光器件,其像素指标一般维持在 752(H)*582(V)左右的水平,像素数一般情况下维持在 41W 左右。数字摄像头分辨率一般从数十万到数百万甚至数千万。但这并不能说明数字摄像头的成像分辨率就比模拟摄像头的高,原因在于模拟摄像头输出的是模拟视频信号,一般直接输入至电视或监视器,其感光器件的分辨率与电视信号的扫描数呈一定的换算关系,图像的显示介质已经确定,因此模拟摄像头的感光器件分辨率不是不能做高,而是依据于实际情况没必要做这么高。

        按照摄像头图像传感器材料构成来看可以分为 CCD 和 CMOS。现在智能手机的摄像头绝大部分都是 CMOS 类型的数字摄像头。对于二者的区别:

①成像材料:CCD 与 CMOS 的名称跟它们成像使用的材料有关,CCD 是“电荷耦合器件”(ChargeCoupled Device)的简称。

而 CMOS 是“互补金属氧化物半导体”(Complementary MetalOxide Semiconductor)的简称。

②功耗:由于 CCD 的像素由 MOS 电容构成,读取电荷信号时需使用电压相当大(至少 12V)的二相或三相或四相时序脉冲信号,才能有效地传输电荷。因此 CCD 的取像系统除了要有多个电源外,其外设电路也会消耗相当大的功率。有的 CCD 取像系统需消耗2~5W 的功率。而 CMOS 光电传感器件只需使用一个单电源 5V 或 3V,耗电量非常小,仅为 CCD 的 1/8~1/10,有的 CMOS 取像系统只消耗 20~50mW 的功率。

③成像质量:CCD 传感器件制作技术起步早,技术成熟,采用 PN 结或二氧化硅(sio2)隔离层隔离噪声,所以噪声低,成像质量好。与 CCD 相比,CMOS 的主要缺点是噪声高及灵敏度低,不过现在随着 CMOS 电路消噪技术的不断发展,为生产高密度优质的 CMOS传感器件提供了良好的条件,现在的 CMOS 传感器已经占领了大部分的市场,主流的单反相机、智能手机都已普遍采用 CMOS 传感器。

2.  OV7725  摄像头简介

        该摄像头主要由镜头、图像传感器、板载电路、FIFO 缓存及下方的信号引脚组成。镜头部件包含一个镜头座和一个可旋转调节距离的凸透镜,通过旋转可以调节焦距,正常使用时,镜头座覆盖在电路板上遮光,光线只能经过镜头传输到正中央的图像传感器,它采集光线信号,采集得的数据被缓存到摄像头背面的 FIFO 缓存中,然后外部器件通过下方的信号引脚获取拍摄得到的图像数据。

        若拆开摄像头座,在摄像头的正下方可看到 PCB 板上的一个方形器件,它是摄像头的核心部件,型号为 OV7725 的 CMOS 类型数字图像传感器。该传感器支持输出最大为 30 万像素的图像 (640x480 分辨率),它的体积小,工作电压低,支持使用 VGA 时序输出图像数据,输出图像的数据格式支持 YUV(422/420)、YCbCr422 以及 RGB565 格式。它还可以对采集得的图像进行补偿,支持伽玛曲线、白平衡、饱和度、色度等基础处理。

3.  OV7725 引脚

        OV7725 传感器采用 BGA 封装,它的前端是采光窗口,引脚都在背面引出。

        图中的非彩色部分是电源相关的引脚,彩色部分是主要的信号引脚。

管脚名称
管脚类型
管脚描述
RSTB
输入
系统复位管脚,低电平有效
PWDN
输入
掉电 / 省电模式 ( 高电平有效 )
HREF
输出
行同步信号
VSYNC
输出
场同步信号
PCLK
输出
像素时钟
XCLK
输入
系统时钟输入端口
SCL
输入
SCCB 总线的时钟线
SDA
I/O
SCCB 总线的数据线
D0 D9
输出
像素数据端口

4.  OV7725 功能框架图

        找到OV7725规格书如下图,其中框住部分是 OV7725 的控制寄存器,它根据这些寄存器配置的参数来运行,而这些参数是由外部控制器通过 SCL 和 SDA 引脚写入的,SCL 与 SDA 使用的通讯协议 SCCB 跟 I2C 十分类似,在 STM32 中我们完全可以直接用 I2C 硬件外设来控制。

        找到如下位置,包含了 OV7725 的通信、控制信号及外部时钟,其中 PCLK、HREF 及VSYNC 分别是像素同步时钟、行同步信号以及帧同步信号,这与液晶屏控制中的VGA 信号是很类似的。RSTB 引脚为低电平时,用于复位整个传感器芯片,PWDN用于控制芯片进入低功耗模式。注意最后的一个 XCLK 引脚,它跟 PCLK 是完全不同的,XCLK 是用于驱动整个传感器芯片的时钟信号,是外部输入到 OV7725 的信号;而 PCLK 是 OV7725 输出数据时的同步信号,它是由 OV7725 输出的信号。XCLK 可以外接晶振或由外部控制器提供,若要类比 XCLK 之于 OV7725 就相当于 HSE 时钟输入引脚与 STM32 芯片的关系,PCLK 引脚可类比 STM32 的 I2C 外设的 SCL 引脚。

        找到如下位置,是感光矩阵,光信号在这里转化成电信号,经过各种处理,这些信号存储成由一个个像素点表示的数字图像。

        找到如下位置,包含了 DSP 处理单元,它会根据控制寄存器的配置做一些基本的图像处理运算。这部分还包含了图像格式转换单元及压缩单元,转换出的数据最终通过D0-D9 引脚输出,一般来说我们使用 8 根据数据线来传输,这时仅使用 D2-D9 引脚。

5.  SCCB时序

5.1  SCCB 的起始、停止信号及数据有效性

这一个可以等价于IIC通讯,只是改了一下名字:

①起始信号:在 SCL(图中为 SIO_C)为高电平时,SDA(图中为 SIO_D)出现一个下降沿,则 SCCB 开始传输。

②停止信号:在 SCL 为高电平时,SDA 出现一个上升沿,则 SCCB 停止传输。

③数据有效性:除了开始和停止状态,在数据传输过程中,当 SCL 为高电平时,必须保证 SDA 上的数据稳定,也就是说,SDA 上的电平变换只能发生在 SCL 为低电平的时候,SDA 的信号在 SCL 为高电平时被采集。

5.2  SCCB 数据读写过程

        在 SCCB 协议中定义的读写操作与 I2C 也是一样的,只是换了一种说法。它定义了两种写操作,即三步写操作和两步写操作。三步写操作可向从设备的一个目的寄存器中写入数据。在三步写操作中,第一阶段发送从设备的 ID 地址+W 标志(等于 I2C 的设备地址:7 位设备地址+读写方向标志),第二阶段发送从设备目标寄存器的 8 位地址,第三阶段发送要写入寄存器的 8 位数据。图中的“X”数据位可写入 1 或 0,对通讯无影响。

        而两步写操作没有第三阶段,即只向从器件传输了设备 ID+W 标志和目的寄存器的地址。两步写操作是用来配合后面的读寄存器数据操作的,它与读操作一起使用,实现 I2C 的复合过程。

        两步读操作,它用于读取从设备目的寄存器中的数据。在第一阶段中发送从设备的设备 ID+R 标志(设备地址+读方向标志)和自由位,在第二阶段中读取寄存器中的 8 位数据和写 NA 位(非应答信号)。由于两步读操作没有确定目的寄存器的地址,所以在读操作前,必需有一个两步写操作,以提供读操作中的寄存器地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SVM原问题与对偶问题

目的:求出我们的f(X),它代表着我们X映射到多维的情况,能够帮我们在多维中招到超平面进行分类。 1.优化问题: 1.1推荐好书: 1.2 优化理论中的原问题: 原问题和限制条件如下: 这是一个泛化性…

【漏洞复现】英飞达医学影像存档与通信系统 WebJobUpload 任意文件上传漏洞

0x01 产品简介 英飞达医学影像存档与通信系统 Picture Archiving and Communicaton System,它是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声,各种X光机,各种红外仪…

LeetCode - 数组 - 四数之和

题目地址 描述 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复)&#x…

cs与msf权限传递以及mimikatz抓取win2012明文密码

简单的介绍 cs与msf的简单介绍 我查找过资料得出,Cobalt Strike 的前身是 Armitage,而 Armitage 又可以理解为 Metasploit Framework 的图形界面版,因此 Cobalt Strike 与 Metasploit Framework 在很多地方都是兼容的,所以我们便…

人工智能 框架 paddlepaddle 飞桨 使用指南 使用例子 线性回归模型demo 详解

安装过程&使用指南&线性回归模型 使用例子 本来预想 是安装 到 conda 版本的 11.7的 但是电脑没有gpu 所以 安装过程稍有变动,下面简单讲下 conda create -n paddle_env117 python=3.9 由于想安装11.7版本 py 是3.9 所以虚拟环境名称也是 paddle_env117 activa…

下载和安装AD19 - Altium Designer 19.1.9 Build 167

虽然有AD24 的安装资源,但是我比较喜欢19 这个数字[doge] 下载 仍然是从毛子网站源头进货:https://rutracker.net/forum/viewtopic.php?t5754276,网盘: https://pan.baidu.com/s/1ic31N4h7HS2FBu7JFll0YQ?pwdvjum 提取码: vjum 安装 压…

【DevOps】深入了解RabbitMQ:AMQP协议基础、消息队列工作原理和应用场景

目录 一、核心功能 二、优势 三、核心概念 四、工作原理 五、交换机类型 六、消息确认 七、持久性和可靠性 八、插件和扩展 九、集群和镜像队列 十、客户端库 十一、管理界面 十二、应用场景 RabbitMQ是一个基于AMQP协议的消息队列中间件,提供高可用、可…

[MRCTF2020]Xor

32位程序 主要逻辑 flagMSAWB~FXZ:J:tQJ"N bpdd}8g for i in range(len(flag)):print(chr(ord(flag[i])^i),end)

react 权限树形结构实现

项目背景 react ant design 实现效果 1 将后台返回的平铺数据 , 转成树形结构 const [roleId, setRoleId] useState() //存储角色id// 弹权限弹窗const empowerHandle async record > {setRoleId(record.roleId)//获取单独的权限const res1 await getPermission({ role…

力扣96. 不同的二叉搜索树

Problem: 96. 不同的二叉搜索树 文章目录 题目描述思路复杂度Code 题目描述 思路 一个数字做根节点的话可能的结果为:其左边数字做子树的组合数字乘以其右边数字做子树的个数之积 1.创建备忘录memo; 2.递归分别求取当前数字左边和右边数字做子树的数量&…

Vue 中 diff 算法原理

1. Diff 概念 vue 基于虚拟 DOM 做更新 。diff 的核心就是比较两个虚拟节点的差异 。Vue 的 diff 算法是平级比较,不考虑跨级比较的情况。内部采用深度递归的方式 + 双指针的方式进行比较。 2. Vue2 Diff 比较流程. 1.1先比较是否是相同节点 key tag 1.2相同节点比较属性,并…

【数据结构与算法 刷题系列】移除链表元素

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:数据结构与算法刷题系列(C语言) 期待您的关注 目录 一、问题描述 二、解题思路 三、源代码实现 一、问题…

基于trunk、yew构建web开发脚手架

trunk 构建、打包 rust wasm 程序;yewweb 前端开发库; 项目仓库yew-web trunk 之前已经简单介绍了trunk,全局安装: $> cargo install --locked trunk常用命令: trunk build 基于wasm-bindgen构建 wasm 程序。trunk watch …

vue17:v-bind对css样式的控制增强

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><styl…

『USB3.0Cypress』FPGA开发(3)GPIF II短包零包时序分析

文章目录 1.时序参数2.FX3_PCLK3.短包和零包3.1短包时序3.2零包ZLP时序 4.传送门 1.时序参数 AN65974文档中明确了操作GPIF II接口时的时序参数&#xff0c;上一篇文章中给出了读写时序图&#xff0c;本篇第二节给出ZLP写周期时序&#xff0c;这里说明相关的时序参数。应该注意…

用户态下屏蔽全局消息钩子 —— ClientLoadLibrary 指针覆盖

目录 前言 一、研究 SetWindowsHookEx 的机制 二、概念验证 三、运行效果分析 四、总结与展望 参考文献 原文出处链接&#xff1a;[https://blog.csdn.net/qq_59075481/article/details/139206017] 前言 SetWindowsHookEx 函数帮助其他人员注入模块到我们的进程&#x…

【代码随想录训练营】【Day 27 and 28】【回溯1-2】| Leetcode 77, 216, 17

【代码随想录训练营】【Day 27 and 28】【回溯1-2】| Leetcode 77, 216, 17 需强化知识点 组合问题&#xff1a;感受遍历的横向和纵向 题目 77. 组合 注意path要深拷贝 class Solution:def combine(self, n: int, k: int) -> List[List[int]]:result []def backtrac…

Kubernetes(k8s) v1.30.1 本地集群部署 安装metallb 支持LoadBalancer 生产环境 推荐 BGP模式部署

1 metallb 安装参考:Kubernetes(k8s) v1.30.1 本地集群部署 默认不支持LoadBalancer metallb来解决-CSDN博客 2 删除 Layer 2 模式 配置 kubectl delete -f IPAddressPool.yaml kubectl delete -f L2Advertisement.yaml kubectl delete -f discuz-srv.yaml 3 配置 k8s Metal…

nacos-opera(k8s)安装问题解决

整理一些关于k8s部署nacos出现的一些恶心的问题 网上说其他说的更改数据库连接都未解决。 在用nacos-opera想安装高可用nacos时连接mysql数据库报错: 报错具体项: No DataSource set 具体就是说没找到数据源。 第一个 检查一下nacos连接数据库配置 : 第二个 检查一下数据库…