在STM32F4上使用DMA多通道ADC采样,核心是确保数据顺序与通道配置一致。首先,配置ADC为扫描模式(SCAN=1)和连续转换(CONT=1),并设置DMA为循环模式(Circular),数据宽度为半字(16位)。DMA传输的数据顺序严格对应ADC通道序列(从ADC_SQR1的SQ1开始),因此需将DMA缓冲区大小设为通道数×采样次数,并确保缓冲区类型为uint16_t数组。为避免数据错位,建议在DMA传输完成中断中,通过读取ADC->DR寄存器或使用双缓冲(DMA双缓冲模式)来同步处理。解析时,按通道顺序索引:result[ch_index] = buffer[ch_index + n*num_channels]。实操建议:1)初始化时先配置ADC通道顺序,再配置DMA,避免顺序错乱;2)若使用注入通道,需单独处理;3)考虑使用HAL库的ADC多通道DMA示例,但需注意其内部缓冲管理。最后,验证时可用固定电压源测试每个通道的对应关系。
mcuku 阿沐 · 2026-08-27