STM32-DMA直接存储器存取

news2024/10/12 5:34:25

一、概述

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

  • DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源
  • 12个独立可配置的通道:DMA1(7个通道),DMA2(5个通道)
  • 每个通道都支持软件触发和特定的硬件触发

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

存储器映像

DMA框图,如下:

DCode总线是专门访问Flash的,系统总线是访问其他东西的,由于DMA要转运数据,所以DMA也必须要有访问的主动权。

虽然DMA有多个通道可以独立转运数据,但DMA总线只有一个,仲裁器会根据通道的优先级来决定谁先用,谁后用。在总线矩阵这里也有个仲裁器,当CPU和DMA同时访问同一个目标,那么DMA就会暂停CPU的访问,以防止冲突,不过总线仲裁器,仍然会保证CPU得到一半的总线带宽,使CPU也能正常工作。

DMA请求就是DMA的硬件触发源,比如ADC转换数据,需要转运数据就需要通过这条线路,向DMA发出硬件触发信号,之后DMA就可以执行转运的动作了,数据寄存器都是可以正常读写


 DMA基本结构,如下:

外设寄存器其实就是外设与存储器用于连接的通道,也就是转换机构。外设寄存器也能写Flash 、SRAM的地址,存储器也能写外设寄存器的地址。

传输计数器是用来指定总共需要转运几次的,这个传输寄存器是一个自减寄存器,比如给它指定5次,没转运一次就会减1,如果不使用自动重装器,减为0时就是转运结束。使用这个自动重装器,当传输计数器减为0时会立即重装到初始值为5。如果不重装,就单次模式转运,重装就是循环模式转运。修改传输计数器时,要使DMA_Cmd先使能。

接着就是触发源,有软件触发源和硬件触发源,具体是哪个由M2M(memory to memory)参数决定,当我们给这个M2M为1时,就会进行软件触发,它这个软件触发的逻辑是以最快的速度,连续不断地触发DMA,争取早日把传输计数器清零,完成这一轮的转换。自动重装器和软件触发不能同时使用。软件触发一般就是应用存储器到存储器的转运。硬件(这里硬件可以理解为外设)触发一般与外设有关的转运,比如ADC转换完成,来触发DMA转运。

这开关控制就是用DMA_Cmd()进行使能。

DMA请求映像

EN位决定这个寄存器工作不工作。EN位为0表示不工作,EN位为1表示工作。

固定的硬件优先级进行优先级判断,通道号越小,优先级越高

数据宽度与对齐:

源端宽度小于目标宽度时,数据的高位补零,也就是右对齐; 源端宽度小大于目标宽度时,数据的高位丢弃掉,

数据转运+DMA:

DMA外设地址可以自增,DMA存储器地址也可以自增,

 

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

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

相关文章

【自动化】Java Access Bridge 使用说明

【自动化】Java Access Bridge 使用说明 Java Access Bridge是一项在Microsoft Windows动态链接库(DLL)中公开Java Accessibility API的技术,使实现Java Accessibility API的 Java应用程序对Microsoft Windows系统上的辅助技术可见。 开启jab服务 1 、首先获取java版本信…

【自用视频笔记】25计算机基础综合408大纲新增考点 多处理机调度

文章目录 多处理机调度指标及性能多处理器分类:性能指标 调度的评价指标进程分配方式:静态分配和动态分配、进程的调度:通常采用FCFS 线程调度方式多处理机调度评价指标 25计算机基础综合 多处理机原视频1 多处理机原视频2 多处理机调度 先…

电子产品做高温老化性能测试可行性方案

1.1引言 1.2背景 1.3目的 2.系统概述 2.1 系统架构 2.2 功能模块 3. 接口 3.1硬件接口 3.3. 通信接口 3.4 软件接口 3.5 数据存储和处理 4. 功能需求 4.1 数据采集 4.1.1 采集和监控数据 4.2 实时监测和显示 4.2.1 实时显示电流电压曲线图 4.3…

打包上线不确定接口IP以及端口 如何处理

前言 本文主要讲述如何在vue项目打包后动态修改请求服务器接口的ip和端口的修改,其他的配置可参考此方法进行。 在Vue项目中一般都将配置文件写在 .env.development / .env.production 文件当中,但是如果仅仅是因为修改配置文件又重新打包一次就会很繁琐…

如何将数据输入到神经网络中(How to Input Data into a Neural Network)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

k8s中pod管理

一、Pod的基本概念 定义:Pod是Kubernetes中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型。 组成:Pod由一个或多个容器组成,这些容器共享网络、存储等资源,并作为一个整体被调度和管…

PPT电脑怎么录屏?多达4种录屏软件录制 PPT 指南

