STM32(十二):DMA直接存储器存取

DMA(Direct Memory Access)直接存储器存取

        DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源。(运行内存SRAM、程序存储器Flash、寄存器)

        12个独立可配置的通道: DMA1(7个通道)DMA2(5个通道)

        每个通道都支持软件触发(存储器和存储器)特定的硬件触发(外设和存储器)

        每个DMA的硬件触发源是不一样的。

        STM32F103C8T6 DMA资源:DMA1(7个通道)。

存储器映像

        选项字节里主要存的是Flash的读保护、写保护、还有看门狗等等配置。 

DMA框图

        DCode专门访问Flash,系统总线访问其他东西。

        DMA总线只有一条,所以所有的通道只能分时复用这一条DMA总线。如果产生了冲突,那就会由仲裁器根据通道的优先级决定谁先用,谁后用。

        如果DMA和CPU都要访问同一个目标,那么DMA就会暂停CPU的访问,以防止冲突。不过总线仲裁器仍然会保证CPU得到一半的总线带宽,使CPU也能正常工作。

        AHB重设备,也就是DMA寄存器,DMA作为一个外设,自己也会有享用的配置寄存器。所以DMA既是总线矩阵的主动单元,可以读写各种寄存器;也是AHB总线上的被动单元。

        DMA请求就是DMA的硬件触发源,比如ADC转换完成,串口接收到数据,需要触发DMA转运数据的时候,就会通过DMA向硬件触发信号,之后DMA就可以执行数据转运的工作了。

        DMA内部的多个通道可以独立的数据转运,AHB中设备用于配置DMA参数。

        Flash 只读。

DMA基本结构

        传输计数器是自减计数器,每转运一次,计数器的值减1,减到0转运定制,之前自增的地址也会恢复到起始的位置。

        M2M存储器到存储器的意思,当给M2M位为1时,DMA就会选择软件触发,这里软件触发是以最快的速度,连续不断的触发DMA,争取早日把传输计数器清零,完成这一轮转换。

        硬件触发,例如ADC转换完成,串口收到数据,定时时间到等等。

        传输计数器再DMA关时候写数据,再开。

        硬件触发:每个通道的硬件触发源都不同,必须使用它所在通道。 

        软件触发:可以任意选择DMA通道。

        对于通道1的触发源,有ADC1、TIM2_CH3、TIM4_CH1,至于是哪个,是对应外设是否开启DMA输出来试除。例如使用ADC1就会有ADC_DMACmd,开启ADC1这一路输出,它才有效。

 数据宽度与对齐

数据转运+DMA

ADC扫描模式+DMA 

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

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

相关文章

[数据集][目标检测]井盖丢失未盖破损检测数据集VOC+YOLO格式2890张5类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2890 标注数量(xml文件个数):2890 标注数量(txt文件个数):2890 标注…

页面要突破手机安全区域来全屏显示(沉浸式模式显示),其他页面不需要,如何设置安全区域文字颜色

#效果图 ##思路遇到的问题 在aboutToAppear中使用window模块的 getLastWindow 和 setWindowLayoutFullScreen两个方法来处理全屏显示 设置沉浸式模式的特点: 在任何一个页面中设置过一次之后,其他页面也会跟着全屏显示 这么处理会出现问题&#xff1a…

在Ubuntu 20.04上安装Nginx的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Nginx 是世界上最流行的 Web 服务器之一,负责托管互联网上一些最大和流量最高的网站。它是一个轻量级选择&#xff0c…

如何使用Spoon连接data-integration-server并在服务器上执行转换

1.建立连接 2.新建转换或任务 3.右键[子服务器],新建一个服务器连接(data-integration-server服务器的连接信息) 4.右键[Run configurations],新建一个执行连接,勾选相应的选项即可: 5.选择服务器运行即可! 6.最后,你可以通过服务器端的WEB查看执行日志…

猫眼电影字体破解(图片转码方法)

问题 随便拿一篇电影做样例。我们发现猫眼的页面数据在预览窗口中全是小方框。在当我们拿到源码以后,数据全是加密后的。所以我们需要想办法破解加密,拿到数据。 破解过程 1.源码获取问题与破解 分析 在我们刚刚请求url的时候是可以得到数据的&#xff…

【MySQL】MySQL操作介绍

MySQL操作 认识 MySQL什么是 MySQL关系型数据库的组成结构"客户端-服务器"结构 数据库的基本操作创建数据库查看数据库删除数据库使用数据库 数据类型整型浮点类型字符串类型日期类型总结 表的操作创建表查看表查看表的信息删除表 数据的基础操作插入数据指定列插入全…

