STM32-DMA

1 DMA简介

DMA(Direct Memory Access),中文名为直接内存访问,它是一些计算机总线架构提供的功能,能使数据从附加设备(如磁盘驱动器)直接发送到计算机主板的内存上。对应嵌入式处理器来说,DMA可以提供外设和存储器之间,或存储器与存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源。

图片

1.1 DMA传输的4种情况

DMA涉及的数据传输分为四种情况:

  • 外设到内存

  • 内存到外设

  • 内存到内存

  • 外设到外设

图片

它们本质上是一样的,都是从内存的某一区域传输到内存的另一区域,外设的数据寄存器本质上就是内存的一个存储单元。

1.2 典型的DMA结构

典型的DMA控制器的结构示意图如下:

图片

DMA控制器内部包含4中寄存器/计数器:

  • 地址寄存器:包括源地址和目的地址寄存器

  • 状态寄存器:用于寄存DMA传输前后的状态

  • 控制寄存器:用于选择DMA控制器的操作类型、工作方式、传输方向和有关参数

  • 字节计数器:用于控制传输数据块的长度

DMA控制器需要连接包括:

  • 与外设连接:用于接受外设发出的DMA操作请求和在DMA期间对外设进行控制

  • 与CPU连接:用于请求总线的控制权

  • 与三大总线连接:用于进行总线控制

DMA控制器可以像CPU那样获得总线的控制权,因此可以完成外设与存储器之间的数据高速交换。

如下图,当外设需要与存储器之间进行DMA传输时由DMA控制器提出总线请求,从CPU获得总线授权后,由DMA控制器控制数据的传输。

图片

2 STM32中的DMA

2.1 STM32的DMA资源概述

STM32F103内部有2 个DMA控制器:

  • DMA1有7个通道

  • DMA2有5个通道,仅存大容量产品中

每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。

此外,每个DMA还有一个仲裁器来协调各个请求的优先权。

STM32F103中的DMA有以下一些特性:

  • 独立的源和目标数据区的传输宽度(字节、半字、全字)

  • 每个通道都有3个事件标志(DMA 半传输,DMA 传输完成和 DMA 传输出错)

  • 存储器和存储器间的传输

  • 外设和存储器,存储器和外设的传输

  • 闪存、SRAM、外设的 SRAM、APB1、APB2 和 AHB 外设均可作为访问的源和目标

2.2 STM32的DMA框图

STM32F103的DMA框图如下:

图片

  • ①代表DMA请求:当外设准备通过DMA传输数据时,需先给DMA控制器发送请求。

  • ②代表DMA通道:DMA1有7 个,DMA2有 5个,虽然每个通道可以接收多个外设的请求,但是同一时间只能接收一个。

  • ③代表总裁器:用于处理当发生多个 DMA 通道请求时的响应顺序。仲裁器管理 DMA 通道请求分为两个阶段:

    • 第一阶段:软件阶段,可以在DMA_CCRx寄存器中设置,有4个等级:非常高,高,中,低

    • 第二阶段:硬件阶段,若两个及以上的DMA通道请求设置的优先级一样,则取决于通道编号,越低优先权越高

3 总结

本篇介绍了DMA的一些基础知识,包括DMA传输的4种情况、典型的DMA结构以及STM32的DMA相关基础介绍。

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

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

相关文章

LINE自动回复:快速回复提升客服效率

2023年,LINE在其4个主要市场:对话、日本、台湾和泰国拥有约1.78亿月活跃用户。 LINE不仅是一个通讯软件,更提供广泛的服务,包括语音和视讯通话、群组、发布社交帖子及商务功能。近年来,越来越多的企业在客户服务中使用…

雷士明轩好用吗?测评师对比横评书客、雷士、米家哪款好

如今,大多数人的日常工作和学习都离不开电子设备,长时间盯着屏幕容易造成眼睛疲劳和视力下降。全国近视率占多数的还是青少年,护眼台灯作为一种照明设备,具有调节光线亮度和色温的功能,可以有效减少眼睛的疲劳&#xf…

Day_81-87 CNN卷积神经网络

目录 一. CNN卷积神经网络与传统神经网络的不同 1. 模型图 2. 参数分布情况 3. 卷积神经网络和传统神经网络的层次结构 4. 传统神经网络的缺点: 二. CNN的基本操作 1. 卷积 2. 池化 三. CNN实现过程 1. 算法流程图 2. 输入层 3. 卷积层 4. 激活层 5. 池化层 6. 全连…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven目录结构和idea的整合

