You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32H7 ADC3采样频率计算与实测不符问题咨询

STM32H7 ADC3采样频率偏差问题分析与解答

1. 采样频率计算错误的核心原因

你混淆了ADC3_CCR寄存器中PRESC位的作用:

  • PRESC是对Fadc_ker_ck分频,生成的是ADC转换序列的触发时钟(用于启动规则/注入组的转换序列),并非单样本的转换时钟。你之前计算的30MHz/128=234.375kHz是触发序列的时钟频率,不是单样本的采样率。
  • 当采用3通道连续采集时,每个触发事件会完成3个通道的转换,单样本的实际耗时需要包含以下部分:
    单样本耗时 = (单通道转换时间 + 通道切换开销) + 序列触发间隔 + DMA传输延迟
    
    你的实测数据中,600个样本耗时34.82ms,对应200组3通道序列,单序列耗时约174us,平均单通道58us,这个数值包含了:
    • 单通道转换时间(理论566ns)
    • 多通道序列的通道切换额外时钟周期(STM32H7 ADC切换通道需额外几个内核时钟周期,参考手册具体参数)
    • PRESC分频后的触发间隔(约4.266us)
    • BDMA数据搬运的响应、传输延迟,若开启DMA中断还会有中断处理开销

另外需确认关键配置:

  • 是否开启ADC连续转换模式?若为单次转换模式,触发等待时间会大幅增加耗时。
  • BDMA配置是否正确:是否开启循环模式、内存增量模式,数据宽度是否匹配16位ADC(PSIZE/MSIZE设为16位),DMA优先级是否足够避免被其他外设抢占。

2. Tconv与PRESC的关系

你的推测正确,Tconv与PRESC完全无关:

  • Tconv由ADC内核时钟Fadc_ker_ck和采样时间配置决定,公式为Tconv = (采样时间 + 16位固定转换周期) / Fadc_ker_ck,此处使用的是30MHz的ADC内核时钟,和PRESC分频后的触发时钟属于独立时钟域。
  • PRESC仅影响ADC转换序列的触发频率,不参与转换过程的时钟计时。

验证建议

  • 先测试单通道连续采集:关闭多通道配置,采集200个单通道样本,对比理论耗时与实测值,排查多通道切换的额外开销。
  • 检查ADC的SQR寄存器:确认通道序列长度为3,无多余空通道或重复采样设置。
  • 检查BDMA的CCR寄存器:确认MINC开启、PINC关闭,数据宽度设置正确。

内容的提问来源于stack exchange,提问作者WITC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:12:56