首页 » 科学 » DMA 控制器_存储器_外设

DMA 控制器_存储器_外设

乖囧猫 2024-11-08 17:03:44 0

扫一扫用手机浏览

文章目录 [+]

DMA 简介

直接存储器存取(DMA)用来供应在外设和存储器之间或者存储器和存储器之间的高速数据传输。
无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。
两个DMA掌握器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的要求。
还有一个仲裁器来折衷各个DMA要求的优先权。
在我的理解里,DMA就像一个搬运工,将数据从一个地方搬运到另一个地方,而且不须要CPU的参与。

DMA 控制器_存储器_外设 科学

DMA 有以下紧张特性:

1. 12 个独立的可配置的通道(要求): DMA1 有 7 个通道, DMA2 有 5 个通道

2. 每个通道都直接连接专用的硬件 DMA 要求,每个通道都同样支持软件触

发。
这些功能通过软件来配置。

3. 在同一个 DMA 模块上,多个要求间的优先权可以通过软件编程设置(共有四级:很高、 高、中等和低),优先权设置相等时由硬件决定(要求 0 优先于要求1,依此类推) 。

4. 独立数据源和目标数据区的传输宽度(字节、半字、全字),仿照打包和拆包的过程。
源和目标地址必须按数据传输宽度对齐。

5 支持循环的缓冲器管理

6 每个通道都有 3 个事宜标志(DMA 半传输、 DMA 传输完成和 DMA 传输出错),这 3 个事宜标志逻辑或成为一个单独的中断要求。

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

8 外设和存储器、存储器和外设之间的传输

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

10 可编程的数据传输数目:最大为 65535

DMA 构造框图

DMA 掌握器独立于内核,属于一个单独的外设,构造比较大略,从编程的角度来看,我们只需节制构造框图中的三部分内容。
DMA 构造框图分成 3 个子模块,按照顺序依次进行大略先容。

DMA 构造框图

(1)标号 1:DMA 要求

如果外设要想通过 DMA 来传输数据,必须先给 DMA 掌握器发送 DMA 要求,DMA 收到要求旗子暗记之后,掌握器会给外设一个应答旗子暗记,当外设应答后且 DMA 掌握器收到应答旗子暗记之后,就会启动 DMA 的传输,直到传输完毕。
根据前面先容我们知道,DMA 含有 DMA1 和 DMA2 两个掌握器,个中 DMA1 含有 7 个通道,DMA2 含有 5 个通道,不同的 DMA 掌握器的通道对应着不同的外设要求。

从 DMA 要求映射图中可以知道各通道所对应的外设要求。

DMA1 要求映射图

DMA2 要求映射图

DMA2 要求通道中 ADC3、 SDIO 和 TIM8 的 DMA 要求只在大容量产品中存

在,这个在详细项目时要把稳。

(2)标号 2:DAM 通道

DMA 具有 12 个独立可编程的通道,个中 DMA1 有 7 个通道, DMA2 有 5

个通道,每个通道对应不同的外设的 DMA 要求。
虽然每个通道可以吸收多个外

设的要求,但是同一韶光只能吸收一个,不能同时吸收多个。

(3)标号 3:仲裁器

当发生多个 DMA 通道要求时,就意味着有先后相应处理的顺序问题,这个

就由仲裁器也管理。
仲裁器管理 DMA 通道要求分为两个阶段。
第一阶段属于软

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

四个优先级。
第二阶段属于硬件阶段,如果两个或以上的 DMA 通道要求设置的

优先级一样,则他们优先级取决于通道编号,编号越低优先权越高,比如通道 0

高于通道 1。
在大容量产品和互联型产品中,DMA1 掌握器拥有高于 DMA2 掌握

器的优先级。

DMA 数据配置

利用 DMA,最核心便是配置要传输的数据,包括数据从哪里来,要到哪里去,

传输的数据的单位是什么,要传多少数据,是一次传输还是循环传输等。

(1)从哪里来到哪里去

我们知道 DMA 传输数据的方向有三个:从外设到存储器,从存储器到外设,

从存储器到存储器。
详细的方向 DMA_CCR 位 4 DIR 配置: 0 表示从外设到存

储器, 1 表示从存储器到外设。
这里面涉及到的外设地址由 DMA_CPAR 配置,

存储器地址由 DMA_CMAR 配置。

a.外设到存储器

当我们利用从外设到存储器传输时,以 ADC 采集为例。
DMA 外设寄存器的