Maven工程目录结构约束(约束>配置>代码) 项目名 src【书写源代码】 main【书写主程序代码】 java【书写java源代码】resources【书写配置文件代码】 test【书写测试代码】 java【书写测试代码】 pom.xml【书写Maven配置】 测试步骤(进入项目名根目录【在根…

MySQL 数据库常用操作语句的总结

1、创建数据库: CREATE DATABASE database_name;2、删除数据库: DROP DATABASE database_name;3、选择数据库: USE database_name;4、创建表: CREATE TABLE table_name (column1 datatype [condition],column2 datatype [cond…

[LINUX使用] iptables tcpdump wireshark tshark

iptables: 收到来自 10.10.10.10 的数据后都丢弃 iptables -I INPUT -s 10.10.10.10 -j DROP 直接 reject 来自 10.10.10.* 网段的数据 iptables -I INPUT -s 10.10.10.0/24 -j REJECT tcpdump: dump eth0的数据到本地 tcpdump -i eth0 -w dump.pcap 只抓 目的地址是 10…

【Docker】docker入门之dockerfile编写

文章目录 前言一、docker是什么?docker介绍docker指令 二、docker有什么用?三、docker怎么用?FROMMAINTAINERRUNENVWORKDIRCOPY、ADDUSEREXPOSE实例 四、docker注意事项docker容器中使用某些宿主机设备时需要额外的权限docker容器中文件内容中…

发布自定义node包,实现自定义脚本命令

比方说yarn,cnpm,vite等命令,无需执行node xxxx,可以自定义执行并完成一些操作 创建一个文件夹如下 在index.js中输入 #!/usr/bin/env node console.log(hello world);在package.json中添加 {...,"bin": {"pack…

利用微调的deberta-v3-large来预测情感分类

前言: 昨天我们讲述了怎么利用emotion数据集进行deberta-v3-large大模型的微调,那今天我们就来输入一些数据来测试一下,看看模型的准确率,为了方便起见,我直接用测试集的前十条数据 代码: from transfor…

JS原理-笔记(1/3)

JS原理-笔记(1/3) 知识点自测 今天课程中涉及到的已学习知识点 函数的call方法-文档链接 // 以指定的this调用函数,并通过 从第二个参数开始依次传递参数 function func(food,drink){console.log(this)console.log(food)console.log(drink)…

【C语言】数据结构的基本概念与评价算法的指标

1. 数据结构的基本概念 1.1 基本概念和术语 1.1.1 数据 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料 1.1.2 数据元素 数据元素是数据的基本单位,通常作为一个整体进行考虑和…

vue知识点————插槽 slot

slot 插槽 在父组件中引用的子组件 在父组件中写入百度 可在子组件slot插槽中展示出 父组件 <template><div id"app"><child url"https://www.baidu.com">百度</child></div> </template><script> import chil…

如何评估以及优化谷歌ads

在广告投放一段时间后&#xff0c;应该对广告的效果有所了解。如果您的目标是增加销量和网站流量&#xff0c;米贸搜谷歌推广建议请考虑以下问题&#xff1a; 1.哪些关键字为广告带来的点击最多&#xff1f; 2.客户进行搜索时使用的是何种设备&#xff1f;他们来自何处&#xf…

C语言是否快被时代所淘汰?

今日话题&#xff0c;C语言是否快被时代所淘汰&#xff1f;在移动互联网的冲击下&#xff0c;windows做的人越来越少&#xff0c;WP阵营没人做&#xff0c;后台简单的php&#xff0c;复杂的大数据处理的java&#xff0c;要求性能的c。主流一二线公司基本上没多少用C#的了。其实…

ChatGLM学习

GLM paper&#xff1a;https://arxiv.org/pdf/2103.10360.pdfchatglm 130B&#xff1a;https://arxiv.org/pdf/2210.02414.pdf 前置知识补充 双流自注意力 Two-stream self-attention mechanism&#xff08;双流自注意机制&#xff09;是一种用于自然语言处理任务的注意力机制…

Feign负载均衡写法

Feign主要为了面向接口编程 feign是web service客户端&#xff0c;是接口实现的&#xff0c;而ribbon是通过微服务名字访问通过RestTemplate调用的&#xff0c;如下&#xff1a; 在Feign的实现下&#xff0c;我们只需要创建一个接口并使用注解的方式来配置它&#xff08;类似…

AcWing 4405. 统计子矩阵(每日一题)

如果你觉得这篇题解对你有用&#xff0c;可以点点关注再走呗~ 题目描述 给定一个 NM 的矩阵 A&#xff0c;请你统计有多少个子矩阵 (最小 11&#xff0c;最大 NM) 满足子矩阵中所有数的和不超过给定的整数 K ? 输入格式 第一行包含三个整数 N,M 和 K。 之后 N 行每行包含 …

代码随想录算法训练营day58 | LeetCode 739. 每日温度 496. 下一个更大元素 I

739. 每日温度&#xff08;题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台&#xff09; 思路&#xff1a;新学习的单调栈做法&#xff0c;实质就是用一个栈存储中间结果。在针对数组某个元素的结果没找出来之前&#xff0c;将数…

OTFS-ISAC雷达部分最新进展(含matlab仿真+USRP验证)

OTFS基带参数设置 我将使用带宽为80MHz的OTFS波形进行设计&#xff0c;对应参数如下&#xff1a; matlab Tx仿真 Tx导频Tx功率密度谱 帧结构我使用的是经典嵌入导频帧结构&#xff0c;Tx信号波形的带宽从右图可以看出约为80Mhz USRP验证 测试环境 无人机位于1m处 Rx导频Rx…

kubernetes 之 minikube折腾记

参考官网教程&#xff0c;链接&#xff1a; https://minikube.sigs.k8s.io/docs/start/ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube安装完启动minikube&#xff1a;…