部署后端WebSocket服务到AWS云服务器

目录 1.创建AWS账户2.选择EC2实例3.配置EC2实例4.使用VSCode连接到EC2实例5.部署WebSocket服务6.配置域名和SSL(可选)7.监控和维护 1.创建AWS账户 如果你还没有AWS账户,你需要先在AWS官网注册一个。 2.选择EC2实例 登录到AWS管理控制台。搜…

人工智能领域的微调指的是什么?

目录 微调的原理 微调的过程 微调的优点 微调的应用场景 微调的挑战 总结 在人工智能领域,微调(fine-tuning)是指在预训练模型的基础上,通过在特定领域或任务上进一步训练模型,从而优化模型性能的过程。微调通常…

Java过滤器和监听器

1. 过滤器 1.1. 过滤器 使用baseServlet的优点:方便进行乱码的统一处理,但是如果不使用servlet,在进行中文乱码处理时就需要在每个servlet中书写,比较麻烦 问题:重复的代码在项目中多次使用书写 解决:过滤…

2024 第七届“巅峰极客”网络安全技能挑战赛初赛 Web方向 题解WirteUp

EncirclingGame 题目描述:A simple game, enjoy it and get the flag when you complete it. 开题,前端小游戏,红点出不去就行 直接玩通关了 看看如何不玩也能拿到flag,flag存储在后端php文件内,前端找不到。 看一下…

【原创】java+springboot+mysql校园二手商品交易网设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

【MySQL】MySQL基础

目录 什么是数据库主流数据库基本使用MySQL的安装连接服务器服务器、数据库、表关系使用案例数据逻辑存储 MySQL的架构SQL分类什么是存储引擎 什么是数据库 mysql它是数据库服务的客户端mysqld它是数据库服务的服务器端mysql本质:基于C(mysql&#xff09…

QT 编译报错:C3861: ‘tr‘ identifier not found

问题: QT 编译报错:C3861: ‘tr’ identifier not found 原因 使用tr的地方所在的类没有继承自 QObject 类 或者在不在某一类中, 解决方案 就直接用类名引用 :QObject::tr( )

【舍入,取整,取小数,取余数丨Excel 函数】

数学函数 1、Round函数 Roundup函数 Rounddown函数 取整:(Int /Trunc)其他舍入函数: 2、Mod函数用Mod函数提取小数用Mod函数 分奇偶通过身份证号码判断性别 1、Round函数 Roundup函数 Rounddown函数 Round(数字,保留几位小数)(四…

SOEX从去中心化的链上社交关系到创收策略

是时候摆脱传统的在线社区,真正进入 Web3 了,利用区块链的力量,并理解社交互动的意义远不止分享内容或复制交易。代币化将赋能参与提升到一个全新的水平,并带来一系列新的机会。 社交网络可以发挥强大的作用,尤其是从…

文件下载-前端发请求后端返回二进制文件

1.前端发请求(axios为例) request({url: "/export",method: post,responseType: blob,data: data}).then((response) > {debuggerif (response.type application/json) {alert("设置时间或当前时间暂无数据");} else {const bl…

Android的logcat日志详解

Android log系统 logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息。下面介绍 adb logcat中的详细参数命令以及如何才能高效的打印日志,或把日志保存到我们指定的位置。 可以输入 adb logcat --help,查看一下一些简…

VMware vSphere5.0关闭虚拟机电源时,报错从ESXI主机接收到错误

ESXI和VCENTER都是5.0版本的,有台虚拟机关机报错提示从ESXI主机接受到意外错误 具体报错信息如下: 从VCENTER平台对该虚拟机做任何操作都无法生效,后来查看了虚拟机的网络和端口,发现SSH能正常联通,进入虚拟机后使用命…

刷题DAY30

求数列的和 题目&#xff1a;数列的定义如下&#xff1a;数列的第一项为n&#xff0c;以后各项为前一项的平方根&#xff0c;求数列的前m项的和 输入&#xff1a;输入数据有多组&#xff0c;每组占一行&#xff0c;由两个整数n&#xff08;n<10000&#xff09;和m(m<10…

使用i2c子系统驱动i2c oled模块

1、使用linux内核里面的i2c子系统来驱动i2c oled 屏幕 代码如下: #include "linux/i2c.h" #include <linux/module.h> #include <linux/poll.h>#include <linux/fs.h> #include <linux/errno.h> #include <linux/miscdevice.h> #incl…