STM32——DMA直接存储器访问控制器(CubeMX配置DMA)

资料来源:野火产品资料下载中心 — 野火产品资料下载中心 文档https://doc.embedfire.com/products/link/zh/latest/index.html

DMA的作用:(数据搬运工)

直接存储器访问(DMA)用于在外设和存储器之间以及存储器与存储器之间提供高速数据传输,可以在无需任何CPU操作的情况下通过DMA快速移动数据,这样节省CPU资源可供其他操作使用

DMA控制器的实现是基于复杂的总线矩阵架构(STM32Fxx)

F4xx以及F7xx

 DMA是独立的外设,直接接在总线矩阵上,可以直接通过总线矩阵访问AHB系统总线以及APB1,APB2等,随后访问其他外设的寄存器(比如GPIO),然后再通过总线矩阵将数据传输到指定位置(比如SRAM)

执行过程,比如ADC1中有数据需要搬运,就会发送DMA请求,DMA响应之后,就会对ADC1中的数据进行获取,通过配置DMA数据所在的通道,DMA就会将这个通道连接到目标地址中,然后将数据搬运到目标地址

在F4xx以及F7xx系列中的FIFO用于在源数据传输到目标之前临时存储这些数据,通过不同的FIFO配置,可以管理数据发送形式,比如它可以将数据打包

DMA功能设置

1.传输模式(单向的)

存储器-存储器

外设-存储器

存储器-外设

2.确定传输对象

实现具体的功能

UART(源)->内存(目标)

内存数据(源)->UART(目标)

3.确定传输细节

确定由谁产生DMA请求,优先级,传递数据双方的数据格式,确定数据是否需要一直采集(循环模式是否使能),是否需要传输标志/中断

 

 HAL库中的DMA功能实例

DMA句柄结构体

DMA_HandleTypeDef

Instance成员:它指向了外设内,一个具体的外设成员,比如ADC里面的ADC1,ADC2,UART里面的UART1,UART2,DMA的Channel1,Channel2,实际上它用指针指向一个外设基地址

Init:指向了一个具体外设的初始化结构体,用来配置外设的工作参数

DMA初始化结构体

DMA_InitTypeDef

根据外设的各种配置寄存器,组织起来的外设参数配置结构体,内附在xx_HandelTypeDef

使用CubeMX配置DMA

(1)先完成基本配置

配置时钟

 

 配置SyS

 2.配置DMA

内存-内存设置

 外设与内存(以USART1为例)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值