stm32 DCMI的知识点

news2024/12/23 17:53:25

1.DCMI的简介

DCMI全称Digital camera interface(数字摄像头接口),是一种可以采集摄像头数据的一种接口。此接口适用于黑白摄像头、X24 和 X5 摄像头,并可以假定所有预处理(如调整大小)都可以在该摄像头模块中执行。支持原始的按行、帧格式来组织的图像数据,如 YUV、 RGB,也支持接收 JPEG 格式压缩的数据流。接收数据时,主要使用 HSYNC 及 VSYNC 信号来同步。

STM32 的 DCMI 接口整体框图
在这里插入图片描述
DCMI 的信号线说明
在这里插入图片描述
2.OV5640 传感器简介

图像传感器是摄像头的核心部件,上述摄像头中的图像传感器是一款型号为 OV5640 的 CMOS
类型数字图像传感器。该传感器支持输出最大为 500 万像素的图像 (2592x1944 分辨率),支持使
用 VGA 时序输出图像数据,输出图像的数据格式支持 YUV(422/420)、 YCbCr422、 RGB565 以及
JPEG 格式,若直接输出 JPEG 格式的图像时可大大减少数据量,方便网络传输。它还可以对采
集得的图像进行补偿,支持伽玛曲线、白平衡、饱和度、色度等基础处理。根据不同的分辨率配
置,传感器输出图像数据的帧率从 15-60 帧可调,工作时功率在 150mW-200mW 之间。

OV5640 管脚说明
在这里插入图片描述
SIO_C 和 SIO_D 引脚:SIO_C 与 SIO_D 使用的通讯协议跟 I2C 十分类似,在 STM32 中我们完全可以直接用 I2C 硬件外设来控制。此两个管脚用于写入和读取OV5640中的控制寄存器。
RESETB :引脚为低电平时,用于复位整个传感器芯片。
PWDN: 用于控制芯片进入低功耗模式
XCLK: XCLK引脚,它跟 PCLK 是完全不同的, XCLK 是用于驱动整个传感器芯片的时钟信号,是外部输入到 OV5640 的信号;而 PCLK 是 OV5640 输出数据时的同步信号,它是由 OV5640 输出的信号。 XCLK 可以外接晶振或由外部控制器提供,若要类比XCLK 之于 OV5640 就相当于 HSE 时钟输入引脚与 STM32 芯片的关系, PCLK 引脚可类比STM32 的 I2C 外设的 SCL 引脚。

OV5640像素数据输出时序
OV5640 采用 SCCB 协议进行控制,而它输出图像时则使用 VGA 时序 (还可用 SVGA、 UXGA,
这些时序都差不多),这跟控制液晶屏输入图像时很类似。 OV5640 输出图像时,一帧帧地输出,
在帧内的数据一般从左到右,从上到下,一个像素一个像素地输出 (也可通过寄存器修改方向),若我们使用 Y2-Y9 数据线,图像格式设置为 RGB565,进行数据输出时, Y2-Y9数据线会在 1 个像素同步时钟 PCLK 的驱动下发送 1 字节的数据信号,所以 2 个 PCLK 时钟可发送 1 个 RGB565 格式的像素数据。像素数据依次传输,每传输完一行数据时,行同步信号 HREF会输出一个电平跳变信号,每传输完一帧图像时, VSYNC 会输出一个电平跳变信号。

DCMI时序图
在这里插入图片描述
3.DCMI编程要点

