STM32
直播中

李志静

8年用户 1502经验值
私信 关注
[问答]

用STM32H750定时器抓最高30M信息源,定时器能不能配置成100M?

你好,我们要用 STM32H750 定时器抓最高30M 信息源,定时器能不能配置成100M?超过1M用适波器无法看到波形,不知道是哪的问题

回帖(1)

张亮

2025-8-13 17:49:05

关于STM32H750定时器抓取30MHz信号源的问题分析和解答如下:


1.  STM32H750定时器能否配置到100MHz输入捕获频率?


可以,但有严格条件:



  • 时钟源: STM32H750的定时器时钟源自APB总线(APBx, x=1, 2, 3)。APB总线时钟的最高频率通常可达240MHz

  • 定时器时钟: 定时器的实际输入时钟频率(CK_PSC)等于APB时钟频率。如果APB预分频器(PPRE)设置不为1(即不分频),定时器内部的时钟会自动加倍

    • 例如:如果HCLK = 480MHz, APB1 prescaler (PPRE1) = 2 -> APB1 clock = 240MHz。此时连接到APB1总线上的定时器(如TIM2, TIM3, TIM4, TIM5),其内部的CK_PSC时钟会自动变成2 * APB1 clock = 480MHz


  • 输入捕获时钟: 输入捕获通道捕获外部信号的频率上限,理论上可以达到定时器的内部时钟频率CK_PSC

  • 结论:

    • 可以配置: 你需要确保定时器的时钟源CK_PSC达到或超过100MHz。这需要在系统时钟配置时,将APB总线时钟配置得足够高(例如240MHz),并利用其自动倍频特性。

    • 硬件限制: 确保目标定时器本身支持这么高的时钟频率。查阅STM32H750参考手册中特定定时器(TIMx)的特性章节,确认其最大允许的时钟频率。对于TIM1/TIM8/TIM15/TIM16/TIM17等高级/通用定时器,通常支持很高的时钟频率(如480MHz)。



2.  抓取30MHz信号源需要多快的定时器捕获频率?



  • 奈奎斯特采样定理: 理论上,要无失真地重构一个信号,采样频率至少需要是信号最高频率的2倍。对于30MHz信号,最低采样频率是60MHz

  • 工程实践: 理论上的2倍是最低要求。实际工程中,为了可靠地捕获信号的时序细节(特别是边沿),采样频率需要远高于2倍。建议采样频率是信号最高频率的5-10倍以上。

    • 30MHz信号的5倍 = 150MHz

    • 30MHz信号的10倍 = 300MHz


  • 你的计划(100MHz):

    • 100MHz采样率是你的目标定时器频率。

    • 对于30MHz信号,100MHz / 30MHz ≈ 3.33。这意味着每个信号周期大约采样3.3次

    • 这个采样率勉强够用,但处于临界状态。它可以捕获到信号的存在和基本频率,但对于精确测量信号的占空比或者快速边沿(上升/下降时间),精度会受限,容易受到噪声和抖动的影响。更推荐150MHz或更高



3.  超过1MHz用示波器无法看到波形 - 问题分析


