打印

关于输入捕捉说2句

[复制链接]
3704|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luckytoad|  楼主 | 2010-6-27 21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 luckytoad 于 2010-6-27 22:11 编辑

本来想回答个问题的,写了老半天,告诉我
“对不起,本站规定会员每小时最多只能发表 5 个帖子”。 为啥呢?刚注册,多说2句还不行?所以开个新帖,希望对有的人有点启发。
     你好好看看TIM的框图,个人感觉定时器是ARM中最复杂的,编程呢看看例程,但你自己连怎么实现都不清楚的话,就和ARM没关系了,输入捕捉用不到什么主从方式的,那是为级联和同步以及定时器之间的逻辑关系而设置的。
      先告诉你思路,基本原理,实现你自己看例程吧,很清楚的。信香猪,我自信!
      测频有两种方式:一直是输入捕捉脉宽,一直是计数,效果一样。应用场合不同。
1、测脉宽用输入捕捉方式:就是你的定时器时钟是内部的,就是一个标准时间,当一个脉冲(上升或下降)来了,ARM自动给你记下来的脉冲到的时刻(自动打时间戳),通过计算差值可以的到周期,然后计算频率,捕捉的意思就是不用你软件去读定时器值(时刻不准)。该方式不适合高频,否则中断太密集。定时器的频率和你测得有关系,要保证期间只能溢出一次。这种方式一般的单片机ARM DSP都有。
  2、 计数呢:就是在固定的时间间隔内看看你数了多少数,是得到频率,算周期。STM32中的实现方式有多种:(1)、信号频率做外部时钟,你用其他的TIM固定的时间去读,一般单片机只能是这种方式。(2)、输入捕捉反用(stm32可用),信号源作为定时器的外部时钟,用固定的脉冲chx去触发捕捉,这种方式理论上是没有误差的,也是硬捕捉。(3)将脉冲信号作为外部中断,你自己数中断次数,也是简单而有效的方法,和输入捕捉就无关了。看你实际应用选择合适的方法。
   计数方式适合高频,捕捉定时器频率和你的要求响应时间和信号频率有关。
算是扫盲吧,对高手就是废话,但高手可以补充看看还有什么方式测频啊。
另外对不懂硬件的人,用ARM也是乖难为人的。熟悉STM32关键看懂各个部件的框图和工作机制,编程嘛,如果你用哭函数的话,简直就是描述语言,简单之极。对内存或效率要求高的用直接寄存器访问,要求再高的结合指令集选择合适的C语句,效率也很高的。
150KHZ左右,STM32理论测量误差就是1个码,高的吓人,对芯片而言误差只和他的晶振误差有关,也和你采样频率有关,也就是的响应时间,同样是150k,不同采样频率的1个码的误差代表的时间意义是不一样的,但这些都无关紧要,一般实际误差是由你硬件设计的测频通道决定的,要考虑有些经验型的东西,比如滤波,去抖以及响应时间的因素。
      设计就是用合适的方法去实现你的目标,没有最好,满足设计要求就行。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

72

帖子

2

粉丝