在发生一个事件后,外设向DMA控制器发送一个请求信号。DMA控制器根据通道的
请求。当DMA控制器开始访问发出请求的外设时,DMA控制器立即发送给它一个应
从DMA控制器得到应答信号时,外设立即释放它的请求。一旦外设释放了这个请求
器同时撤销应答信号。如果有更多的请求时,外设可以启动下一个周期。
总之,每次DMA传送由3个操作组成:
(1) 从外设数据寄存器或者从当前外设/存储器地址寄存器指示的存储器地址取数据,
输时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储
(2)存数据到外设数据寄存器或者当前外设/存储器地址寄存器指示的存储器地址,第
时的开始地址是DMA_CPARx或DMA_CMARx寄存器指定的外设基地址或存储器
(3)执行一次DMA_CNDTRx寄存器的递减操作,该寄存器包含未完成的操作数目
使用DMA,需要确定一系列的控制参数,如外设数据的地址,内存地址,传输方向等,在开启DMA传输前还要先发出DMA请求。
看看typedef struct
{
uint32_t DMA_PeripheralBaseAddr; //外设数据寄存器的基地址,这个地址可以作为传输源或目标