打印

关于STM32 IO的相应速度问题???

[复制链接]
10503|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dxfshsh|  楼主 | 2008-1-15 10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32 IO的相应速度能不能与其最高工作时钟相当?比方说,定时器的分辨精度为13ns(72MHz),当外部脉冲通过IO触发时,IO的相应速度能不能满足13ns的速度要求;当匹配计数器与计数器匹配时,IO翻转输出能不能,达到13ns的速度。
沙发
香水城| | 2008-1-15 10:46 | 只看该作者

外部脉冲通过IO触发时,频率不得高于CPU时钟频率的1/4

请看TIMx_SMCR寄存器中Bit[13:12]的说明,所以你说的最高翻转速度不是13ns而是55ns,IO翻转输出能够达到这个速度,即18MHz。

我不能完全理解你的问题,但猜测你问题应该是这样。如果我的猜测错误,请把问题在讲详细一些,比如你讲的是哪种操作模式、手册中的第几节。谢谢!

使用特权

评论回复
板凳
dxfshsh|  楼主 | 2008-1-15 12:55 | 只看该作者

其实我的应用很简单

测量一个输入序列的脉宽,并将这个序列调整变换,延迟10ms后转发出去,
输入输出脉宽最高分辨精度为20ns,如果只看计数器的时钟72MHz,好象刚好能满足要求,
但输入输出IO管腿的响应速度不够,如50ns,就不能满足要求了。

使用特权

评论回复
地板
dxfshsh|  楼主 | 2008-1-15 13:07 | 只看该作者

更简单的说,

就是定时器的触发输入和匹配输出,能不能达到计数器的的最高分辨精度72MHz.

使用特权

评论回复
5
ijk| | 2008-1-15 13:29 | 只看该作者

3、4楼的要求应该可以实现

使用特权

评论回复
6
香水城| | 2008-1-15 13:41 | 只看该作者

这个问题要好好看一下,但估计有问题

根据3楼的提示,已知输入输出脉宽最高分辨精度为20ns,但不知道信号的最高频率是多少,是连续的20ns脉冲,即最高频率为50MHz,还是说有20ns的脉冲但不是连续的?

使用特权

评论回复
7
dxfshsh|  楼主 | 2008-1-15 17:41 | 只看该作者

信号特征

两个脉冲间隔约为400ns,但脉冲宽度为20ns至100ns,要测量每个脉冲的宽度,并将这个序列调整变换后,转发出去。
我对定时器输入捕获管腿的响应速度不放心,因为一般CPU设计IO时都没有设计成高速的,尽管定时器内部时钟可达到72MHZ,但IO的响应速度不够,一般认为IO的响应速度为50至100ns,不知道我说的对不对。

使用特权

评论回复
8
ijk| | 2008-1-15 21:31 | 只看该作者

STM32的IO响应速度

  所谓IO响应速度,其实就是IO输出、输入模块里面门电路的速度,对于STM32来说,它的IO门电路的速度是50M Hz,因此我认为可以实现楼上的要求。
  作为佐证,我让MCLK主时钟通过MCO时钟输出引脚输出48M Hz时钟时,在引脚上用示波器清晰看到了48M 的频率。另外在我的印象里,在MCO时钟输出引脚输出72M Hz时钟时,似乎也能输出去,只是由于频率太高,所以波形不是方波,而变成正弦波了。

使用特权

评论回复
9
ijk| | 2008-1-15 21:41 | 只看该作者

STM32的IO响应速度

  加1幅图来说明

使用特权

评论回复
10
香水城| | 2008-1-15 22:12 | 只看该作者

根据7楼的描述,我认为STM32可以捕捉到输入的信号,但不够

7楼给的条件如下:“两个脉冲间隔约为400ns,但脉冲宽度为20ns至100ns,要测量每个脉冲的宽度,并将这个序列调整变换后,转发出去。”

首先“两个脉冲间隔约为400ns”,表示信号频率小于2.5MHz;其次“脉冲宽度为20ns至100ns”,正脉冲(半周期)最小为20ns,表示脉冲频率小于25MHz。根据这两点,只要定时器能产生这样的波形,I/O端口肯定能够正确地输出;至于定时器能否产生这样的波形我还没有仔细研究,似乎可以使用单脉冲模式(One pulse mode),大家可以一起讨论一下如何产生。

关于输入信号是否能被捕捉到,在手册中还没有找到正好针对这个问题的数据,但有一个数据可以借鉴,请看《STM32F103xxx数据手册》的表35(I/O AC characteristics)的最后一栏,外部中断控制器检测信号的脉宽(Pulse width of external signals detected by the EXTI controller)最小为10ns,就是说只要有一个10ns的脉冲即可触发中断;I/O口的输入电路能够捕捉10ns的脉冲触发中断,捕捉20ns的脉冲触发定时器应该不是问题。

最后的问题是,因为STM32定时器的时钟频率最高为72MHz,因此所能测量脉宽的最小精度为1/72MHz,即约为14ns;这样测量这个20ns脉冲的结果,只能是14ns(计数1次),或28ns(计数2次),而不可能是20ns、22ns这样的精度;同理,输出的脉宽肯定也是14ns的倍数,13.9ns、27.8ns、41.6ns、55.5ns、69.4ns、83.3ns、97.2ns......

结论,7楼的信号可以被捕捉到并被输出,但精度有限。

使用特权

评论回复
11
hotpower| | 2008-1-16 01:38 | 只看该作者

感觉IO控制还是悠着点~~~

使用特权

评论回复
12
kgp0213| | 2008-11-12 11:06 | 只看该作者

今天搜到这个帖子

明显好帖,顶之!

使用特权

评论回复
13
grubby01| | 2010-7-1 08:56 | 只看该作者
我和楼主遇到了相同的问题,郁闷

使用特权

评论回复
14
eydj2008| | 2011-1-25 15:15 | 只看该作者
我用程序试了一下 72M时 四个周期 就可以看见IO有输出了

使用特权

评论回复
15
eydj2008| | 2011-1-25 15:15 | 只看该作者
但是 波形 有点尖 不是脉冲

使用特权

评论回复
16
电气罗凯瀚| | 2012-4-15 22:41 | 只看该作者
我还到处找,原来就在这里就能了解很多啊。感谢了。

使用特权

评论回复
17
xblei| | 2012-4-16 08:23 | 只看该作者
分析的都很好。。学习了。

使用特权

评论回复
18
lut1lut| | 2012-4-16 11:39 | 只看该作者
哇噻,大清早的,谁来挖坟!

使用特权

评论回复
19
zhanxiage110| | 2012-5-14 21:33 | 只看该作者
都11点多了 楼上还大清早的?

使用特权

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

本版积分规则

38

主题

154

帖子

0

粉丝