Cortex-M3-STM32F1 开发:(三十八)DMA详细介绍(2):软件触发、数据传输流向、宏观流程图

上一篇 下一篇
DMA(1)

目 录


4)软件触发及对比

软件触发就是 Memory-to-Memory 模式

对于 Memory-to-Memory 模式(软件触发),DMA工作流程略有不同:

  1. CPU 配置通道(包括使能 Mem-to-Mem 模式)
  2. CPU 写 EN=1立即触发一次完整块传输
  3. 无需外设请求
  4. 仲裁仅在多个 Mem-to-Mem 通道同时启动时起作用(较少见)

软件触发的表现形式就是代码中的一个命令,比如说当按键按下执行软件触发,使得一个数组从这块内存传输到另一块内存。

和硬件触发的对比总结表

特性 软件触发(Software Trigger) 硬件触发(Hardware Trigger)
触发源 CPU 写 DMA 使能位 外设发出 DMA 请求信号(DREQ)
是否需要外设 ❌ 不需要(仅用于 Mem-to-Mem) ✅ 必须有外设且使能 DMA 请求
传输粒度 一次性完成整个块(NDTR 次) 每次外设请求传输 1 个数据单元
启动时机 配置后立即开始 等待外设事件发生
典型方向 Memory ↔ Memory Peripheral ↔ Memory
是否可循环 可配置,但通常单次 常配合循环模式实现流式传输
CPU 干预 启动时需 CPU,之后无需 启动后完全自动,零 CPU 干预

5)数据传输流向

在 STM32F1 中,传输的数据在物理上会短暂通过 DMA 控制器的内部数据通路,但不会被存储或缓冲(即单次传输)。其他 F4/F7 之类的内部有FIFO的,DMA可以暂存数据。

由于DMA 内部没有存储数据的缓冲区(F1 无 FIFO),所以它是一边读一边写,几乎是"直通"式的搬运。

5.1)硬件触发

SRAM →(AHB 总线)→ DMA 控制器 →(APB 总线)→ 外设 DR 数据寄存器

5.2)软件触发

SRAM →(AHB 总线)→ DMA 控制器 →(APB 总线)→ SRAM

6)DMA 传输的宏观流程图

有一些细节没写出来,前面已经讲的足够细致了。

不要把数据宽度和计数器的值搞混了。

如果是内存到内存,那么只需要在途中左上角那里的外设DMA配置处配置内存DMA即可(地址填内存地址、设为增量模式、单次模式),他虽然叫外设DMA配置,但也只是ST官方这么叫而已,其实本质上就是两个配置项,其中一个是源,一个是目标


相关推荐
czwxkn6 小时前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件
Love Song残响6 小时前
NVIDIA显卡终极优化指南
stm32·单片机·嵌入式硬件
qq_672592756 小时前
电源芯片为什么发热
单片机·嵌入式硬件
天天爱吃肉82187 小时前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车
国科安芯7 小时前
抗辐照MCU在精密时频系统中的单粒子效应评估与可靠性验证
单片机·嵌入式硬件·架构·制造·安全性测试
森焱森7 小时前
嵌入式硬件工程师应知 白银快速分析报告
linux·c语言·arm开发·嵌入式硬件·去中心化
czhaii7 小时前
单片机最佳入门多线程示例讲解
c语言·单片机
BackCatK Chen17 小时前
第 8 篇:TMC2240 电机正反转实现|DIR 引脚控制 + 代码优化(稳定不抖动)
stm32·单片机·嵌入式硬件·保姆级教程·电机正反转·tmc2240·dir引脚控制
星马梦缘18 小时前
EDA彩灯电路绘制
单片机·嵌入式硬件·物联网·pcb·eda·嘉立创
Forsete20 小时前
LINUX驱动开发#9——定时器
linux·驱动开发·单片机