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


相关推荐
逐步前行6 小时前
STM32_TIM_寄存器操作
stm32·单片机·嵌入式硬件
0南城逆流07 小时前
【STM32】知识点介绍七:PWM功能
stm32·单片机·嵌入式硬件
智者知已应修善业7 小时前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
dashizhi20157 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑
我是一棵无人问荆的小草8 小时前
单片机通电后延迟启动策略
单片机·嵌入式硬件
坏柠8 小时前
ESP32-S3 蓝牙 BLE 从零到一:广播、服务、特征,用一个智能灯的例子全讲透
嵌入式硬件
日更嵌入式的打工仔8 小时前
UART RX为什么要上拉
单片机
三佛科技-1873661339711 小时前
FT32F030F6AP7高性能32位RISC内核MCU解析(兼容STM32F030K6TP7)
stm32·单片机·嵌入式硬件
LCMICRO-1331084774612 小时前
长芯微LDC90810完全P2P替代ADC128D818,是一款八通道系统监控器,专为监控复杂系统状态而设计。
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模数转换芯片adc
嵌入式老菜鸟qq12524277312 小时前
关于S2-LP休眠
单片机·嵌入式硬件·mcu·射频工程