【STM32】DMA直接存储器存取

news2024/12/24 10:00:02

1 DMA简介

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

可以直接访问STM32的存储器的,包括运行SRAM、程序存储器Flash和寄存器等等

DMA可以提供外设寄存器和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源

12个独立可配置的通道: DMA17个通道), DMA25个通道)

每个通道都支持软件触发和特定的硬件触发

存储器到存储器转运,需要软件触发,一股脑的转运

外设到存储器的转运,需要硬件触发,触发一次转运一次。

STM32F103C8T6 DMA资源:DMA17个通道)

1.1 存储器映像

类型

起始地址

存储器

用途

ROM

0x0800 0000

程序存储器Flash(主闪存)

存储C语言编译后的程序代码

(下载程序的位置)

0x1FFF F000

系统存储器

存储BootLoader,用于串口下载

0x1FFF F800

选项字节

存储一些独立于程序代码的配置参数

RAM

0x2000 0000

运行内存SRAM

存储运行过程中的临时变量

0x4000 0000

外设寄存器

存储各个外设的配置参数

0xE000 0000

内核外设寄存器

存储内核各个外设的配置参数

ROM:只读存储器,非易失性、掉电不丢失的存储器;

RAM:随机存储器,易失性,掉电丢失的存储器。

1.2 DMA框图

可以看作是CPU+存储器两个东西

Flash是主闪存,SRAM是运行内存。各个外设也可以看出存储器。

寄存器是连接软件和硬件的桥梁,软件读写寄存器相当于控制硬件的执行。

使用DMA转运归类为一类问题:从某个地址取值,再放到另一个地址。

利用总线访问,分为主动和被动。

DMA要有访问的主动权。

产生冲突时,由仲裁器根据通道的优先级决定先后顺序。

DMA既是总线矩阵的主动单元,可以读写各种寄存器,也是AHB上的被动单元。

Flash一般不能写入,需要配置才可以写入。

1.3 DMA的基本结构

左边是外设寄存器站点,右边是存储器站点,包括Flash和SRAM(存储器一般特指Flash和SRAM)。DMA的转运可以是从外设到存储器,也可以是从存储器到外设,有一个方向的参数可以控制;还有一种转运方式存储器到存储器。Flash到SRAM/SRAM到SRAM。

数据宽度的作用是指定一次转运要按多大的数据宽度来进行。

传输寄存器用来指定总共转运几次的,自减计数器。

重装寄存器:当传输寄存器减到0后,是否要自动恢复到最初的值。(单次/循环)

触发源有软件触发和硬件触发,由M2M(Memory to Memory)决定,软件触发的逻辑是:以最快的速度,连续不断的触发DMA,争取早点把传输计数器清零,完成这一轮的转换。软件触发和循环模式不能同时使用。(存储器到存储器的转运)

硬件触发源可以选择ADC、串口、定时器等(一般与外设转运有关)

DMA转运的条件:

(1)开关控制,DMA_Cmd必须使能;

(2)传输计数器必须大于0;

(3)必须要有触发源。

(4)以此循环,开启下一次,但是必须先关闭DMA,再给传输计数器传值。

1.4 DMA请求

DMA触发部分

每个通道都有一个数据选择器,选择硬件触发或者软件触发,EN=0数据选择器不工作;EN=1数据选择器工作。当M2M位=1时选择软件触发,M2M=0时选择硬件触发。

每个通道的触发源都是不一样的,即硬件触发要看通道,软件触发则是随意的。

通道1的硬件触发是ADC1、TIM2的通道3和TIM4的通道1,选择哪个触发源呢?根据外设是否开启的DMA输出来决定的,比如ADC1有个库函数,ADC_DMACmd。三个都开始是或门,一般开启一个。

7个触发源进入到仲裁器,进行优先级判断,最终产生内部的DMA1请求。(默认通道号越小,通道优先级越高,也可以配置)

1.5 数据宽度与对齐

如果转运的时候,数据宽度都一样,那就是正常的一个个转运;如果数据宽度不一样,则按这个表处理。

目标的数据宽度>源端数据宽度,在目标数据前面多出的地方补0;

目标的数据宽度<源端数据宽度,读B1B0,只写入B0;读B3B2,只写入B2,把多出的高位舍弃

1.6 数据转运+DMA

任务是:将SRAM里面的数组DataA搬运到另一个数组DataB中。

外设地址是DataA数组的首地址;存储器地址是DataB数组的首地址;

数据宽度,两个都是uint8_t;

