
引言/ F v' Y; L" O! i$ f- M 为了从 CPU 减荷某些数据传输任务,STM32 微控制器嵌入了直接存储器访问(DMA)控制器。DMA 可以在外设请求或软件触发时执行面向块的数据传输。 每个 DMA 通道都有一个软件可配置的外设选择,用于请求其服务。在传统 STM32 产品上,通道请求选择在 DMA 控制器内实现,该控制器带有面向给定通道的受限外设请求列表。软件应用程序不能自由地将任何外设请求映射到任何通道。 DMA 请求复用器(DMAMUX 外设)增强了 STM32 DMA 请求路由功能。DMAMUX 增加了更多灵活性,可以提供完全动态的DMA 外设请求映射,而不是伪动态映射。它提供从给定外设到任何 DMA 控制器和/或控制器 DMA 通道的任何 DMA 请求完全可配置路由。 本应用说明解释了下表中所列产品的各种 DMAMUX 特性:如何配置 DMAMUX,以及如何使用新的同步和请求生成功能。 Z0 f. n; d: m6 n ![]() 外设通过设置其 DMA 请求信号来指示 DMA 传输请求。DMA 控制器会处理 DMA 请求并生成 DMA 确认信号,而且相应的 DMA 请求信号也将变为无效,但在此之前 DMA 请求一直处于挂起状态。 本文档中并未明确描述 DMA 请求/确认协议所需的控制信号组,而是将其称作外设 DMA 请求线。1 i3 L; f u3 n, f8 v4 ?% j DMA 请求路由器可以看作是 DMA 控制器的扩展。它将 DMA 外设请求路由到 DMA 控制器本身。 DMAMUX 请求复用器可将外设的 DMA 请求线路由到产品 DMA 控制器。该路由功能通过可编程的多通道 DMA 请求线复用器来确保实现。每个通道(下图示例中的 DMAMUX 通道 0)选择一个唯一的 DMA 请求线转发(无条件或同步地)到关联的 DMA 控制器通道(下图示例中的 DMA 通道 0)。这就允许高度灵活地管理 DMA 请求,使并发运行的 DMA 请求数量最大化。- e3 c8 o& C/ [2 N 8 d& u4 q' m7 s$ a! Z6 d- I4 H! d ![]() 2 DMAMUX 功能5 B/ D0 A8 p# L1 E. ? 下图是一个简化的 DMAMUX 框图。根据 DMAMUX 管理的 DMA 通道数量,“请求复用器”结构被重复 N 次 9 b+ |4 D5 u# J# S: m0 C f" K$ d" \ ![]() # q5 J+ g' G1 c – dmamux_reqx:来自外设的 DMA 请求(dmamux_req_inx)或来自请求生成器(dmamux_req_genx) 的 DMA 请求 dmamux_req_gen[0..n]分别受 dmamux_req[1..n+1]的影响;而 dmamux_req_inx 受 dmamux_req[n+2]+ r& g' o o. n" e! B) J0 S 的影响。/ Y( Q8 g3 [7 j% m! W – dmamux_syncx:可选同步事件 • 输出: – dmamux_req_outx:DMA 请求 dmamux_reqx 从输入转发到输出 – dmamux_evtx:可选的生成事件,可用于触发/同步其他 DMAMUX 通道 请求生成器允许根据中断信号或事件生成 DMA 请求,输入/输出如下:' e* Q) R. a4 d. m- u • 输入:dmamux_trgx,请求生成器子块的触发事件输入 • 输出:dmamux_req_genx,从请求生成器子块到 DMAMUX 请求复用器通道的 DMA 请求 请求复用器块的数量取决于 DMAMUX 管理的 DMA 通道数量。 例如:6 a: a4 g. G: W% o& P: ? • 如果是 8 通道 DMA,必须有 8 个请求复用器通道。 • 如果某产品有两个 DMA 控制器(每个 DMA 控制器各有 8 个通道),则必须有 16 个请求复用器通道。: ^2 ]! z2 o. v% I) ` 一旦请求生成器由 DMAMUX 实例化。它包含 N 个能够生成 DMA 请求的通道(取决于产品)。有关详细信息,请参阅产品参考手册中的“DMAMUX 实现”部分。9 L, Q6 K; O+ k 因为有请求生成器块,用户软件可以基于未实现 DMA 请求的外设发出的信号触发 DMA 传输。1 }3 e$ V* \* F7 A' n 现 DMA 请求的外设发出的信号触发 DMA 传输。0 F0 Z) ]5 @9 v6 ~ $ s3 t, ]9 z4 N0 X" i3 p$ ] 2.1 请求路由与同步* r! w3 @3 |' r0 W 2.1.1 无条件请求转发7 S/ N. |+ d9 t3 ], D5 o" e 为了执行外设到内存或内存到外设的传输,DMA 控制器通道每次都需要一个外设 DMA 请求线。每次发生请求时,DMA 通道将数据传入/传出外设。DMAMUX 请求复用器通道 X 允许选择/路由外设 DMA 请求线到 DMA 通道 X。 当复用器设置之后(DMAREQ_ID 不等于零),它确保 DMA 请求线的实际路由。通过通道控制寄存器(DMAMUX_CxCR)的 DMAREQ_ID 位中的编码 ID 选择外设 DMA 请求到复用器通道输出的连接。 对于产品中的每个外设 DMA 请求线,都会影响唯一的 ID。值 0(DMAREQ_ID = 0x00)对应于没有选择 DMA 请求线。 在配置 DMAMUX 通道之后,可以依次配置相应的 DMA 控制器通道。不能将两个不同的 DMAMUX 通道配置为选择相同的外设 DMA 请求线作为源。 $ e$ ]2 Y2 i- X! |3 F4 @9 d7 } 完整版请查看:附件 |
DM00535045_ZHV2.pdf
下载371.91 KB, 下载次数: 13
【STM32U3评测】SPIDMA发送
实战经验 | TrustZone应用中串口通信的DMA传输失败问题
狂欢三】STM32C031使用TIM定时器DMA方式实现WS2812彩灯输出(三)
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
STM32的DMA双缓冲模式详解
基于STM32的心率计以DMA方式获取传感器数据经验分享
基于STM32利用ADC+DMA采样显示经验分享
【经验分享】STM32使用DMA接收串口数据
基于STM32的DMA经验分享
基于STM32的ADC+DMA采样与板载运放跟随经验分享