STM32/STM8技术论坛
直播中

weilincai

6年用户 8经验值
擅长:嵌入式技术 光电显示 控制/MCU RF/无线
私信 关注
[问答]

stm32h750vbt6 v版本芯片,ADC采样速度太低

stm32h750vbt6 v版本芯片,定时器TIM3触发ADC2采样速度最高只能达到1M,无论怎么调时钟频率,都这样,无法超过1M,是V版本芯片锁死了速率吗?

回帖(1)

尚文清

2025-3-24 18:16:50

针对STM32H750VBT6 V版本芯片ADC采样率无法超过1Msps的问题,以下是可能的原因及解决方案的分步说明:




1. 确认ADC时钟源及分频配置



  • 检查时钟树配置

    • STM32H7的ADC时钟(ADCCLK)由per_ck提供。确保per_ck的频率足够高(例如200MHz)。

    • 通过RCC配置ADCCLK = per_ck / ADC_PRESCALER,分频系数应尽可能小(例如ADC_PRESCALER=4,得到50MHz的ADC时钟)。



  • 关键代码


     RCC_PeriphCLKInitTypeDef periph_clk_init = {0};
    periph_clk_init.PeriphClockSelection = RCC_PERIPHCLK_ADC;
    periph_clk_init.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2; // 假设PLL2输出高频per_ck
    HAL_RCCEx_PeriphCLKConfig(&periph_clk_init);

    // 设置ADC预分频
    __HAL_RCC_ADC_CONFIG(RCC_ADCCLKSOURCE_CLKP);





2. 优化ADC采样时间



  • 缩短采样周期

    • 减少ADC_SAMPLETIME的配置值(例如从ADC_SAMPLETIME_19CYCLES_5改为ADC_SAMPLETIME_2CYCLES_5)。

    • 总转换时间 = 采样时间 + 固定转换周期(12.5 cycles)。例如:

      • 若采样时间=2.5 cycles,总时间=15 cycles,理论最大采样率=50MHz /15 ≈ 3.33Msps。



  • 关键代码
     ADC_ChannelConfTypeDef sConfig = {0};
    sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5; // 最小采样时间
    HAL_ADC_ConfigChannel(&hadc2, &sConfig);




3. 验证定时器触发频率



  • 检查TIM3配置

    • 计算TIM3的触发频率:触发频率 = TIM3_CLK / (PSC + 1) / (ARR + 1)

    • 例如:若TIM3_CLK=200MHz,设置PSC=0ARR=49,触发频率=200MHz /1 /50=4MHz。


  • 关键代码
     htim3.Instance = TIM3;
    htim3.Init.Prescaler = 0;      // 无分频
    htim3.Init.Period = 49;        // ARR=49
    HAL_TIM_Base_Init(&htim3);
    HAL_TIM_Base_Start(&htim3);    // 启动TIM3




4. 禁用ADC过采样及后处理



  • 关闭过采样功能

    • 过采样会显著降低有效采样率。确保ADC_OVERSAMPLING_DISABLE


  • 关键代码
     hadc2.Init.OversamplingMode = DISABLE;
    HAL_ADC_Init(&hadc2);




5. 确保DMA传输无阻塞



  • 配置DMA连续传输

    • 使用DMA传输ADC数据,避免中断延迟。配置DMA为循环模式,双缓冲(Double Buffer)更佳。


  • 关键代码
     hdma_adc2.Init.Mode = DMA_CIRCULAR;    // 循环模式
    hdma_adc2.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_adc2.Init.MemInc = DMA_MINC_ENABLE;
    HAL_DMA_Init(&hdma_adc2);




6. 检查芯片版本限制



  • 查阅勘误手册

    • 通过ST官方文档(如Errata Sheet ES0392)确认V版本是否存在ADC速率限制。

    • 部分早期H750版本可能存在ADC性能问题,需升级固件或更换芯片版本。





7. PCB设计检查



  • 信号完整性优化

    • 确保ADC参考电压(VREF+)稳定,减少电源噪声。

    • 缩短ADC输入信号走线,避免高频干扰。





实测验证



  • 使用逻辑分析仪或示波器

    • 测量TIM3触发信号的实际频率,确认是否达到预期。

    • 检查ADC转换完成中断的频率,验证是否与理论值匹配。





通过以上步骤调整后,ADC采样率应能显著提升。若问题仍存在,建议联系ST技术支持,提供完整的时钟配置、ADC初始化代码及触发逻辑进一步排查。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分