避免DMA多通道ADC数据错位,核心是确保每次转换序列的起始通道固定,并让DMA传输与转换完成同步。实操建议:1) 配置ADC为扫描模式+连续转换(或外部触发单次序列),将通道序列按固定顺序排列(如CH0→CH1→CH2),并设置DMA为循环模式,数据宽度与ADC数据寄存器对齐(如半字)。2) 使用ADC的DMA请求信号(如DMA1_Channel1)触发传输,并开启DMA传输完成中断,在中断中读取缓冲区首地址,确保数据按序列对齐。3) 若需同步触发(如PWM触发),将ADC触发源设为定时器TRGO,并配置定时器更新事件或比较输出,保证每个触发周期启动一次完整序列转换。4) 关键:在DMA配置中设置外设地址固定(&ADC->DR),内存地址递增,并确保缓冲区大小等于通道数×采样次数,避免覆盖。5) 调试时,可在缓冲区中插入已知电压通道(如Vrefint)作为校验,验证对齐性。若仍错位,检查DMA优先级和ADC时钟,避免总线冲突。
mcuku 阿沐 · 2026-09-01