这是一个非常关键的现象,表明你的测量链路上存在问题。看不到波形的原因几乎肯定不是STM32定时器配置问题本身,而是信号输入路径或观测方式的问题:



  • 最常见原因:示波器带宽不足

    • 示波器的模拟带宽是限制其测量高频信号能力的核心指标。

    • 测量30MHz信号,示波器带宽至少需要100MHz(最好是150MHz或更高)。

    • 现象:

      • 信号幅度严重衰减、波形变形(如方波变成类似正弦波)。

      • 高频分量丢失,无法看到快速的上升/下降沿。

      • 低于示波器带宽的信号能看到,超过后就很难看到或完全看不见。


    • 检查: 确认你的示波器型号及其标称带宽(-3dB点)。用示波器测量一个已知的低频方波(如1kHz),看上升/下降时间是否正常,确认探头补偿校准正确。然后逐步增加信号源频率,观察波形劣化点。


  • 探头问题

    • 探头带宽不足: 探头也有带宽限制。一个10x探头通常比1x探头带宽高得多,但需要确认你的探头带宽是否足够(≥示波器带宽)。使用低带宽探头(如<100MHz)测30MHz信号会导致失真。

    • 探头接地不良: 使用过长的接地线(鳄鱼夹)会引入巨大电感,导致高频振荡(振铃)或信号失真。务必使用探头配套的短接地弹簧。

    • 探头补偿不当: 探头在使用前必须针对特定示波器输入通道进行电容补偿校准(使用示波器前面板的标准1kHz方波信号)。未校准的探头会引入失真。

    • 探头设置错误: 确保探头衰减比(1x, 10x)设置与示波器通道的设置匹配。


  • 信号源问题

    • 信号源输出的信号频率是否准确达到了30MHz?信号源本身是否有足够的驱动能力?输出电平是否足够高(如CMOS电平3.3V)?用带宽足够的示波器直接接信号源输出端验证。


  • PCB/连接问题

    • 阻抗匹配: 高频信号需要考虑传输线效应(PCB走线过长)。如果信号源输出阻抗、传输线特性阻抗(如50Ω)和接收端(MCU引脚)输入阻抗不匹配,会导致信号反射、过冲、振铃甚至幅度下降。

    • 连接线缆过长/质量差: 连接信号源到目标板的线缆过长或质量差(如普通杜邦线)会引入寄生电容电感,衰减高速信号,并使波形畸变。

    • STM32引脚配置:

      • 输入捕获引脚是否已正确配置为Alternate Function模式?

      • 引脚速度是否配置为最高速度(如GPIO_SPEED_FREQ_VERY_HIGH)?这对于高速信号输入至关重要。

      • 是否启用了输入缓冲器(通常默认开启)?




总结与建议



  1. 定时器频率: 可以将STM32H750的定时器配置到100MHz甚至更高用于输入捕获,前提是系统时钟树配置正确(APB总线时钟足够高),且目标定时器支持该频率。强烈推荐配置到150MHz或更高以更好地捕获30MHz信号。

  2. 示波器问题排查(优先级最高):

    • 确认并升级示波器/探头: 确保示波器和探头组合模拟带宽远高于30MHz(≥100MHz,推荐≥150MHz)。这是你当前看不到波形的首要原因。

    • 使用探头短接地弹簧。

    • 精确校准探头。

    • 检查探头衰减比设置匹配。

    • 用示波器直接测量信号源输出端,确认信号源本身在高频下输出正常。


  3. 信号路径优化:

    • 缩短连接线: 尽量缩短信号源到MCU引脚之间的物理连线。避免使用普通杜邦线。考虑使用同轴电缆连接(如SMA接头转接板)。

    • 阻抗匹配: 如果信号源输出是50Ω阻抗,且频率很高/连线较长:

      • 可在信号源输出端串联一个小电阻(如22-33Ω)靠近信号源放置,并在MCU输入端并联一个50Ω电阻到地(靠近MCU引脚放置),形成一个简单的匹配网络(损耗较大)。

      • 理想情况是设计匹配的50Ω传输线(微带线)并端接。


    • 检查STM32引脚配置: 确保GPIO模式为AF,速度设置为最高。


  4. STM32软件配置检查(在确认信号能正常到达MCU引脚后进行):

    • 确认系统时钟配置(HCLK, PCLKx)已达到预期(如HCLK=480MHz, PCLKx=240MHz,定时器实际时钟480MHz)。

    • 确认所选定时器支持该时钟频率。

    • 正确配置定时器的预分频器(通常设置为0即不分频)、计数模式(通常向上计数)、自动重装载值(根据需要设置)。

    • 正确配置输入捕获通道:

      • 输入滤波器(ICxF):根据信号噪声情况适当设置(值越大抗噪越好,但会牺牲时间分辨率)。初始可以设置为0x0(无滤波)。

      • 输入边沿检测(CCxS, CCxP):选择捕获上升沿、下降沿或双边沿。

      • 预分频器(ICxPSC):设置为0(每次边沿都捕获)。若测量周期/占空比,通常需要捕获连续两个边沿。


    • 使能输入捕获中断和/或DMA。

    • 编写中断/DMA服务程序读取捕获寄存器(CCRx)的值。



关键步骤:先用高带宽示波器(确保探头良好接地并校准)直接测量信号源输出到STM32目标引脚的信号波形是否正常(30MHz时仍是可识别的方波/脉冲)。如果这里都看不到或波形失真严重,那么STM32根本不可能捕获到有效信号,必须先解决信号完整性问题。只有当你能用示波器在MCU引脚处看到相对干净的30MHz信号时,调试STM32的输入捕获才有意义。

举报

更多回帖

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