-
Direct Memory Access, 直接存储访问。同SPI,IIC,USART等一样,属于MCU的一个外设,用于在不需要MCU介入的情况下进行数据传输。可以将数据从外设传输到flash,也可以将数据从flash传输到外设,或者flash内部数据移动。
-
它的使用和其他外设一样,需要通过寄存器进行配置。配置过后,每次DMA传送由3个操作组成:
- 从外设数据寄存器或者从当前外设/存储器地址寄存器指示的存储器地址取数据,第一次传输时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储器单元。
- 存数据到外设数据寄存器或者当前外设/存储器地址寄存器指示的存储器地址,第一次传输
时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储器单元。 - 执行一次DMA_CNDTRx寄存器的递减操作,该寄存器包含未完成的操作数目。
-
传输完成或者错误时,会产生中断,用户可以进行处理。该中断的发生也需要寄存器配置。
-
启用流程一般为:
- 使能时钟
- 配置参数,可参考相关芯片的datasheet
- 定义DMA通道及时钟
- 定义传输完成标志
- 定义要发送的数据大小
- 定义DMA传输数据源
- 定义DMA传输目标存储器
- 配置DMA中断,并使能
- 当有数据进入时,外设会发送请求,进行DMA传输,传输过半,完成或者异常时,会触发DMA中断
-
当DMA和CPU同时访问相同目标时,DMA会暂停,CPU访问若干个周期后,总线仲裁器执行循环调度。
-
DMA一次只能有一个通道进行数据传输,当多个DMA同时进行数据传输时,需要根据寄存器中配置的优先级进行,当优先级相同时,一般DMA通道编号较低的优先级高。
ARM DMA使用整理
本道自然2024-01-09 14:43
相关推荐
czhaii18 分钟前
STC AI8052U单片机特点MAR-Sky33 分钟前
keil5中数据的不同定义和单片机(以stc8为例)里的对应关系(idata,xdata,data,code)项目題供诗2 小时前
51单片机入门(八)羽获飞3 小时前
从零开始学嵌入式之STM32——9.STM32的时钟系统飞睿科技3 小时前
乐鑫智能开关方案解析:基于ESP32-C系列的低功耗、高集成设计来自晴朗的明天4 小时前
13、NMOS 电源防反接电路17(无规则自律)5 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World芯岭技术5 小时前
PY32MD310单片机:高性能、低功耗的32位电机控制微控制器wotaifuzao6 小时前
STM32 + FreeRTOS 的订阅通知组件架构小龙报6 小时前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结