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官方这么叫而已,其实本质上就是两个配置项,其中一个是源,一个是目标


相关推荐
ting_zh8 分钟前
音频录制与播放-STM32F779I-EVAL
stm32·嵌入式硬件·音视频
wzf@robotics_notes1 小时前
振动控制提升 3D 打印机器性能
嵌入式硬件·算法·机器人
Jia shuheng3 小时前
#ifdef __cplusplus extern “C“ #endif的作用
c语言·嵌入式硬件
破晓单片机3 小时前
STM32单片机分享:智能净化器系统
stm32·单片机·嵌入式硬件·智能家居
良月十二2654 小时前
ORCAD导出BOM
嵌入式硬件
嗯嗯=4 小时前
STM32单片机学习篇6
stm32·单片机·学习
秋深枫叶红4 小时前
嵌入式第四十九篇——ARM系列——IMX6ULL开发板
arm开发·嵌入式硬件
llilian_165 小时前
b码授时卡 b码解码授时器对无人机领域的重要性 b码解码装置
网络·功能测试·单片机·无人机
电子科技圈5 小时前
芯科科技助力涂鸦智能推出免编码AIoT平台创新智能照明开发
科技·嵌入式硬件·mcu·物联网·智能家居·智能硬件·iot
持梦远方5 小时前
Arduino 学习-第3课:PWM 实现 LED 呼吸灯效果
stm32·单片机