关键词: 直接存储器访问,DMA 控制器
直接存储器访问 ( DMA )控制器,可以在内存和/或外设之间传输数据,而不需要 CPU 参与每次传输。合理利用 DMA 控制器,可以减轻CPU的负担。
先进的 DMA 控制器,如 STMicroelectronics 的 STM32F4 系列中包含的控制器,可以通过灵活的数据流分配和传输管理功能进一步减轻 CPU 的负担。
如图左侧所示,来自8个不同的通道 DMA 请求,并到仲裁器上,从而建立优先级(编号较低的输入通道,具有较高的优先级)。然后激活最高优先级的传输,传输到图中右侧的两个 AHB 主设备(存储器端口和外设接口),提高了外设到存储器传输的效率。这可能是 DMA 在基于 CPU 的设计中最常见的情况。

为每个路径分配单独的 FIFO,如图1中间所示,允许针对每个外设接口的特性调整 FIFO 特性。例如,FIFO 的阈值级别(请求传输的深度)可以单独设置为 FIFO 大小的¼,½或¾。这允许低速通道等待,直到FIFO 几乎满了才进行传输,以最小化开销。更快的通道会更早地启动传输,可能只有一半大小,以避免FIFO 溢出。
我们来通过一个实例,来看看DMA怎么工作的。
硬件部分采用 STM32 开发板,与 NeoPixel LED 、灯带 、矩阵 等相连接。

RGB NeoPixels 实际上是 WS2812 智能控制 LED。下面是 WS2812 LED 的3字节数据协议的结构,分别代表绿红蓝三个信息。

使用计时器来PWM控制波形,然后配置DMA使CPU高效并且易于实施。

在软件中,配置 DMA,选择了“TIM2_CH3/UP”,将方向改为“内存到外设”。同时,将优先级改为“非常高”,最后保存.ioc 文件,以生成项目代码。

更多微控制器相关技术内容, 请参考下面帖子
- 浅谈直接存储器访问(DMA)控制器的两种模式
- 使用 STM32F2 和 STM32F4 DMA 控制器
- 实现一个健壮的微控制器到 FPGA SPI 接口: 第1部分 – FPGA 的挑战
- 如何为更高电压的微控制器测量选择电阻
- DIP 开关与微控制器接口的基本原理
******
如有任何问题,欢迎联系得捷电子DigiKey客服团队。
中国(人民币)客服
- 400-920-1199
- service.sh@digikey.com
- QQ在线实时咨询 |QQ号:4009201199
中国(美金)/ 香港客服
- 400-882-4440
- 8523104-0500
- china.support@digikey.com

到微信搜寻“digikey”或“得捷电子”
关注我们官方微信
并登记成会员,
每周接收工程师秘技,
赚积分、换礼品、享福利