一.单通道DMA
1.DMA有两种模式,分别为CIRCULAR和NORMAL。
(1).CIRCULAR模式:DMA的CIRCULAR模式只需要调用一次DMA开启函数,DMA就会持续的搬运数据,提高了数据的刷新速度,但是在CIRCULAR模式下,不管ADC新的一轮数据采集是否完成,有可能直接将旧数据搬运走。(建议加上ADC转换完成函数,确保数据的完整性)
(2).NORMAL模式:该模式下,DMA启动函数调用一次,DMA通道只会搬运一次数据,这样每调一次DMA启动函数,DMA只会搬运一次数据,等待数据传输完成后再次开启DMA启动函数,这样更能保证ADC数据采集的可靠性。
1.选择ADC模块。
2.选择ADC通道。
3.选择需要的参数配置。
1.打开ADC的DMA方式默认为NORMAL模式。
单通道需要用的库函数。
(1).HAL_ADC_Start_DMA(&hadc1,(uint32_t*)&AD_value,sizeof(AD_value));(加在main函数while(1)开始前)。
(2).DMA搬运的数据在DMA中断中拿取。
二.多通道DMA
需要用到的库函数
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)AD_value,sizeof(AD_value));
AD_value:需要存储的数据
第三个参数为需要转换的个数,此处可以写二维数组,依次转换多个数据方便后续的滤波计算。
例如:AD_value[8][4]定义一个8行4列的二维数组用于存储数据,对单个数据得8次采样求平均值。