STM32CubeMX 实现串口 DMA 通信
文章目录
1、了解DMA
直接存储器访问 (DMA) :用于在外设与存储器之间以及存储器与存储器之 间进行高速数据传输。DMA传输过程的初始化和启动由CPU完成,传输过 程由DMA控制器来执行,无需CPU参与,从而节省CPU资源,提高利用率。
DMA数据传输的四个要素:
① 传输源 :DMA数据传输的来源
② 传输目标:DMA数据传输的目的
③ 传输数量:DMA传输数据的数量
④ 触发信号:启动一次DMA数据传输的动作
STM32的DMA控制器特点
1.STM32F411微控制器具备两个DMA控制器:DMA1和DMA2,每个 控制器有8个数据流,每个数据流可以映射到8个通道(或请求);
- 每一个DMA控制器用于管理一个或多个外设的存储器访问请求,并通 过总线仲裁器来协调各个DMA请求的优先级;
- 数据流(stream)是用于连接传输源和传输目标的数据通路,每个数 据流可以配置为不同的传输源和传输目标,这些传输源和传输目标称为 通道(Channel);
- 具备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;