学习目标:
DMA学习
学习内容:
DMA简介
1.DMA(Direct Memory Access)直接存储器存取
2.DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源
3.12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道)
4.每个通道都支持软件触发和特定的硬件触发(存储器到存储器,用软件出发,硬件到存储器,永硬件触发)
5.STM32F103C8T6 DMA资源:DMA1(7个通道)
存储器印象
ROM:掉电保持 RAM:掉电不保持
DMA框图
DMA既是主动设备,可以访问APB1外设和APB2外设,但是又是AHB的从设备,可以由CPU控制
DMA的基本结构图
转运:1.必须使能 2.传输寄存器必须大于0,3.必须有触发源和触发信号(写传输寄存器时,必须先关闭DMA)
DMA请求
宽度对齐问题
小的数据转到大的里面去,高的就补0,大的数据转到小的里面的,大的就舍弃
数据转运+DMA
ADC扫描模式+DMA
如果要直接访问一个变量的地址的话,需要用&(取地址符),然后强制转化一下(uint32_t)&a;
程序实现:
1. 定义DMA的源数组和目的数组
2.开启DMA的是时钟(RCC_AHBPeriph_DMA1)
3.初始化dma(dma_init)