半个小时搞懂STM32面经知识——DMA

1.DMA

1.1 什么是DMA?

DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输
CPU无时不刻的在处理着大量的事务,但有些事情却没有那么重要,比方说数据的复制和存储数据,如果我们把这部分的CPU资源拿出来,让CPU去处理其他的复杂计算事务,是不是能够更好的利用CPU的资源呢?
在这里插入图片描述
比如希望外设A的数据拷贝到外设B,只要给两种外设提供一条数据通路,直接让数据由A拷贝到B 不经过CPU的处理

1.2 DMA的传输的四种情况?

外设到内存
内存到外设
内存到内存
外设到外设

在这里插入图片描述

1.3 DMA的传输参数

数据传输,首先需要的是
1.数据的源地址
2.数据传输位置的目标地址
3.传递数据多少的数据传输量
4.进行多少次传输的传输模式

当用户将参数设置好,主要涉及源地址、目标地址、传输数据量这三个,DMA控制器就会启动数据传输,当剩余传输数据量为0时 达到传输终点,结束DMA传输 ,当然,DMA 还有循环传输模式 当到达传输终点时会重新启动DMA传输,也就是说只要剩余传输数据量不是0,而且DMA是启动状态,那么就会发生数据传输。

1.4 STM32多少个DMA资源?

对于大容量的STM32芯片有2个DMA控制器 两个DMA控制器,DMA1有7个通道,DMA2有5个通道。

1.5 DMA的工作流程图

如果没有DMA,CPU传输数据还要以内核作为中转站,比如要将ADC采集的数据转移到到SRAM中,这个过程是这样的:
①内核通过DCode经过总线矩阵协调,从获取AHB存储的外设ADC采集的数据。
②然后内核再通过DCode经过总线矩阵协调把数据存放到内存SRAM中。
在这里插入图片描述
如果有DMA,
①DMA传输时外设对DMA控制器发出请求。
②DMA控制器收到请求,触发DMA工作。
③DMA控制器从AHB外设获取ADC采集的数据,存储到DMA通道中
④DMA控制器的DMA总线与总线矩阵协调,使用AHB把外设ADC采集的数据经由DMA通道存放到SRAM中,这个数据的传输过程中,完全不需要内核的参与,也就是不需要CPU的参与。
在这里插入图片描述
在发生一个事件后,外设向DMA控制器发送一个请求信号。DMA控制器根据通道的优先权处理请求。当DMA控制器开始访问发出请求的外设时,DMA控制器立即发送给它一个应答信号。当从DMA控制器得到应答信号时,外设立即释放它的请求。一旦外设释放了这个请求,DMA控制器同时撤销应答信号。DMA传输结束,如果有更多的请求时,外设可以启动下一个周期。
总之,每次DMA传送由3个操作组成:

从外设数据寄存器或者从当前外设/存储器地址寄存器指示的存储器地址取数据,第一次传输时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储器单元;
存数据到外设数据寄存器或者当前外设/存储器地址寄存器指示的存储器地址,第一次传输时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储器单元;
执行一次DMA_CNDTRx寄存器的递减操作,该寄存器包含未完成的操作数目。

1.6 DMA传输方式

①正常模式。
②循环传输模式。

1.7 仲裁器

在这里插入图片描述
先权管理分2个阶段:

软件:每个通道的优先权可以在DMA_CCRx寄存器中设置,有4个等级:最高优先级,高优先级,中等优先级,低优先级;
DMA 控制器驱动程序的大概实现,进行 DMA 传输的时候如何解决缓存一致性问题?
中断和DMA在嵌入式系统中的应用场景有何不同?
dma接收软件部分的操作
ADC采集方式,为什么使用DMA+中断,如何配置的?
从机发送时怎么用DMA,什么时候起作用
DMA为什么能提高效率?
无须CPU干预,节省了CPU的资源

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue2---router(配置路径、路由跳转、相关API、多级路由、路由守卫,两种工作模式)

Vue2—router(配置路径、路由跳转、相关API、多级路由、路由守卫,两种工作模式) 目录 Vue2---router(配置路径、路由跳转、相关API、多级路由、路由守卫,两种工作模式)安装配置路径路由跳转不携带参数跳转携带参数跳转?形式携带参数地址中直接携带参数 …

存内计算加速大模型——REM-CiM的RGB-事件融合多模态类比计算内存(CiM)技术

本文为大模型&存内计算融合专题的首篇文章,我们将以这篇名为《REM-CiM: Attentional RGB-Event Fusion Multi-modal Analog CiM for Area/Energy-efficient Edge Object Detection during both Day and Night》为例[1],探讨其在文中提到的多模态大模…

通过ip addr命令无法获取到ip地址,无法ping通百度

问题 今天通过VM安装CentOS虚拟机时,安装完成后,想查看ip地址,使用ip addr命令,发现没有展示网络ip地址,ping百度也不通。 解决方案 CentOS使用网络配置文件来设置网络接口的参数,出现这个问题说明网络的…

GEE数据集——东南亚区域油棕种种植分布(油棕榈树种植园的概率)数据集

森林数据伙伴关系围绕对全球商品驱动的森林砍伐、森林退化和恢复工作的全球监测,加强合作与应用。 世界各国政府和公司都承诺帮助制止砍伐森林和加快恢复,以避免气候变化带来的最坏影响,防止生物多样性丧失,保护森林对人类和自然…