(1).配置SIO_C,SIO_D的接口,即配置IIC,用于通过IIC接口写入和读取OV5640相关的寄存器。
(2).配置VSYNC(帧同步信号),HSYNC(行同步信号),PIXCLK(像素时钟),D0-D7(像素数据)为复用的IO管脚,配置PWDN,RST管脚为普通的IO输出管脚。
(3).配置DCMI
配置采集模式(连续采集或者单次采集)
配置像素时钟是上升沿有效还是下降沿有效
配置帧同步信号是高电平有效还是低电平有效
配置行同步信号是高电平有效还是低电平有效
配置像素数据的是全采集还是二分之一采集还是四分之一采集
配置像素数据的数据宽度,即用到几根像素数据,一般是8根数据线。
(4).配置DCMI的中断,用于在一帧数据传输完成之后,重新配置DMA。
(5).配置DMA以及DMA的中断,用于从DCMI的数据寄存器中读取像素数据。DCMI 数据寄存器 (DCMI_DR),数字摄像头接口每收到 32 位数据,才触发一次 DMA 请求。 4 字深度的 FIFO 可为 DMA 传输留出足够时间并避免出现 DMA 溢出情况。
(6).启动DCMI以及DMA

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

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

相关文章

术业有专攻!三防加固平板助力工业起飞

在日常使用中的商业电脑比较追求时效性,以市场定位做标准,内部元件只需满足一般要求就行,使用寿命比较短。而三防平板电脑是主要运用在复杂、恶劣的环境下所以在需求方面较高,需要保证产品在恶劣条件下正常使用,满足行业领域的需求…

168基于matlab的六自由度并联摇摆台的反解控制算法