两个站点的地址都自增;

方向参数:外设站点转运到存储器站点了。

传输计数器:7

自动重装暂时不需要;

使用软件触发(存储器到存储器)

复制转运DataA的数据不会消失。

1.7 ADC扫描模式+DMA

左边是ADC扫描模式的执行流程,触发一次7个通道依次进行AD转换,转换结果都放在ADC_DR数据寄存器里,需要做的是在每个单独的通道转换完成后,进行一次DMA数据转运,并且目的地址自增,所以DMA的配置是:外设地址写入ADC_DR这个寄存器的地址,存储器的地址可以在SRAM中定义一个数组ADValue,然后把ADValue的地址当作寄存器的地址;之后数据宽度是uint16_t。外设地址不自增,存储器地址自增;传输方向是外设站点到存储器站点;传输计数器是7;计数器是否重装根据ADC的配置,ADC单次扫描则传输计数器不重装;ADC循环扫描,则传输计数器自动重装;最后是触发选择,这里ADC_DR的值是在ADC单个通道转换完成之后才有效的,所以DMA转运的时机需要和ADC单个通道转换完成同步,所以DMA的触发选择ADC硬件触发。

ADC单个通道完成过不产生中断,但是会产生DMA请求,去触发DMA转运。

手册

2 DMA数据转运

3 DMA+AD多通道

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

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

相关文章

JAVA 版多商家入驻 直播带货 商城系统 B2B2C 之 鸿鹄云商B2B2C产品概述

着互联网的快速发展&#xff0c;越来越多的企业开始注重数字化转型&#xff0c;以提升自身的竞争力和运营效率。在这个背景下&#xff0c;鸿鹄云商SAAS云产品应运而生&#xff0c;为企业提供了一种简单、高效、安全的数字化解决方案。 鸿鹄云商SAAS云产品是一种基于云计算的软件…

Python 小程序之PDF文档加解密

PDF文档的加密和解密 文章目录 PDF文档的加密和解密前言一、总体构思二、使用到的库三、PDF文档的加密1.用户输入模块2.打开并读取文档数据3.遍历保存数据到新文档4.新文档进行加密5.新文档命名生成路径6.保存新加密的文档 四、PDF文档的解密1.用户输入模块2.前提准备2.文件解密…

IDEA利用插件完成properties与yml的互相转换(mac与wins通用)

步骤一、插件安装 点击屏幕左上方的IDEA&#xff0c;然后点击Preferences(相当于wins里的settings) 进入后点击Plugins&#xff0c;在插件商城中搜索并安装 Convert YAML and Properties File 这个插件 二、使用 右键选择你需要转换的配置文件&#xff0c;选择Convert YAML …

TiDB存储引擎的初步认识

文章目录 TiDB简介分布式系统CAP 理论一致性可用性分区容错性 应用场景关系型模型事务ACID 特性原子性一致性隔离性持久性 与传统非分布式数据库架构对比TiDB 分布式数据库整体架构 TiDB简介 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库&#xff0c;是一款同…

java开发的智能聊天机器人_超级AI_支持自动绘画功能

支持Web、Android、IOS、H5等多终端应用。它使用OpenAI的ChatGPT模型实现智能聊天机器人&#xff0c;并支持绘图自动生成Vincent图。未来还将接入国内大型AI模型&#xff0c;如文心一言、统一千问、MOSS等模型&#xff0c;并不断更新以满足用户需求。 AI大脑软件中的AI绘画功能…

音乐制作软件Studio One mac软件特点

Studio One mac是一款专业的音乐制作软件&#xff0c;由美国PreSonus公司开发。该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件…

Zabbix+Grafana

背景 对指标采集 将采集的信息存储 可视化 报警 因为节点上本身就是zabbix&#xff0c;但对应的server在数据中心&#xff0c;不知道一个agent可否服务于多个server端&#xff0c;而且不确定数据中心是否会提供用户。所以还是放弃zabbix 架构

js中for和map的区别

文章目录 一、介绍1.1、for循环1.2、map循环1.3、区别 二、哪个效率高三、最后 一、介绍 在JavaScript中&#xff0c;for循环和map循环都是用于迭代数组元素的常见方法。 1.1、for循环 for循环是一种常见的迭代结构&#xff0c;可以使用循环变量和循环条件来控制循环的次数。…

Selenium IED-安装及简单使用

