请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

定时器捕获/计数测频率 STM32H743,TIM5,200Mhz,无分频,单周期误差200ns/160ns

[复制链接]
迷路的萤火虫 提问时间:2021-11-16 18:41 / 未解决

大家好

我在使用STM32H743做外部方波的频率计算。外部高速晶振25M,SYSCLK=400MHz, 使用了两种方法都有误差。

方法一,TIM5,200Mhz没有分频,捕获两次上升沿时间,运行后时间为23.74us(换算频率:42122Hz),实际示波器显示23.94us(41771Hz).不清楚这个误差 少200ns哪里产生的?

方法二,方法一基础上做计数,TIM3定义1s的溢出中断,每次中断读取上升沿的次数(TIM5中断中Frq_cnt计数),TIM3 200MHz时钟,Prescaler=20000-1,产生1s的溢出中断,运行后计数为41493Hz(换算单周期时间:24.1us),同上示波器是23.94us(41771),误差 多160ns,两种方法偏差还有差异。

示波器截图如下

示波器读数.jpg

代码如下:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//更新中断(溢出)发生时执行
{
  if(htim==(&TIM3_Handler))
  {
    LED1_Toggle;        //LED0反转
    FRQ_FLAG = 1;
    Frq_data = Frq_cnt;
    Frq_cnt = 0;
  }
  if(htim==(&TIM5_Handler))
  {
    if((TIM5CH1_CAPTURE_STA&0X80)==0)//还未成功捕获
    {
      if(TIM5CH1_CAPTURE_STA&0X40)//已经捕获到高电平了
      {
        if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
        {
          TIM5CH1_CAPTURE_STA|=0X80;        //标记成功捕获了一次
          TIM5CH1_CAPTURE_VAL=0XFFFFFFFF;
        }else TIM5CH1_CAPTURE_STA++;
      }
    }
  }
}

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)//捕获中断发生时执行
{
  if((TIM5CH1_CAPTURE_STA&0X80)==0)//还未成功捕获
  {
    if(TIM5CH1_CAPTURE_STA&0X40)        //捕获到第二个上升沿 
    {     
      TIM5CH1_CAPTURE_STA|=0X80;        //标记成功捕获到一次高电平脉宽
      TIM5CH1_CAPTURE_VAL=HAL_TIM_ReadCapturedValue(&TIM5_Handler,TIM_CHANNEL_1);//获取当前的
    }else   //还未开始,第一次捕获上升沿
    {
    TIM5CH1_CAPTURE_STA=0;          //清空
    TIM5CH1_CAPTURE_VAL=0;
    TIM5CH1_CAPTURE_STA|=0X40;      //标记捕获到了第一个上升沿
    __HAL_TIM_SET_COUNTER(&TIM5_Handler,0);     //计数器清零xs

    }         
    }
    Frq_cnt++;
收藏 评论2 发布时间:2021-11-16 18:41

举报

2个回答
xmshao 回答时间:2021-11-17 10:11:04
如果待测频率较高的话,采用第二种方式可能更好点, 测量N+1个上沿或者下沿,得到N个脉冲的数据。这里你要注意两点:
第一,注意统计溢出次数;第二,在一轮测试完成前在中断程序里尽量不要逗留太久以免丢失脉冲统计。这样有篇文章可以参考下:
基于定时基于定时器捕获测量脉宽的应用示例  ,它介绍了基于单个定时器通道和双通道PWM输入模式的测量方式。
xmshao 回答时间:2021-11-17 10:16:23
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版