由于是M-M模式,所以只能选择DMA2
一、首先应该初始化DMA结构体
1.选择通道DMA_Channel,根据数据流选择对应的通道,
2.选择源数据地址DMA_PeripheralBaseAddr
3.目标地址DMA_Memory0BaseAddr
3.选择传输方向DMA_DIR,根据实际情况有这三种DMA_DIR_PeripheralToMemory DMA_DIR_MemoryToPeripheral DMA_DIR_MemoryToMemory
4.设定待传输数据数目DMA_BufferSize,源数据大小
5.使能源数据地址,目标地址递增,
6.源数据和目标宽度DMA_PeripheralDataSize和DMA_MemoryDataSize,根据需要选择,字节,半字和字
7.选择传输模式DMA_MemoryDataSize,M-M模式只能一次传输,
8.DMA_Priority:软件设置数据流的优先级,有 4 个可选优先级分别为非常高、高、中和低 DMA 优先级只有在多个DMA 数据流同时使用时才有意义
9.DMA_FIFOModeFIFO 模式使能如果选择存储器到存储器模式(DMA_SxCR 中的 DIR 位为“10”),并且 DMA_SxCR 寄存器中的 EN 位为“1”,则此位由硬件置 1,因为在存储器到存储器配置不能使用直接模式。
10.DMA_FIFOThreshold: FIFO 阈值选择,可选 4 种状态分别为 FIFO 容量的 1/4、1/2、 3/4 和满;
11.DMA_MemoryBurst:存储器突发模式选择,可选单次模式、 4 节拍的增量突发模
式、 8 节拍的增量突发模式或 16 节拍的增量突发模式
DMA_PeripheralBurst:外设突发模式选择,可选单次模式、 4 节拍的增量突发模
式、 8 节拍的增量突发模式或 16 节拍的增量突发模式,
12.初始化结构体,清除标志位,使能数据传输,检测DMA数据流是否有效并带有超时检测功能
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』