STM32G4系列MCU的Direct memory access controller (DMA)功能之一

发布于:2024-12-06 ⋅ 阅读:(24) ⋅ 点赞:(0)

目录

概述

1 DMA介绍

1.1 DMA的描述

1.2 DMA的主要特性

2 DMA的应用

2.1 DMA1和DMA2

2.2 DMA的映射关系

3 DMA的功能描述

3.1 架构框图

3.2 DMA引脚和内部信号

3.3 DMA传输数据

3.4 DMA仲裁 


概述

本文主要介绍STM32G4MCU的DMA功能,包括功能概述,应用特性,框架结构等内容。

1 DMA介绍

1.1 DMA的描述

直接存储器存取(DMA)控制器是总线主机和系统外围设备。DMA被用来在内存映射外设和/或存储器之间执行可编程的数据传输,在一个卸载的CPU的控制下。
DMA控制器具有单个AHB主架构。


DMA有两个实例,DMA1和DMA2(参见下表:DMA1和DMA2实现,了解支持的通道数量)。每个通道专门用于管理来自一个或多个外设的内存访问请求。每个DMA包括一个仲裁器,用于处理DMA请求之间的优先级。

1.2 DMA的主要特性

•  单AHB主控
•  外设到存储器,存储器到外设,存储器到存储器和外设到外设的数据传输
•  访问,作为源和目标,到片上内存映射设备,如闪存,SRAM, AHB和APB外设

所有DMA通道独立配置:

1)每个通道要么与来自外设的DMA请求信号相关联,要么与内存到内存传输中的软件触发器相关联。该配置由软件完成。

-

2)请求之间的优先级可以通过软件(每个通道有四个级别:非常高、高、中、低)和硬件(例如对通道1的请求比对通道2的请求具有优先级)进行编程。

-

3)源和目标的传输大小是独立的(字节,半字,字),模拟打包和拆包。源地址和目的地址必须在数据大小上保持一致。

-

4)支持通过循环缓冲区管理从外设到内存的传输

-

5)可编程传输数据数: 0 ~ 2^{16}-1

每个通道生成一个中断请求。每个中断请求都是由三种DMA事件中的任何一种引起的:传输完成、传输一半或传输错误。

2 DMA的应用

2.1 DMA1和DMA2

DMA1和DMA2是用下表所示的硬件配置参数实现的。

2.2 DMA的映射关系

DMA控制器通过DMAMUX外设连接到来自AHB/APB外设的DMA请求。有关不同请求的映射,请参阅DMAMUX部分。

3 DMA的功能描述

3.1 架构框图

DMA框图如下图所示。

DMA控制器通过与其他系统主机共享AHB系统总线来执行直接内存传输。总线矩阵实现了循环调度。DMA请求可能会停止CPU对系统总线的访问数个总线周期,当CPU和DMA目标相同的目的地(内存或外设)。

根据其通过AHB从接口的配置,DMA控制器在DMA通道及其相关的接收请求之间进行仲裁。DMA控制器还在单个AHB端口主机上调度DMA数据传输。

DMA控制器为每个到中断控制器的通道生成一个中断。

3.2 DMA引脚和内部信号

3.3 DMA传输数据

该软件在通道级配置DMA控制器,以便执行由AHB总线传输序列组成的块传输。DMA块传输可以从外设请求,或者在存储器到存储器传输的情况下由软件触发。

事件发生后,发生单个DMA传输的以下步骤:

1. 外设向DMA控制器发送单个DMA请求信号。
2. DMA控制器根据与此外设请求相关联的通道的优先级为请求提供服务。

3. 一旦DMA控制器授予外设,DMA控制器就会向外设发送一个确认。
4. 外设一旦得到DMA控制器的确认,就释放它的请求。
5. 一旦请求被外设解除断言,DMA控制器就释放确认。

外设可以再发出一个请求并启动另一个DMA传输。

当外设是传输的源或目的地时,使用请求/确认协议。例如,在内存到外设传输的情况下,外设通过将其单个请求信号驱动到DMA控制器来启动传输。DMA控制器从内存中读取单个数据,并将该数据写入外设。

对于给定的通道x, DMA块传输由以下重复序列组成:

1)单个DMA传输,在DMA上封装单个数据的两个AHB传输AHB总线主:

---1)从外设数据寄存器或存储器中读取的单个数据(字节、半字或字)内存中的位置,通过内部当前外设/内存地址寄存器寻址。第一次单次传输使用的起始地址是外设或内存,并在DMA_CPARx或DMA_CMARx中编程注册。

-

---2)向外设数据寄存器或存储器中的某个位置写入单个数据(字节、半字或字),通过内部当前外设/存储器地址寄存器寻址。用于第一次传输的起始地址是外设或内存的基址,并在DMA_CPARx或DMA_CMARx寄存器中编程。

-

 2)编程后的DMA_CNDTRx寄存器的后递减这个寄存器包含要传输的数据项的剩余数量(AHB的数量)“先读后写”传输)。

重复这个序列,直到DMA_CNDTRx为空。

注意:

 AHB主总线源/目的地地址必须与传输到源/目的地的单个数据的编程大小一致。

3.4 DMA仲裁 

DMA仲裁器管理不同通道之间的优先级。当仲裁器授予活动通道x(硬件请求或软件触发)时,发出单个DMA传输(例如单个数据的AHB“读后写”传输)。然后,仲裁器再次考虑活动通道集并选择具有最高优先级的通道。

优先事项分两个阶段管理:

软件:每个通道的优先级在DMA_CCRx寄存器中配置为四个不同级别之一:

– very high
– high
– medium
– low

硬件:如果两个请求具有相同的软件优先级,则索引最低的通道获得优先级。例如,通道2优先于通道4。 

当通道x被编程为内存到内存模式的块传输时,在该通道x的每个单个DMA传输之间考虑重新仲裁。每当有另一个并发的活动请求通道时,DMA仲裁器自动交替并授予其他最高优先级的请求通道,该通道可能比内存到内存通道的优先级低。


网站公告

今日签到

点亮在社区的每一天
去签到