10517|21

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM8能捕获的最高频率 [复制链接]

本人新手。
自己在做捕获的小实验,发现输入频率1M就不行了,512K是可以的。
用的内置振荡器,16M,8个周期更新一次。
1M信号输入,连捕获的中断都进不去了。
是不是捕获本身执行就需要一些时间啊,比如说us级的。
此帖出自stm32/stm8论坛

最新回复

                                 结果怎么样啊  详情 回复 发表于 2010-11-30 13:40
点赞 关注
 

回复
举报

20

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 还是要看你定时器设置吧??分辨率?
此帖出自stm32/stm8论坛
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 16bit timer 无分频,也就是说定时器是按照16M计数的。分辨率已经最高了。
此帖出自stm32/stm8论坛
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

4
 
捕获本身不需要时间,否则无法保证精确性。

请检查你的程序是否正确。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
因为程序没有改变,只是输入频率变化引起了结果的差异,所以才想到了这点。
我再仔细看看。捕获应该是硬件执行,时间非常短。谢谢。
此帖出自stm32/stm8论坛
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 中断的执行是us级的
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
我把程序简化了,就单独测这个功能,还是不能捕获到1M的信号。
是不是我捕获进入中断后,中断处理时间长了呢?
中断处理就只是清标志位而已。要测一个信号的周期需要捕获两次的。
但是现在是输入1M的话,连中断都进不去了。:(
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 你用的是什么型号?
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 STM8S208MB,用的STM8的评估板。我把内部16M的RC分频到1M输出到CCO管脚,然后输入到芯片的TIM捕捉。如果分到512k,没问题的。麻烦版主了。 :)
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

10
 
请问你是如何配置、如何操作的?

如果输入信号频率较高,使用2个通道同时捕获比较好,如下图:

STM8_Input_PWM.GIF (7.81 KB)

STM8_Input_PWM.GIF

此帖出自stm32/stm8论坛
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

11
 
版主,谢谢你的帮助。
对捕获的配置如下,
TIM3_ICInit(TIM3_CHANNEL_1, TIM3_ICPOLARITY_RISING, TIM3_ICSELECTION_DIRECTTI, TIM3_ICPSC_DIV8, 0);  //8个事件触发一次捕获中断,Channel1,上升沿。
TIM3_ITConfig(TIM3_IT_CC1, ENABLE);          //捕获功能使能。
TIM3_Cmd(ENABLE);   //使能TIM3计数
key=0;
while(1)
{
;
}

中断部分程序如下:
@near @interrupt @svlreg void TIM3_CAP_COM_IRQHandler (void)
{
        if ( TIM3_GetFlagStatus(TIM3_FLAG_CC1) == SET )
        {
        switch (key)
        {
        case 0: firstcapture = TIM3_GetCapture1();
        key=1;
        break;
               
        case 1: lastcapture = TIM3_GetCapture1();
        key=2;
        break;
       
        default:TIM3_ITConfig(TIM3_IT_CC1, DISABLE);
        break;       
        }
        TIM3_ClearITPendingBit(TIM3_IT_CC1);
        TIM3_ClearFlag(TIM3_FLAG_CC1);
  }
        return;
}

用PD2脚捕获,捕获的话应该不需要对IO配置的吧。

另外PD2最高输出频率为2M,不知道对输入有没有限制呢。
O3 = Fast/slow programmability with slow as default state after reset
PD2特性。

谢谢。
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 对输入应该有限制
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

13
 
可能你还是没有理解我的意思。

你应该使用2个通道按照我在10楼给出的图中所示,把输入信号同时送入2个通道,然后一个通道捕获上升沿,另一个通道捕获下降沿;这样就可以准确地测量输入的脉冲宽度,在输入信号的占空比为50%时,可以方便地转换为频率。如果输入信号的占空比不是50%,则在捕获中断中应能读到捕获上升沿的那个通道的再次捕获值,2次捕获值之差就是输入信号的频率。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

14
 
版主,我按你的方法试了一下,频率到1M还是不行,中断能进去,读出来为0。
过捕获置1了。TIM3_SR1, TIM3_SR2 寄存器值变成0x06.  
按道理,值已经被捕捉了,但是确是0.

请知悉。
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(中级)

15
 
                                 如果中断中读出的捕获值为0,则可以肯定这不是真正的捕获值,可能是设置上还有问题。
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

16
 
                                 先确定512K捕获值是对的,不要只看有没值
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

17
 
512k, 抓下来就是256,准确。
8*16M/512k=256。
谢谢。
此帖出自stm32/stm8论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

18
 
问题有新的进展,不用中断程序,可以最高捕捉2M速度的信号。
具体原因我会在这周做进一步的分析。谢谢大家。
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

19
 
                                 期待你的进一步的分析
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

20
 
                                 期待楼主的分析结果,哈哈~~
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表