OpenEdv-开源电子网

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

怎么通过一个内部时钟计算一个外部时钟的频率。。

[复制链接]

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
发表于 2016-11-12 11:02:44 | 显示全部楼层 |阅读模式
1金钱
ccccc.png
怎么测

最佳答案

查看完整内容[请看2#楼]

用stm32实现不难,自己搭硬件电路我也没想到好办法 用stm32的方式,用一个定时器的外部时钟源模式2(比如外部信号接到TIM2_ETR),预分频设置10K,然后用另一个定时器(TIM3)定时1s,1s时间到读取TIM3_CNT,如果TIM3_CNT的值为1K左右,那输入频率10M,如果TIM3_CNT的值为10K左右,则输入频率100M.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5703
金钱
5703
注册时间
2013-11-22
在线时间
1198 小时
发表于 2016-11-12 11:02:45 | 显示全部楼层

用stm32实现不难,自己搭硬件电路我也没想到好办法
用stm32的方式,用一个定时器的外部时钟源模式2(比如外部信号接到TIM2_ETR),预分频设置10K,然后用另一个定时器(TIM3)定时1s,1s时间到读取TIM3_CNT,如果TIM3_CNT的值为1K左右,那输入频率10M,如果TIM3_CNT的值为10K左右,则输入频率100M.
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-11-12 11:38:34 | 显示全部楼层
给个程序思路
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-11-12 15:41:40 | 显示全部楼层
lycreturn 发表于 2016-11-12 15:26
用stm32实现不难,自己搭硬件电路我也没想到好办法
用stm32的方式,用一个定时器的外部时钟源模式2(比 ...

FPGA呢
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5703
金钱
5703
注册时间
2013-11-22
在线时间
1198 小时
发表于 2016-11-12 16:43:14 | 显示全部楼层

FPGA 只用来点过流水灯,其他的就没玩过了。
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-11-12 18:19:04 | 显示全部楼层
lycreturn 发表于 2016-11-12 16:43
FPGA 只用来点过流水灯,其他的就没玩过了。

回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-11-12 18:21:46 | 显示全部楼层
lycreturn 发表于 2016-11-12 15:26
用stm32实现不难,自己搭硬件电路我也没想到好办法
用stm32的方式,用一个定时器的外部时钟源模式2(比 ...

你说的32的方法用了2个定时器,一个用来分频,然后用分频得来的时钟去计时第二个定时器吗
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5703
金钱
5703
注册时间
2013-11-22
在线时间
1198 小时
发表于 2016-11-12 18:52:22 | 显示全部楼层
zhoujianwen 发表于 2016-11-12 18:21
你说的32的方法用了2个定时器,一个用来分频,然后用分频得来的时钟去计时第二个定时器吗

是这样的,一个定时器(TIM2)负责对外部脉冲计数,一个定时器(TIM3)负责定时。比如TIM3定时1ms,  TIM2计数的脉冲(注意防止定时器溢出)10K个,那么输入的频率=10K/0.001s=10M.
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-11-13 18:14:06 | 显示全部楼层
lycreturn 发表于 2016-11-12 18:52
是这样的,一个定时器(TIM2)负责对外部脉冲计数,一个定时器(TIM3)负责定时。比如TIM3定时1ms,  TIM2计数 ...

这么说那个已知的25MHZ的脉冲没用啊。。
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5703
金钱
5703
注册时间
2013-11-22
在线时间
1198 小时
发表于 2016-11-13 19:08:58 | 显示全部楼层
zhoujianwen 发表于 2016-11-13 18:14
这么说那个已知的25MHZ的脉冲没用啊。。

是的  没用到
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-11-14 10:35:27 | 显示全部楼层

一个未知频率的脉冲TIM2是怎么输出10K的呢
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5703
金钱
5703
注册时间
2013-11-22
在线时间
1198 小时
发表于 2016-11-14 12:36:55 | 显示全部楼层
zhoujianwen 发表于 2016-11-14 10:35
一个未知频率的脉冲TIM2是怎么输出10K的呢

这是假设输入的频率100M的情况 ,TIM2(10K分频,计时1s)计数是10K左右;如果输入20M,那么TIM2(10K分频,计时1s)计数就是2K左右了
回复

使用道具 举报

104

主题

150

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1791
金钱
1791
注册时间
2014-1-4
在线时间
556 小时
发表于 2016-11-18 13:00:22 | 显示全部楼层
本帖最后由 mcza30 于 2016-11-18 13:05 编辑

用25MHz为时钟,做一个定时器,在这个时间内对待测频率计数,计数值多的就是100MHz的。
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-12-9 17:38:14 | 显示全部楼层
mcza30 发表于 2016-11-18 13:00
用25MHz为时钟,做一个定时器,在这个时间内对待测频率计数,计数值多的就是100MHz的。

但是10MZH的时候怎么办?
if
   计数值大于
则100

else

10

end

这样的话计数值从0开始就会造成两个信号都为高电平了
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-12-9 17:38:16 | 显示全部楼层
mcza30 发表于 2016-11-18 13:00
用25MHz为时钟,做一个定时器,在这个时间内对待测频率计数,计数值多的就是100MHz的。

但是10MZH的时候怎么办?
if
   计数值大于
则100

else

10

end

这样的话计数值从0开始就会造成两个信号都为高电平了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 18:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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