本文已收录于专栏 《自动化测试》 目录 背景介绍优势特点安装步骤录制脚本总结提升 背景介绍 Selenium 通过使用 WebDriver 支持市场上所有主流浏览器的自动化。 Webdriver 是一个 API 和协议&#xff0c;它定义了一个语言中立的接口&#xff0c;用于控制 web 浏览器的行为。 每…

现代雷达车载应用——第2章 汽车雷达系统原理 2.3节

经典著作&#xff0c;值得一读&#xff0c;英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.3 信号模型 雷达的发射机通常发出精心设计和定义明确的信号。然而&#xff0c;接收到的返回信号是多个分量的叠加&#xff0c;包括目标的反射、杂波…

批量导出SAP表名、字段、字段描述、类型、长度

一、标准表使用表 DD03VT 进入SE16N,输入DD03VT表&#xff0c;填写表名,语言填写1&#xff0c;然后勾选你需要的字段信息 把表名和位子同时排序&#xff0c;得到这样的结果&#xff0c;再右键电子表格就可以批量导出了。 二、自建表&#xff0c;未使用数据元素定义的表格&…

倾斜摄影三维模型重建高程偏差的因素及解决方法分析

倾斜摄影三维模型重建高程偏差的因素及解决方法分析 无人机倾斜摄影免像控点三维重建技术是一种基于无人机航拍图像的三维地形模型构建方法&#xff0c;广泛应用于地理测绘、城市规划和资源管理等领域。然而&#xff0c;在实际应用中&#xff0c;往往会遇到模型高程偏差较大的…

餐饮企业需求-数据准备

需求&#xff1a;统计每日用餐人数与销售额 分析&#xff1a;目前存在两张订单信息表&#xff0c; 1.读取两张表数据 &#xff08;利用pandas库中的函数读取&#xff09; 2.合并两张表数据&#xff08;读取后数据是DataFrame对象&#xff09; 3.筛选出日期、人数、金额字段 4.根…

玩转大数据16:大数据存储与文件格式优化

随着大数据时代的到来&#xff0c;存储和处理海量数据成为了一个重要的挑战。在大数据存储中&#xff0c;选择合适的文件格式对数据的压缩率、读写性能和扩展性起着关键作用。本文将介绍大数据存储的挑战&#xff0c;探讨常见的文件格式&#xff0c;并深入讨论文件格式优化的策…

【华为鸿蒙系统学习】- HarmonyOS4.0开发工具和环境配置问题总结|自学篇

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 官方链接 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装教程 &#xff08;…

SpringBoot应用开发指南(01)

目录 引言1. SpringBoot简介1.1 什么是SpringBoot1.1.1 背景1.1.2 优势1.1.3 核心概念 1.1.3 特点 2. SpringBoot入门2. SpringBoot集成MyBatis3. SpringBoot集成PageHelper3.1 什么是PageHelper 通过切面实现分页4. SpringBoot集成Druid总结 引言 在当今软件开发领域&#xf…

综合布线管理工具价值分析

一、网络运维中存在的问题与现状分析 由于运维人员技术水平、知识储备、工作经验等参差不齐&#xff0c;对运维管理方面的各种标准不熟悉&#xff0c;造成在实际实施过程中线缆使用的长度不合理甚至是规格不符&#xff0c;最终导致机柜线缆混乱&#xff0c;各种飞线&#xff0…

【八】python装饰器模式

文章目录 8.1 装饰器模式简介8.2 装饰器模式作用8.3 装饰器模式构成8.3.1 装饰器模式包含以下几个核心角色&#xff1a;8.3.2 UML类图 8.4 装饰器模式python代码实现8.4.1 基本装饰器的使用8.4.2 多个装饰器的执行顺序8.4.3 带返回值的装饰器的使用8.4.4 装饰器模式-关联类模式…

(第67天)RMAN Duplicate 克隆 PDB

介绍 在之前 NONCDB 版本我们经常使用 RMAN Duplicate 方式来在线搭建 DataGuard,非常方便快捷。从 12C 开始 Oracle 推出了 CDB 架构后,自然也就支持使用 Duplicate 的方式来复制 CDB,但是 12C 时还没有那么智能。 从 18C 开始进行了升级,可以支持使用 RMAN Duplicate 方…

Axure的元件库的使用以及详细案例

目录 元件库的使用 元件介绍 元件的基本使用 矩形、按钮、标题的使用​编辑 图片的使用 图片以及热区的使用 表单元件的使用 表格元件的使用 登录界面 个人简介界面 元件库的使用 元件介绍 Axure提供了一套丰富的元件库&#xff0c;用于快速创建原型中常见的UI界面元素…