精确计算采样率需基于ADC时钟和采样时间:STM32F4的ADC时钟来自APB2(最高84MHz),经分频后(如/4得21MHz),单次转换时间=采样周期+12.5周期。若采样周期为3周期,则单通道转换周期为15.5,采样率=21MHz/15.5≈1.355MHz。但双缓冲DMA下,实际采样率由定时器触发频率决定(若用定时器触发),而非ADC连续转换。避免缓冲覆盖的关键:确保DMA传输速率高于ADC转换速率,且双缓冲切换在DMA半传输和完全传输中断中完成。建议:1) 配置DMA为循环模式,双缓冲使能,缓冲区大小设为采样点数的一半;2) 在DMA中断(半传输和传输完成)中处理数据,处理时间必须小于半个缓冲区的填充时间;3) 若使用定时器触发,采样率=定时器频率/(预分频+1)/(重载值+1),并确保该值小于ADC最大转换速率。实操中,可用示波器测量定时器输出或DMA中断频率验证。若缓冲覆盖,可增大缓冲区或降低采样率。
mcuku 阿沐 · 2026-08-27