IDM下载器激活

文章目录 1、Internet Download Manager简介2、Internet Download Managery应用3、Internet Download Managery下载 1、Internet Download Manager简介 Internet Download Manager (IDM) 是一款功能强大的下载管理软件,旨在帮助用户更高效地管理和加速其下载任务。它…

计算机网络 3.3OSI参考模型

第三节 OSI参考模型 一、认识OSI/RM 1.描述:定义了一个连接异种计算机的标准主体结构,给网络设计者提供了一个参考规范。 2.组织:国际标准化组织. 3.发展:1979年研究并提出了该国际标准。 4.分层原则: ①层次的划…

vue3 第二十八节 (vue3 事件循环之JS事件循环)

1、什么是事件循环 事件循环就是消息队列,是浏览器渲染主线程的工作方式; 过去将消息队列,简单的分为宏任务 和微任务 两种队列,而对于现在复杂多变的浏览器环境,显然这种处理方式已经不能满足使用,取而代…

基于springboot+vue的自习室管理和预约系统(全套)

一、系统架构 前端:vue | element-ui | html 后端:springboot | mybatis-plus 环境:jdk1.8 | mysql | maven | nodejs 二、代码及数据库 三、功能介绍 01. web端-首页1 02. web端-首页2 03. web端-注册 04. web端-登录 05. w…

【C++ 】红黑树

1.1 红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路 径会比其他路径长出俩倍&#xff…

HCIP的学习(17)

BGP基础配置 使用直连接口IP地址来建立EBGP对等体关系 1、启动BGP协议 [r1]bgp 100 ----启动BGP协议,并且规定其AS号2、配置设备的RID数值,一般选择设备的loopback接口的IP地址 [r1-bgp]router-id 1.1.1.13、配置BGP对等体信息,包含了对等体…

庙算兵棋推演AI开发初探(4-调用AI模型)

前面讲了如何开展编写规则脚本型Agent(智能体)的方法,现在探究一下如何调用知识型(一般而言的训练出的模型)智能体的方法。 这次调用的是庙算平台的demo(网址见图) 下载了“知识强化学习型”…

ComfyUI 介绍及入门

介绍 ComfyUI 是一种用户界面,它采用了基于节点的流程设计,用于操作一种名为 Stable Diffusion 的技术。这种设计允许用户通过自定义流程来实现更精确的工作流程,并确保结果的可重复性。在 ComfyUI 中,每个模块都承担着特定的任务…

为什么质量工程师必学六西格玛?突破职业发展的瓶颈?

在质量管理领域工作多年,你是否曾感受到事业发展的停滞不前?3年、5年的职业生涯,薪水依旧停留在每月5000-7000,而同行业的其他人却能月入2-3万,这种差距让人不禁陷入深思。 问题究竟出在哪里?为什么我们的…

强化学习——马尔可夫过程的理解

目录 一、马尔可夫过程1.随机过程2.马尔可夫性质3.马尔可夫过程4.马尔可夫过程示例 参考文献 一、马尔可夫过程 1.随机过程 随机过程是概率论的“动态”版本。普通概率论研究的是固定不变的随机现象,而随机过程则专注于那些随时间不断变化的情况,比如天…

第五百零三回

文章目录 1. 概念介绍2. 使用方法2.1 普通路由2.2 命名路由 3. 示例代码4. 内容总结 我们在上一章回中介绍了"使用get显示Dialog"相关的内容,本章回中将介绍使用get进行路由管理.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

Github上5个实用的ChatGPT仓库

ChatGPT是一款基于聊天场景的大模型AI,最近火出圈。 Chat表示聊天,GPT表示大模型算法,它通过生成式的人机对话功能,让使用者第一次有了AI机器人‘懂我‘的感觉,而不是Siri、小爱那种傻瓜式的语音服务。 ChatGPT不仅仅…

M 有效算法

M 有效算法 本题考验二分知识&#xff0c;思路是二分k的取值&#xff0c;就按第一组样例来说当我们k取值为1的时候我们遍历数组想让|8-x|<k1的话x的取值范围是7-9&#xff0c;想让|3-x|<k2的话x的取值范围是1-5&#xff0c;两者x的区间不重合&#xff0c;说明肯定没有x能…

C/C++实现汉诺塔游戏和详细解

C/C实现汉诺塔游戏和详细解析 需要详细代码可联系QQ&#xff1a;3324729792 引言 汉诺塔问题是一个经典的递归问题&#xff0c;起源于一个传说中的印度寺庙。在这个问题中&#xff0c;我们需要将所有的圆盘从一个柱子移动到另一个柱子上&#xff0c;且在移动过程中&#xff…

2024审计师报名流程图解❗报名时间汇总❗

2024年审计专业技术资格考试报名正在进行中 &#x1f50d;审计报名流程 一、考生注册 打开浏览器登录中国人事考试网进行【考生注册】&#xff0c;按照提示认真填写个人注册信息&#xff0c;确保个人信息真实、完整、准确&#xff0c;并上传已处理好的照片。 二、考生报名 1⃣考…

Python中进程类Process的方法与属性的使用示例

一、示例代码&#xff1a; from multiprocessing import Process import time import osdef child_1(interval):print(子进程&#xff08;%s&#xff09;开始执行&#xff0c;父进程为&#xff08;%s&#xff09; % (os.getpid(), os.getppid()))t_start time.time()time.sle…