STM系列学习(2)DMA直接存储区访问

本文介绍了STM32的DMA直接存储器访问功能,用于在数据搬运时不占用CPU资源。STM32的DMA1和DMA2分别包含7个和5个通道,通道的优先级可通过软件配置。文章详细讲解了DMA通道配置,包括数据传输方向(外设到存储器、存储器到外设、存储器到存储器),数据单位和大小,以及一次传输与循环传输的设置。最后提到了在实际应用中如何为SPI通信配置DMA。

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

进入正题

DMA(DIrect Memory Access)直接存储器存取是单片机的一个外设,主要用来搬运数据,在AD采集、DA输出、存储器写入等可以不占用CPU。
STM32的DMA控制器包含了DMA1和DMA2,其中DMA1有7个通道,DMA2有5个通道。

DMA通道

不同的DMA控制器的通道对应不同的外设请求,根据软件编程响应对应的请求。
在这里插入图片描述
在这里插入图片描述
当发生多个DMA通道请求时,由仲裁器响应先后顺序。仲裁器在软件层面可以通过DMA_CCRx寄存器设置响应优先级,如果软件优先级相同,硬件层面根据通道编号顺序响应,编号越低优先级越高。

DMA使用

配置DMA
1.数据从位置1传输到位置2

  • 1.1外设到存储器
    ADC采集,传感器数据采集等
  • 1.2存储器到外设
    串口发送数据,DAC转换等
  • 1.3存储器到存储器
    内部FLASH向内部SRAM复制数据

2.传输数据的单位和大小
源和目标的数据宽度必须一致
外设的数据宽度由DMA_CCR的PSIZE[1:0]配置,可以是8/16/32位,存储器的数据宽度由DMA_CCR的MSIZE[1:0]配置,可以是8/16/32位

3.是一次传输还是循环传输
一次传输想要再传输需要关断DMA使能后再重新配置
循环传输一次传输完成后又恢复第一次传输时的配置DMA_CCR寄存器的CIRC循环模式控制位

最近设计元器件需要使用SPI进行通信,下一章研究一下SPI通讯方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值