基于matlab的六自由度并联摇摆台的反解控制算法,stewart平台,配有GUI界面,可以自定义角度,杆长等参数。设定动平台位姿即能得到电机参数。程序已调通,可直接运行。 168 六自由度并联摇摆台 反解控制算法 (xiaohongshu.…

CentOS7.6安装RocksDB

一、简介 RocksDB是使用C编写的嵌入式kv存储引擎,其键值均允许使用二进制流。由Facebook基于levelDB开发, 提供向后兼容的levelDB API。 RocksDB针对Flash存储进行优化,延迟极小。RocksDB使用LSM存储引擎,纯C编写。Java版本Rock…

Mysql数据库主从集群从库Slave因为RelayLog过多过大引起服务器硬盘爆满生产事故实战解决

Mysql数据库主从集群从库slave因为RelayLog过多过大引起从库服务器硬盘爆满生产事故实战解决 一、MySQL数据库主从集群概念 MySQL数据库主从集群是一种高可用性和读写分离的数据库架构,它基于MySQL的复制(Replication)技术来同步数据。在主…

前端|Day2:列表、表格、表单(黑马笔记)

Day2:列表、表格、表单 目录 Day2:列表、表格、表单一、列表1.无序列表2.有序列表3. 定义列表 二、表格1.基本使用2. 表格结构标签(了解)3.合并单元格 三、表单1.input 标签2.input 标签占位文本3.单选框4.上传文件5.多选框6.下拉菜单7.文本域8.label 标…

【wails】(1):使用go做桌面应用开发,wails框架入门学习,在Linux上搭建环境,运行demo项目,并打包测试

1,视频地址 https://www.bilibili.com/video/BV1fK421b7QC/ 【wails】(1):使用go做桌面应用开发,wails框架入门学习,在Linux上搭建环境,运行demo项目,并打包测试 2,参考…

第四篇【传奇开心果系列】Python文本和语音相互转换库技术点案例示例:pyttsx3自动化脚本经典案例

传奇开心果短博文系列 系列短博文目录Python文本和语音相互转换库技术点案例示例系列 短博文目录前言一、雏形示例代码二、扩展思路介绍三、批量处理文本示例代码四、自定义语音设置示例代码五、结合其他库和API示例代码六、语音交互系统示例代码七、多语言支持示例代码八、添加…

EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比

EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比 目录 EI级 | Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间序列预测对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 【EI级】Matlab实现TCN-GRU-MATT、TCN-GRU、TCN、GRU多变量时间…

区块链革命:Web3如何改变我们的生活

随着技术的不断发展,区块链技术作为一种去中心化的分布式账本技术,正逐渐成为数字世界的核心。Web3作为区块链技术的重要组成部分,正在引领着数字化时代的变革,其影响已经开始渗透到我们生活的方方面面。本文将深入探讨区块链革命…

Linux 主机数据拷贝与 Linux 服务器之间拷贝文件的方法

Linux 主机数据拷贝与 Linux 服务器之间拷贝文件的方法 1. 使用 scp 命令2. 使用 rsync 命令3. 使用 scp 和 rsync 的图形界面工具4. 使用 FTP/SFTP 协议总结与比较 在 Linux 系统中,数据拷贝是日常操作中的常见需求,尤其是在不同主机或服务器之间进行文…

【MATLAB GUI】 2. 设计一个闹铃/定时器(静态文本、可编辑文本、普通按钮、复选框)

看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记 任务要求该闹铃/定时器可以设定时间、选择是否播放音乐 设计界面,使用了静态文本、可编辑文本、普通按钮、复选框 修改属性string,保存为alarm.fig 在设定时间右边的可编辑文…

WPF中样式

WPF中样式&#xff1a;类似于winform中控件的属性 <Grid><!-- Button属性 字体大小 字体颜色 内容 控件宽 高 --><Button FontSize"20" Foreground"Blue" Content"Hello" Width"100" Height"40"/></G…

网络安全综合实验

1.实验拓扑 在这里注意因为第四个要求配置双击热备&#xff0c;我们可以第一时间配置&#xff0c;避免二次重复配置消耗时间 4、FW1和FW3组成主备模式的双机热备 具体配置位置在系统-->高可靠性-->双机热备-->配置 这里上行链路有两组&#xff0c;分别为电信和移动&…

零基础入门金融风控-贷款违约预测Task2 数据分析

Task2 数据分析 此部分为零基础入门金融风控的 Task2 数据分析部分&#xff0c;带你来了解数据&#xff0c;熟悉数据&#xff0c;为后续的特征工程做准备&#xff0c;欢迎大家后续多多交流。 赛题&#xff1a;零基础入门数据挖掘 - 零基础入门金融风控之贷款违约 目的&#…

网站管理新利器:免费在线生成 robots.txt 文件!

&#x1f916; 探索网站管理新利器&#xff1a;免费在线生成 robots.txt 文件&#xff01; 你是否曾为搜索引擎爬虫而烦恼&#xff1f;现在&#xff0c;我们推出全新的在线 robots.txt 文件生成工具&#xff0c;让你轻松管理网站爬虫访问权限&#xff0c;提升网站的可搜索性和…

TLS、运输层安全协议

目录 运输层安全协议 1 协议 TLS 的要点 1.1 协议 TLS 的位置 1.2 TLS 与应用层协议独立无关 1.3 协议 TLS 具有双向鉴别的功能 1.4 TLS 建立安全会话的工作原理 TLS 的握手阶段 TLS 的会话阶段 1.5 TLS 传送的记录格式 2 协议 TLS 必须包含的措施 运输层安全协议 现…

Eclipse - Makefile generation

Eclipse - Makefile generation References right mouse click on the project -> Properties -> C/C Build -> Generate Makefiles automatically 默认会在 Debug 目录下创建 Makefile 文件。 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

反射 动态代理

目录 一、什么是反射&#xff1f; 二、获取class对象的三种方式​编辑 1、Class.forName("全类名")&#xff1b; 2、类名.class 3、对象.getClass()&#xff1b; 4、代码实现 三、反射获取 1、利用反射获取构造方法 ①、示例代码&#xff1a;​编辑 ②、获…

SICTF round#3 web

1.100&#xff05;_upload url可以进行文件包含&#xff0c;但是flag被过滤 看一下源码 <?phpif(isset($_FILES[upfile])){$uploaddir uploads/;$uploadfile $uploaddir . basename($_FILES[upfile][name]);$ext pathinfo($_FILES[upfile][name],PATHINFO_EXTENSION);$t…

vue的十大面试题详情

1 v-show与v-if区别 v-if与v-show可以根据条件的结果,来决定是否显示指定内容&#xff1a; v-if: 条件不满足时, 元素不会存在. v-show: 条件不满足时, 元素不会显示(但仍然存在). <div id"app"><button click"show !show">点我</but…