参考:STM32F10xxx参考手册
DMA主要特性比较多,简要为以下几条:
1.两个独立DMA模块,其中DMA2只有在大容量和互联网型号中有
2.四级优先级,同级的请求,则根据通道号大小,小的优先级高
3.可设置为循环缓存
4.传输宽度可设,字节,半字,全字(对应的字的长度应该是32bits,stm32是32位单片机)
5.三种事件可触发中断:DMA半传输,DMA传输完成,DMA传输错误
6.最大传输数目为65535
DMA处理过程
DMA_CPARx或DMA_CMARx用于设置传输开始地址
DMA_CNDTRx用于保存未完成的操作数目,会自递减(应该是16位寄存器)
DMA通道配置步骤
1.在DMA_CPARx中设置外设寄存器的地址,在DMA_CMARx中设置数据存储器的地址
2.DMA_CNDTRx设置传输的数据量,启动传输后,该寄存器值会递减
3.DMA_CCRx的PL位设置优先级
4.DMA_CCRx设置传输方向、循环模式、外设和存储器的增量模式、数据宽度、以及中断事件
5.DMA_CCRx的ENABLE位置1启动DMA通道
6.中断会在DMA_ISR寄存器置位对应的标志
循环模式
用于处理循环缓冲区和连续的数据传输(例如ADC扫描)。DMA_CCRx中CIRC位用于开启该功能
可编程设置数据传输宽度、对齐方式、数据大小端
PSIZE用于设置外设数据宽度
MSIZE用于设置存储器数据宽度
PINC和MINC用于设