OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5623|回复: 8

关于stm32h743频率采集问题出现不准确

[复制链接]

63

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2015-11-29
在线时间
146 小时
发表于 2022-1-10 15:54:18 | 显示全部楼层 |阅读模式
20金钱
stm32h743频率采集,采用200M采集2Mhz频率,
if(state==0)
        {
                state=1;
                  TIM5CH1_CAPTURE_VAL=HAL_TIM_ReadCapturedValue(&TIM5_Handler,TIM_CHANNEL_1);//获取当前的捕获值.
               
        }else
        if(state==1)
        {
                state=0;
                 TIM5CH1_CAPTURE_VALBASE=HAL_TIM_ReadCapturedValue(&TIM5_Handler,TIM_CHANNEL_1);//获取当前的捕获值
                if(TIM5CH1_CAPTURE_VALBASE>TIM5CH1_CAPTURE_VAL)
                        test=TIM5CH1_CAPTURE_VALBASE-TIM5CH1_CAPTURE_VAL;
                else
                        if(TIM5CH1_CAPTURE_VAL>TIM5CH1_CAPTURE_VALBASE)
                                test=(0XFFFFFFFF-TIM5CH1_CAPTURE_VAL)+TIM5CH1_CAPTURE_VALBASE;
                        else
                                test=0;
                        teste1[i]=test;
                        i++;
                        if(i>=5)
                        {
                                paixu();
                        if(test!=0)
                          fq=100000000.0f/((teste1[2]+teste1[3])/2);
                         i=0;
                  }                       
        }

换算出来的在1MHZ和2MHZ之间这是为什么?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

896

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4305
金钱
4305
注册时间
2019-9-4
在线时间
896 小时
发表于 2022-1-10 16:05:04 | 显示全部楼层
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2020-8-19
在线时间
335 小时
发表于 2022-1-10 16:47:34 | 显示全部楼层
帮顶   
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2022-1-11 01:50:59 | 显示全部楼层
你想测量频率,建议用外部脉冲计数模式。。。
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8463
金钱
8463
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-1-11 09:16:39 | 显示全部楼层
先测一下你这段代码占用多长时间:
代码开始时令IO置高,代码结束时令IO置低,示波器测量这个IO。
专治疑难杂症
回复

使用道具 举报

63

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2015-11-29
在线时间
146 小时
 楼主| 发表于 2022-1-11 10:08:43 | 显示全部楼层
正点原子 发表于 2022-1-11 01:50
你想测量频率,建议用外部脉冲计数模式。。。

最高200Mhz的采样频率,采集2Mhz不准觉得很奇怪
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2022-1-12 02:00:33 | 显示全部楼层
feiyang0725 发表于 2022-1-11 10:08
最高200Mhz的采样频率,采集2Mhz不准觉得很奇怪

很正常, IO速度本来就不快。
而且你这个是用中断的方式来计算吧? 中断频率能到500Khz,都是牛逼的很了。。。MCU处理中断是需要时间的, 这么快根本搞不定。
所以做频率计是铁定不能用中断来做的,一定是用脉冲计数的方式。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

63

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2015-11-29
在线时间
146 小时
 楼主| 发表于 2022-1-12 11:12:19 | 显示全部楼层
正点原子 发表于 2022-1-12 02:00
很正常, IO速度本来就不快。
而且你这个是用中断的方式来计算吧? 中断频率能到500Khz,都是牛逼的很了 ...

我用外部中断计数,定时器计时,还是只能到1.5Mhz左右。每次5个周期看看计时多长时间然后做平均。到了1.5Mhz再往上频率就不准了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2022-1-13 02:07:37 | 显示全部楼层
feiyang0725 发表于 2022-1-12 11:12
我用外部中断计数,定时器计时,还是只能到1.5Mhz左右。每次5个周期看看计时多长时间然后做平均。到了1.5 ...

用定时器的脉冲计数功能, 相当于定时器的CNT加1, 就表示1个脉冲。
然后统计1秒内,CNT从0变到多少, 就是你的频率了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 06:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表