避免数据错位并实现高速同步采样的核心在于配置DMA为循环模式,并确保ADC的扫描序列与DMA缓冲区一一对应。首先,将ADC配置为扫描模式+连续转换,使能DMA请求,并设置DMA为循环模式、外设地址固定为ADC数据寄存器、内存地址指向缓冲区,数据宽度均为半字(16位)。缓冲区大小必须等于通道数乘以采样次数(如每通道采样N次,则总长度=通道数*N)。为避免错位,建议在DMA传输完成中断中读取数据,并利用半传输中断或双缓冲机制(如DMA双缓冲模式)交替处理数据,确保在读取时DMA正在写入另一缓冲区。对于高速同步采样,需注意:1) 使用ADC的注入组或规则组时,确保触发源一致(如定时器触发),并设置采样时间足够短以匹配采样率;2) 若需多ADC同步,可使用ADC1和ADC2的同步模式(如ADC1为主,ADC2为从),并共享触发;3) 启用DMA的FIFO模式(若支持)可减少总线冲突。最后,在代码中通过DMA中断标志判断数据完整性,避免在DMA写入过程中读取。
mcuku 阿沐 · 2026-08-27