1.DMA存储器简介
•
DMA
(
Direct Memory Access
)直接存储器存取
•
DMA
可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须
CPU
干预,节省了
CPU
的资源
•
12
个独立可配置的通道:
DMA1
(
7
个通道),
DMA2
(
5
个通道)
•
每个通道都支持软件触发和特定的硬件触发
•
•
STM32F103C8T6
DMA
资源:
DMA1
(
7
个通道)
DMA是可以直接访问STM32内部的储存器,
DMA是在存储器之间进行数据转运的
运算器和控制器合起来叫CPU
存储器映像
ROM就是只读存储器,是一种非易失性,掉电不丢失的存储器
RAM是一种随机存储器,是一种易失性,掉电丢失的存储器
寄存器是一种特定的存储器,一方面,CPU可以对寄存器进行读写,另一方面,每个寄存器后面都接了一根导线,可以用于控制外设电路的状态
主动单元这里,内核有Dcode总线(专门访问flash)和系统总线(访问其他东西),可以访问右边的存储器,各个通道可以分别设置他们转运数据的原地址和目的地址,这样有利于独立转运数据
仲裁器:用于调度各个通道,防止产生冲突。
DMA请求;用于硬件触发DMA的数据转运
DMA基本结构图
左边是外设寄存器站点。(外设),右边是存储器站点,包括Flash和SRAM;由于flash是只读的,所以DMA不可以进行SRAM到flash或flash到flash的转运操作
传输计数器是一个自减计数器,每转运一次,减一;重装为循环模式(相当于ADC的连续模式)
*软件触发在这里为连续触发(一般适用于存储器到存储器的转运)
DMA转运条件
第一,开关控制,DMA_Cmd必须使能
第二,传输计数器必须大于零
第三,触发源,必须有触发信号
注意:写传输计数器时必须先关闭DMA,在进行。
数据宽度与对齐
当目标数据宽度大于源数据宽度时,高位补零;
当目标数据宽度小于源数据宽度时,低位读取。