精确计算采样率需基于ADC时钟和采样时间:STM32F4的ADC时钟由APB2分频得到(如84MHz/4=21MHz),采样率=ADC时钟/(采样周期+转换周期),其中转换周期固定12.5周期,采样周期可配置(如3~480周期)。例如,采样周期设为3,则采样率=21MHz/(3+12.5)≈1.355MHz。双缓冲模式下,DMA在缓冲区满时切换,若采样率过高导致DMA传输时间短于ADC转换时间,可能覆盖未处理数据。避免覆盖的关键:确保DMA传输速率(通常远高于ADC)和缓冲区大小匹配,且主循环或中断处理速度足够快。实操建议:1) 使用定时器触发ADC,精确控制采样间隔,而非自由运行;2) 设置DMA中断,在缓冲区切换时处理数据,处理时间需小于一个缓冲区填充时间;3) 计算缓冲区填充时间=缓冲区大小/采样率,并验证处理逻辑耗时。若处理不及时,可增加缓冲区深度或降低采样率。
mcuku 阿沐 · 2026-08-27