地址对应的便是 ADC 数据寄存器的地址,DMA 存储器的地址便是我们自定义的

变量(用来吸收存储 AD 采集的数据)的地址。
方向我们设置外设为源地址。

b.存储器到外设

当我们利用从存储器到外设传输时,以串口向电脑端发送数据为例。
DMA 外

设寄存器的地址对应的便是串口数据寄存器的地址, DMA 存储器的地址便是我

们自定义的变量(相称于一个缓冲区,用来存储通过串口发送到电脑的数据)的

地址。
方向我们设置外设为目标地址。

c.存储器到存储器

当我们利用从存储器到存储器传输时,以内部 FLASH 向内部 SRAM 复制数

据为例。
DMA 外设寄存器的地址对应的便是内部 FLASH(我们这里把内部 FALSH

当作一个外设来看)的地址, DMA 存储器的地址便是我们自定义的变量(相称

于一个缓冲区,用来存储来自内部 FLASH 的数据)的地址。
方向我们设置外设

(即内部 FLASH)为源地址。
跟上面两个不一样的是,这里须要把 DMA_CCR 位

14: MEM2MEM:存储器到存储器模式配置为 1,启动 M2M 模式。

(2)要传多少,单位是什么

当我们配置好数据要从哪里来到哪里去之后,我们还须要知道我们要传输的数据是多少,数据的单位是什么。

以串口向电脑发送数据为例,我们可以一次性给电脑发送很多数据,详细多少由 DMA_CNDTR 配置,这是一个 32 位的寄存器,一次最多只能传输 65535 个数据。

要想数据传输精确,源和目标地址存储的数据宽度还必须同等,串口数据寄存器是 8 位的,以是我们定义的要发送的数据也必须是 8 位。
外设的数据宽度由 DMA_CCR 的 PSIZE[1:0]配置,可以是 8/16/32 位,存储器的数据宽度由DMA_CCR 的 MSIZE[1:0]配置,可以是 8/16/32 位。

在 DMA 掌握器的掌握下,数据要想井井有条的从一个地方搬到其余一个地方,还必须精确设置两边数据指针的增量模式。
外设的地址指针由 DMA_CCRx 的PINC 配置,存储器的地址指针由 MINC 配置。
以串口向电脑发送数据为例,要发送的数据很多,每发送完一个,那么存储器的地址指针就该当加 1,而串口数据寄存器只有一个,那么外设的地址指针就固定不变。
详细的数据指针的增量模式由实际情形决定。

(3)什么时候传输完成

数据什么时候传输完成,我们可以通过查询标志位或者通过中断的办法来判断。
每个 DMA 通道在 DMA 传输过半、传输完成和传输缺点时都会有相应的标志位,如果使能了该类型的中断后,则会产生中断。
有关各个标志位的详细描述请参考 DMA 中断状态寄存器 DMA_ISR 的详细描述。
传输完成还分两种模式,是一次传输还是循环传输,一次传输很好理解,即传输一次之后就停滞,要想再传输的话,必须关断 DMA 使能后再重新配置后才能连续传输。
循环传输则是一次传输完成之后又规复第一次传输时的配置循环传输,不断的重复。
详细的由 DMA_CCR 寄存器的 CIRC 循环模式位掌握。

在学习过程中,结合芯片的数据手册,能让你事半功倍。
也希望这篇文章对你有所帮助。

相关文章

发型设计,诠释个人风格的独特语言

在日常生活中,我们常常通过着装、配饰等外在因素来展现自己的个性与风格。在众多表达方式中,发型设计无疑是最直接、最生动的语言之一。正...

科学 2025-01-04 阅读0 评论0

后端入门,探索编程世界的神秘后盾

随着互联网技术的飞速发展,编程已经成为现代社会不可或缺的一部分。在众多编程语言中,后端编程语言凭借其稳定性、安全性和高效性,成为了...

科学 2025-01-04 阅读0 评论0

喜达康CMS,引领企业数字化转型的新引擎

随着互联网技术的飞速发展,企业数字化转型已成为时代发展的必然趋势。在这个过程中,喜达康CMS(内容管理系统)凭借其卓越的性能和强大...

科学 2025-01-04 阅读0 评论0

商业合作共赢之路,构建高效沟通的桥梁

在全球经济一体化的背景下,商业合作已成为企业发展的重要驱动力。高效的合作关系不仅能够实现资源共享、优势互补,还能拓宽市场渠道、提升...

科学 2025-01-04 阅读0 评论0