在日常的工作、学习以及知识分享领域,PPT 扮演着不可或缺的角色。而将 PPT 内容录制下来更是有诸多用途,比如教师制作线上教学课件、职场人士分享项目方案、培训师准备培训素材等。要想获得优质的 PPT 录制效果,合适的录屏软件必不可少。接下…

5G路由器工业物联网PLC模块通讯应用

工业物联网在计算机互联网的基础上,利用传感技术、数据通信等技术,构建一个覆盖世界万物的“Internet of Things”,其实质是利用传感技术,通过联网实现物的自动识别和信息的互联与共享。5G工业路由器连接现场传感设备等实施数据采…

微知-NVIDIA Bluefield DPU的E-Series和P-Series区别?(功率75vs150,是否需要ATX额外供电)

背景 本文介绍了NVIDIA的Bluefield的产品分裂E和P系列,了解这部分,可以快速获取CPU主频,还能根据产品型号字母快速获取数据。 区别 E 系列 DPU:通过 PCIe x16 接口提供最大 75W 的系统电源。 P 系列 DPU:通过 PCIe …

植物大战僵尸杂交版

最新版植物大战僵尸杂交版 最近本款游戏火爆 下载资源如下: win版本:2.3.7 链接:下载地址 提取码:9N3P Mac(苹果版本):2.0.0 链接:下载地址 提取码:Bjaa 介绍&#xff…

AVL树----java版

一.AVL树是什么 在前面的学习中我们已经学习了二叉搜素树,二叉搜素树主要用于查询。二叉搜素树的查询效率为o(n),当树有序的时候二叉搜素树就变为一颗单分支的树,树的高度为n,所以最坏情况下时间复杂度为o(n)。 二叉搜索树虽可以缩短查找的效…

单臂路由实现vlan间互访

划分vlan 可以隔离广播域,但vlan 之间无法通信。既能隔离广播域,防止广播风暴的发生,又能实现vlan 之间的通信,就需要用到网络层的路由器,可以通过路由器,以单臂路由的方式来实现vlan 之间的通信。 以下是在神州交换机和路由器上实现单臂路由实现 VLAN 间互访的配置代码示…

牵手红娘:牵手App打造多元化标签策略,精准寻找“理想型”

如今,线上恋爱平台已经成为单身青年探索爱情的新大陆。在这个快节奏的时代,如何在线上恋爱平台准确、迅速地找到那个与自己心灵相契的另一半,成为了无数单身男女心中的迫切愿望。拥有共同的兴趣爱好、相似的三观,对当代年轻人来说…

实现页面下拉框数据从后台表格去重取值并且含有对应关系

当地区选择变化时&#xff0c;动态更新客户名称下拉框&#xff08;效果图如下&#xff09; 实现步骤&#xff0c;html部分 <form class"form-horizontal m-t"><div class"row"><div class"col-sm-6"><div class"form…

前端转换double数据,保留两位小数

Number Number(1.00) 1 Number(1.10) 1.1 Number(1.101) 1.101 要想前端展示页面按 1.00展示1&#xff0c;1.10 展示1.1 需要套一个number() 1.1 保留两位小数&#xff0c;并三位一个分隔符 indexView.value[key] formatNumber(indexView.value[key].toFixed(2))//格式…

Springboot 整合 Java DL4J 实现企业门禁人脸识别系统

&#x1f9d1; 博主简介&#xff1a;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;…

Linux系列-常见的指令(二)

&#x1f308;个人主页&#xff1a; 羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” mv 剪切文件&#xff0c;目录 重命名 比如说&#xff0c;我们在最开始创建一个新的文件hello.txt 然后我们将这个文件改一个名字&#xff0c;改成world.txt 所以&#xff0c;…

C++ 算法学习——1.8 快速幂算法

背景知识&#xff1a; 1.位运算 在C中&#xff0c;位运算是对整数类型的位进行操作的一种运算方式。常见的位运算符包括按位与&#xff08;&&#xff09;、按位或&#xff08;|&#xff09;、按位异或&#xff08;^&#xff09;、取反&#xff08;~&#xff09;、左移&am…

Unity MVC框架1-2 实战分析

该课程资源来源于唐老狮&#xff0c;吃水不忘打井人&#xff0c;不胜感激 Unity MVC框架演示 1-1 理论分析-CSDN博客 首先你需要知道什么mvc框架&#xff0c;并且对三个层级有个比较清晰的认识&#xff0c;当然不清楚也好&#xff0c;下面例子中将会十分细心地让你理解&#x…

“CFD+水务”,积鼎通用流体仿真软件VirtualFlow助力水处理能力提升

在快速发展的现代社会中&#xff0c;水务行业作为城市基础设施的重要组成部分&#xff0c;其高效、安全、可持续的运营直接关系到民众的生活质量与城市的健康发展。随着科技的进步&#xff0c;CFD技术正逐步渗透到水务行业的各个角落&#xff0c;以其独特的模拟预测能力&#x…