优化系统资源利用
-
提升数据采集效率
-
多通道数据采集:ADC本身可以独立工作,但每次转换完毕后存储到特定寄存器内,且每次转换结果会覆盖上一次的值,仅能采样单通道信号。而配合DMA传输,可以采集多路信号,等待采集了大量数据传入内存后,再一次性进行处理,大大提高了数据采集的效率。
-
连续数据采集:在连续转换模式下,ADC的通道会进行连续的转换,在一轮转换后,又从第一个通道重新开始下一轮。此时配合DMA,可实现数据的连续采集与传输,适用于需要长时间、不间断采集数据的场景,如环境监测、工业自动化等。
-
减少CPU干预:传统的ADC数据采集方式,需要CPU频繁地通过中断服务程序获取每次采样的值,这会消耗大量的CPU资源。而使用DMA传输,可以在硬件层面完成数据的搬运工作,无需CPU过多干预,从而释放CPU资源,让其可以处理其他更重要的任务,提高整个系统的运行效率。
-
-
/*main.c*/ HAL_ADC_Start_DMA(&hadc2,(uint32_t *)dma_buffer,30);//ADC初始化 HAL_ADCEx_Calibration_Start(&hadc2,ADC_SINGLE_ENDED);//ADC校准 uint32_t dma_buffer[30];//ADC数组缓存区 float adc_value; void adc_proc(void) { for(int i=0;i<30;i++) { adc_value+=(float)dma_buffer[i]; } adc_value =adc_value/30*3.3f / 4096; }