DMA详解

本文详细介绍了直接内存存取(DMA)的概念,重点讲解了STM32F1和STM32F4系列的DMA通道、冲裁器、双缓冲机制以及DMA-SPI初始化配置。还分享了启动数据传输的流程和配置心得,强调了DMA在发送数据过程中的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,概念:DMA全称为Direct Memory Accessuart,即直接内存存取,是一种外设和内存直接数据传输的方式,作用就是减少CPU的负担传输,特别适合大数据高速度传输时使用。


2,DMA通道
stm32f1系列包含2个DMA控制器,DMA1有7个通道。DMA2有5个通道,每个通道最高可接收8个外设的DMA请求,每个通道还有一个冲裁器,用于处理DMA请求间的优先级。
stm32f4系列包含2个DMA控制器,每个DMA控制器包含8个数据流,每个数据流有最多达8个通道,每个数据流通道都有一个仲裁器,用于处理DMA请求间的优先级。


3,冲裁器判断各外设的DMA请求的优先级级别
①,非常高优先级
②,高优先级
③,中优先级
④,低优先级


4,DMA的双缓冲机制
stm32f4系列的DMA可配置为双缓冲机制,类似乒乓操作模式,建立2个缓冲区buffer,当一个缓冲区buffer接收完成后,接收数据自动转到另一个缓冲区buffer,同时CPU可对第一个缓冲区的数据进行操作,从而保证数据接收不受中止影响。
配置举例如下:
DMA_DoubleBufferModeConfig(DMA2_Stream2,(u32)buf1,DMA_Memory_0);//配置双缓冲模式的另一个的buffer
DMA_DoubleBufferModeCmd(DMA2_Stream2,ENABLE);//双缓冲模式开启


5,DMA-spi初始化配置
①,spi初始化
②,使能spi的DMA请求
③,dma时针使能,dma复位,等待dma可配置
④,配置dma通道,配置dma外设地址,配置dma存储器地址
⑤,配置dma数据传输量和传输方向,传输方向有外设到内存,内存到外设,内存到内存。
⑥,配置外设和内存的增量模式,一般配置外设非增量,内存增量模式,这样就可以从一个外设地址在不同的时间点接收多个数据保存在内存数组中。
⑦,配置外设和内存的数据长度,必须配置成一样。
⑧,配置dma为循
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值