Bootstrap

STM32CubeMX 实现串口 DMA 通信

STM32CubeMX 实现串口 DMA 通信

1、了解DMA

直接存储器访问 (DMA) :用于在外设与存储器之间以及存储器与存储器之 间进行高速数据传输。DMA传输过程的初始化和启动由CPU完成,传输过 程由DMA控制器来执行,无需CPU参与,从而节省CPU资源,提高利用率。

DMA数据传输的四个要素:

① 传输源 :DMA数据传输的来源

② 传输目标:DMA数据传输的目的

③ 传输数量:DMA传输数据的数量

④ 触发信号:启动一次DMA数据传输的动作

STM32的DMA控制器特点

1.STM32F411微控制器具备两个DMA控制器:DMA1和DMA2,每个 控制器有8个数据流,每个数据流可以映射到8个通道(或请求);

  1. 每一个DMA控制器用于管理一个或多个外设的存储器访问请求,并通 过总线仲裁器来协调各个DMA请求的优先级;
  2. 数据流(stream)是用于连接传输源和传输目标的数据通路,每个数 据流可以配置为不同的传输源和传输目标,这些传输源和传输目标称为 通道(Channel);
  3. 具备16字节的FIFO。使能FIFO功能后,源数据先送入FIFO,达到FIFO 的触发阈值后,再传送到目标地址。
    在这里插入图片描述

DMA数据传输方式

普通模式:

传输结束后(即要传输数据的数量达到零),将不再产生DMA操作。若 开始新的DMA传输,需在关闭DMA通道情况下,重新启动DMA传输

循环模式:

可用于处理环形缓冲区和连续数据流(例如ADC扫描模式)。当激活循 环模式后,每轮传输结束时,要传输的数据数量将自动用设置的初始值 进行加载, 并继续响应DMA请求。

2、 DMA_ InitTypeDef 初始化结构体
1 typedef struct
2 {
   
3 uint32_t DMA_PeripheralBaseAddr; // 外设地址
4 uint32_t DMA_MemoryBaseAddr;
;