核心思路是采用“DMA半传输/传输完成中断+双缓冲”或“循环模式+定时器触发”来保证通道对齐。首先,配置ADC为扫描模式且DMA为循环模式,数据宽度设为半字(16位),并确保DMA缓冲区大小等于通道数×采样次数。为避免错位,建议在每次DMA传输完成中断中,通过读取ADC状态寄存器(如ADC1->SR的EOC标志)或使用定时器更新事件作为硬件触发源,确保采样起始点与DMA搬运同步。实操上,推荐使用定时器(如TIM1)的TRGO事件触发ADC,并将DMA设置为循环模式,这样每个定时器周期内ADC按固定顺序采样所有通道,DMA按顺序搬运,天然对齐。若需更高精度,可在DMA传输完成中断中记录当前定时器计数值,用于软件校正。关键点:禁用DMA的FIFO(或配置为直连模式),避免数据缓冲引入延迟;同时,确保ADC采样时间足够长,防止通道间串扰。最后,用逻辑分析仪验证各通道波形相位差,微调定时器预分频值。
mcuku 阿沐 · 2026-08-27