DMA(直接存储器访问),提供外设与存储器、存储器与存储器之间的告诉数据传输,不需要CPU的参与,共有七个通道。
一、DMA传输有三个操作完成
● 从外设数据寄存器或者从DMA_CMARx 寄存器指定地址的存储器单元执行加载操作。
● 存数据到外设数据寄存器或者存数据到DMA_CMARx 寄存器指定地址的存储器单元。
● 执行一次DMA_CNDTRx 寄存器的递减操作。该寄存器包含未完成的操作数目。
二、仲裁器(优先级)
1. 软件:优先级由DMA_CCRX配置,4个优先级别:最高、高、中等、低。
2. 之间:若软件优先级相同,则通道号小的优先级更高。
三、属性
1. 可编程的数据大小
2. 指针增量:传输地址加1,2或者4。
3. 通道配置过程:DMA_CPARX设置外设地址——DMA_CMARX设置数据存储地址——设置数据量——设置优先级别——设置传输防线、循环模式等——启动
四、循环模式
可以处理循环缓存和连续数据流,当床书数目变为0是,将会自动的被恢复成配置通道是设置的初值,DMA操作将会继续进行。
五、
1. 错误管理
2. 中断:每个通道传输一半、完成或错误时,可以使用单独的中断使能信号产生中断。
3. DMA请求映射
外设请求:ADC/TIMX/SPIX/I2C/USARTX
一次仅能使能一个请求。
六、程序分析
DMA_DeInit(DMA1_Channel1); //将DMA通道1所有寄存器重设为缺省值
DMA_InitStructure.D