zoukankan      html  css  js  c++  java
  • [转载].关于STM32的CPU为32位,定时器却为16位的探讨

    转自:http://bbs.21ic.com/icview-109558-1-1.html

            http://www.embcom.net/thread-5793-1-1.html

    楼主: STM32 明明是32位的CPU,却将定时器设计成16位的!
    真不明白,明明是32位的CPU,却将定时器设计成16位的,对有些应用32位的定时器可是很重要的悠!
    希望下一个版本能有所改进。ST加油!!!!

    香水城 发表于 2007-12-27
    2楼: 哈哈,以前就有人问过这个问题
    先做个记号,楼主也可以先看看以前这个帖子,请各位先帮忙对帖子中6楼的问题给点提示;等我们整理一下来回答楼主这个问题。

    STM32F103增强型产品的基本信息

    hotpower 发表于 2007-12-28
    3楼: 哈哈~~~可能有时8位的更好~~~这和延时的长短有关~~~
    与32位真没关系~~~

    computer00 发表于 2007-12-28
    4楼: 我比较喜欢32位的计数器。

    s99060 发表于 2007-12-28
    5楼: 既然有编码器接口功能是应该不止16位的了
    2500线的编码器1圈就是2500/5000/10000个脉冲,最多能检测26圈多点
    就算400线的要用的话应该用1600个脉冲了,也才41圈不到

    hotpower 发表于 2007-12-28
    6楼: 哈哈~~~楼上肯定想要大位数的计数器了~~~

    hexenzhou 发表于 2007-12-28
    7楼: Atmel、Luminary也是16位的定时器,很不爽!
    自从用了NXP的32位定时器后就喜欢上它,非常适合高频率的脉冲测量。不过STM32好像可以把两个16位定时器进行级联形成32位的定时器,不知好用否?

    cauthy 发表于 2007-12-28
    8楼: 有预分频器
    有预分频器,定时起多少位影响不大

    香水城 发表于 2007-12-28
    9楼: 8楼点出了问题的关键

    handerson 发表于 2007-12-28
    10楼: 以前就有人问过这个问题

    s99060 发表于 2007-12-28
    11楼: 哈哈,预分频器相当于2500线的编码器换成25线的
    那倒是可以省大笔钱了,25线的俺就自己做了哦

    香水城 发表于 2007-12-28
    12楼: 关于STM32的CPU为32位,定时器却为16位的探讨
    首先,感谢dxfshsh提出了这个很好的问题,使我们可以就这个问题有一个交流的机会。

    STM32的通用定时器可以实现很多功能,例如:定时计数、测量外部信号脉冲宽度、产生PWM波形、测量输入的PWM波形等。在所有这些操作中,定时器的位数主要影响两个参数,一个是定时或测量的精度,另一个是定时的时间长度。下面我们以一个列表看一下定时的精度和定时的长度有多少:

    关于各个预分频器的作用请参考下图的右半部分:

    从表中可以看出,在最高精度下(14ns)定时长度只有0.91ms,在精度为250ns(即4MHz)时定时长度可达16.38ms。这是仅使用了定时器的独立工作模式的情况。

    对于需要高精度并且长延时的应用,16位的定时(上述精度和时间长度)就不够了,这个问题可以有两种解决办法;第一个办法是通过软件的接力完成,这个方法的可行性在于定时时间较长,允许软件有足够的时间介入计数,这种办法非常方便,多数情况都可使用。第二种办法是使用STM32特有的定时器级联功能,实现32位的计数效果,因为级联是由硬件触发的,当设置好各项寄存器后,软件不必中途干预,可以达到高精度长延时的要求。进一步地,STM32最多有四个定时器,如果串联起来,甚至可以实现4*16=64位的计数效果。

    简单地说级联功能,即是一个定时器的定时条件满足后,可以产生一个触发信号启动另一个定时器的定时操作。

    在ST的网站上有一个应用笔记和对应的例子程序,详细说明和演示了如何使用STM32的级联功能实现32位的输入捕获和32位的输出比较功能,各位可以研究一下:
       应用笔记下载地址:http://www.st.com/stonline/products/literature/an/13711.pdf
       演示程序下载地址:http://www.st.com/stonline/products/support/micro/files/an2592.zip

    这是该应用笔记的摘要:
    【AN2592 如何使用STM32F101xx和STM32F103xx的时钟链接功能实现定时器的32位精度】 (2007年8月)
      许多应用需要32位的精度,用于测量超过几百秒的外部信号的周期并产生延迟或较大间隔的周期信号。
      STM32F101xx和STM32F103xx提供了链接两个16位定时器借以获得32位精度的能力,这是使用了定时器的一种特殊配置和链接机制。
      本文给出了模拟一个32位定时器的基本原则;介绍了两个基本的操作模式:输入捕获模式和输出比较模式。每个模式都是单独介绍并附有实例。


    最后希望各位朋友能够帮助我们更加深入地了解应用的需求,对于以工业控制和嵌入式控制仪器而言,因为我们接触的应用有限,不是很清楚哪里需要这样的高精度定时,如果方便我们可以做几个实例分析,这样更有利于我们对今后产品的升级和定位。

    hotpower 发表于 2007-12-28
    13楼: 这个问题软件很好解决~~~原理和环型计数器相同

    computer00 发表于 2007-12-28
    14楼: 总之就是不爽。增加到32位又复杂不了多少。

    香水城 发表于 2007-12-28
    15楼: 硬件解决对于使用者来说肯定是最简单方便的
    但从硬件设计上讲,16位变32位就意味着芯片面积不只是成倍地增加了,结果必然是成本的上升,搞不好这款芯片的成本优势都没了。

    cauthy 发表于 2007-12-28
    16楼: 香版言之甚有理
    相信做过CPLD/FPGA的,都有这种感觉

    computer00 发表于 2007-12-28
    17楼: 不会吧?这么夸张?就几个计数器变成32位的,芯片面积就要翻倍?
    没搞过IC设计,不知道怎么会这样...

    不就是多几个触发器而已吗?

    从3个计数器增加到6个计数器芯片面积就要翻倍了?

    john78 发表于 2007-12-28
    18楼: 就是,不知道怎么搞的str9也是16位的,郁闷
    就是,不知道怎么搞的str9也是16位的,郁闷

    s99060 发表于 2007-12-28
    19楼: 能级联倒是可以解决一下,但不能是预分频那种模式的
    但这样对付一只编码器也要干掉3个定时器了:
    两个串联成32bit编码器方式对外计数,1个产生固定时间触发捕捉寄存器用来测量速度

    这种地方用软件就不方便了,电机可能刚好在进位处快速抖动着,1会儿加1会儿减的

    xwj 发表于 2007-12-28
    20楼: 不足就是不足,不同意预分频器的解释
    这一点上不知道ST是怎么想的...

    computer00 发表于 2007-12-28
    21楼: 既然预分频器都做了,不如把预分频合并进来,不就有32位了?

    john78 发表于 2007-12-28
    22楼: 是呀!
    不足就是不足,用32BIT的耗费什么来着,多用个定时器就不浪费了.

    希望能有改进.

    mohanwei 发表于 2007-12-28
    23楼: 如果做过高精度超声波测距什么的,就知道32位定时器的好了

    lpf336 发表于 2007-12-28
    24楼: 羡慕啊! 有机会也玩玩

    香水城 发表于 2007-12-28
    25楼: 呵呵,不当家不知柴米油盐贵呀
    我并不是说32位的定时器没有必要,我们设计一个产品首先是要有一个合理的定位,目前这款产品定位于那些不必使用32位定时器的应用,但也适当地预留了32位定时的可能。至于什么时候需要设计具有32位定时器的产品,需要广泛的市场调查,所以我一再希望大家能够提供一些思路和应用实例,便于我们做出正确的判断。毕竟32位的单片机推出的时间不长,我们也需要时间不断地发掘应用领域,并不断推出适合市场需求的产品。

    非常感谢各位对这款产品的关注,也希望各位能够给我们更多的反馈,使以后新的产品做得更好。

    好下面继续讨论。。。。

    * - 本贴最后修改时间:2007-12-28 21:34:54 修改者:香水城

    香水城 发表于 2007-12-28
    26楼: 回19楼,级联不必用3个定时器,所有定时器都可以自行触发捕捉
    不知道你看没看ST的手册,不要用其他单片机的概念来套,我在12楼给出的应用笔记中和程序中已经讲得足够清楚,如果你看了那个例子后还有疑问,我们再讨论。

    s99060 发表于 2007-12-28
    27楼: 呵呵,触发捕捉是指连续测量在同样一个固定时间内计数器的计数
    以此得到马达转速.又要测转角又要测转速.
    转角当然就直接计数了,转速就是以固定时间连续读取算出来的

    俺控制电机的

    香水城 发表于 2007-12-29
    28楼: 好啊,LS如果需要用STM32做电机控制项目,可免费参加我们的培训
    STM32的TIM1是专门设计用于变频电机控制的。

    s99060 发表于 2007-12-29
    29楼: 不好意思,俺不是做变频,只是控制一下而已
    TIM1是适合做变频的,一般变频也不需要一定要带编码器

    俺只要控制3~4只普通的伺服电机,所以手头这个项目暂时选了LM带2路编码器接口的片子(千万别发火,俺只知道选适合我的,反正都是M3的核,只是外设不同),但俺肯定要关注ST的,也不是哄你玩而是另一个项目就可能选ST的了---还是因为外设的原因.

    有个统一的"好核"就是好啊!

    香水城 发表于 2007-12-29
    30楼: 这样吧,我先把STM32手册中有关编码器的说明贴出来
    对我来说泛泛地谈各种功能意义不大,不如我们读一下手册看看STM32是如何实现那些功能的。

    下面是STM32技术参考手册中有关编码器部分的摘录,STM32最多有4个定时器,每个定时器都有一个这样的编码器,同时每个定时器有四路输出,可产生多达4x4=16路PWM输出....,我就不一一列举了,各位最好能够看一下手册。

    s99060 发表于 2007-12-29
    31楼: (捕获信号必须是周期的并且可以由另一个定时器产生)
    国文手册已经看过N遍了(至少是关心的部分)

    香板放心,就冲你们这么负责地维护着这个坛子俺也要努力使用ST的片子(LM也挺努力不是吗,否则ST手册可能是看不了N遍的)

    net2wo 发表于 2007-12-30
    32楼: 这句不妥
    不当家不知柴米油盐贵呀

    节流绝对不放在产品身上!!!
    绝大多数应用可能用51也能搞定,但是客户高兴就是用2440 2812来做也未尝不可.对外高速计数当然希望大位数和中断源齐全&快速.
        定位于32位搞成半32位,够晕的!
        没错软件是能搞定,但生意不是这么个做法!!!
        电机控制不知比33系列如何,人家只是16位而已了.

        天堂:款已到帐;
        地狱:你这东西不好用(或:不能用)

    抱歉,说歪了.

    dxfshsh 发表于 2007-12-30
    33楼: 关于俗手与手筋
    首先,感谢香版花大篇幅回答我提出的问题,看来ST真的动真格的了,想做好中国这块单片机市场,不象710刚刚推出时的场景了,关于32位CPU,16位定时器,香版以为是市场定位问题,不是技术问题,本人表示苟同,但ST正式在这里犯了一个小错误,在ST的推广会上无论是厂家还是商家总是拿32与51比,如何如何!!!我想每一个经理人都会给你一个这样的回答,“凡是51能做到的决不会用32。”因此32的市场定位一定要高于51,是51所不能及处,为此设计32位的定时器正是本局的手筋,而分频器只能算是俗手。不知香版以为如何?

    关于成本是提高了一点,但没有香版说的那么严重,面对更广阔的市场这点成本早被消化了。

    还有,就是我们欢迎国外的厂家把优秀的产品介绍到中国来,共同发展,但也希望不要把这里只当成一块“试验田”,要做好产品的售后服务,发现BUG及时通过官方渠道公布并给出解决方案。
                                      谢谢!!!

    hotpower 发表于 2007-12-30
    34楼: "愚形"是可以用软件中断扩展定时计数器的位数的~~~

    dxfshsh 发表于 2007-12-30
    35楼: “愚形”被迫求活,非本手,多了,全盘皆输!

    香水城 发表于 2007-12-30
    36楼: 谢谢33楼的分析
    首先,要声明的是ST决不是把中国市场当作试验田,ST在中国的销售额已经占到公司全球业务的四分之一以上,我想没有人会拿出1/4的市场做实验吧。

    关于STM32这个产品,我们是对它给予了很高希望的,也许知道的人不多,STM32产品是在中国首先发布的,我们的市场部总监从欧洲专程飞到北京,发布了STM32之后,再飞到韩国、日本进行发布,这足以证明ST对中国市场的重视。

    关于STM32或Cortex-M3的市场定位问题,我部分同意33楼的观点,“凡是51能做到的决不会用32。因此32的市场定位一定要高于51,是51所不能及处。”,但是我不同意STM32的定时器不是32位是个失误、是个BUG。说“分频器只能算是俗手”我也不大赞成,这是因为分频器不是在STM32中为了弥补定时器仅为16位而作的补救,如果您注意一下ST的其它单片机,您可以发现几乎所有单片机的定时器中都有分频器存在,因此在STM32的定时器中出现分频器只是ST单片机传统的延续。

    当然我非常理解各位,从应用者的角度考虑,硬件能够提供越多的功能、越强的功能,系统或固件设计者就可以节省很多精力;实际上在与各位就此问题进行讨论时,我也在思考如何向设计部门建议新的功能和更强的功能,这是我们工作的一部分,但是我们做任何的决定,做任何新的建议必须有事实作为依据,只是一味地说32位定时器好是没有足够说服力的。希望各位能够理解我的出发点,这也是为什么我一直强调具体案例的原因,如果各位不方便在此交流,可以发邮件到mcu.china@st.com,我们会积极与您联络,更加深入地探讨这个问题。

    dxfshsh 发表于 2007-12-30
    37楼: 我并没有说16位定时器,就是BUG呀!
    香版,理解有误,“试验田”也没有专门对ST,从地上跑的汽车到天上跑的飞机,对于中国能力尚落后的情况下,外国公司欺负中国人的案例还少吗?我只是作为一名普通靠吃“管腿”养家糊口的人,的一点基本“要求”而已,更何况我在“HDLC”上,已经吃到苦头了。

    香水城 发表于 2007-12-30
    38楼: 哈哈,我的论述不是针对您的
    关于试验田的讨论不是针对您的发言,我实际上是借此说明ST是非常重视中国市场的。我当然也知道有不少国外的公司把一些不成熟的技术拿到中国来做实验,但在半导体行业,尤其是应用技术方面,已经比较成熟了而且竞争也很激烈,我们可不敢冒这个险啊。

    您的发言我认为是很中肯的,也看得出您没有暗示BUG的意思,但如果您回顾一下之前的帖子,应该可以看出还是有人这样暗示的。

    我只是想就事论事,绝没有针对任何人之意,如果某些话造成了误会,还请多多包涵。

    再次感谢33楼的“俗手与手筋”之说,不管观点如何,但我认为那是真诚的表白。

    dxfshsh 发表于 2007-12-31
    39楼: 再过几个小时就2008年了
    再过几个小时就2008年了,对于每一个中国人来讲好像2008是非常不一般的,
    香版依然在线,精神可嘉,在这里你一个新年的问候!

    香水城 发表于 2007-12-31
    40楼: 谢谢大侠支持,也祝各位新年好
    在2008年更上一层楼,大家共同发财,哈哈哈~~~~

    hq_y 发表于 2007-12-31
    41楼: 强烈要求st给香版发加班工资,呵呵~~~~~~~

    hotpower 发表于 2007-12-31
    42楼: 顶一个~~~这样的好斑竹是我们STM32菜鸟的福分~~~
    敬礼!!!!!!!!!!!


    为敬业---敬礼!!!!!!!!

    香水城 发表于 2007-12-31
    43楼: 托楼上二位的福,咱们大家新年共同发财
    俺老板是法国人,您得跟他说法语,至少是英语,否则~~~~,哈哈哈~~~~

    hq_y 发表于 2007-12-31
    44楼: 给个信箱,俺别的不行,英语还能叨叨2句;

    phoenixmy 发表于 2007-12-31
    45楼: 以前有幸听过ST的法式英语~~~~~~~~~~


    实在是难懂啊。。。。。

    总是在单词最后吧音往上翘一下~~~~~~~~~~~

    hq_y 发表于 2007-12-31
    46楼: 呵呵俺去过法兰西~~~~~~~~~~
    晚上坐在巴黎的街头喝啤酒
    法兰西小妞的身材一级棒~~~~~~~~~

    香水城 发表于 2007-12-31
    47楼: 45楼提到的“总是在单词最后把音往上翘一下”的英语好像是意式的
    说老实话,法国人的英语比意大利人说得好,只不过法国人不愿说。

    坐在巴黎的街头喝啤酒、喝咖啡确实是一种享受,躺在卢浮宫前花园的长椅上晒太阳,看着美女经过,您就流口水吧~~~,哈哈哈~~~~~

    hemingxian 发表于 2008-1-1 
    48楼: 12楼说的定时的精度和定时的长度表欠妥当
        定时的精度和定时的长度还应该考虑定时器的预分频器TIMx_PSC,所以定时的精度和定时的长度还可以乘以2~65535之间的任意常数。所以,只要定时精度不超过定时长度的65536分之1,16位的定时器就够用了,否则就要串联成32位的来用。

    香水城 发表于 2008-1-1
    49楼: 谢谢48楼,确实忘了考虑定时器自己的预分频器

    dxfshsh 发表于 2008-1-2
    50楼: 悲哀
    48楼的说法没错,显然君没有做过精确定时同步设备,49楼应该更加了解32。此为最后一贴,今后不再讨论!!!

    lonlmjs 发表于 2008-4-3
    51楼: 32位定时器的CORTEX-M3到了
    据了解NXP即将退出CORTEX-M3  LPC1000系列,12位AD,和他的ARM7一样32位外设,32位定时器。让ST慢慢研究需求吧!

  • 相关阅读:
    Hibrenate load 和 get
    用 JMX 检测应用程序
    java.lang.Class类
    JAVA方法传递参数:传值?传引用?
    Spring Task Schedule 及多线程
    Spring 3.0 注解
    Spring Batch 文档(中文)
    C#中combobox 控件属性、事件、方法
    LINQ to SQL快速上手 step by step
    C#操作字符串方法总结<转>
  • 原文地址:https://www.cnblogs.com/yuphone/p/1949225.html
Copyright © 2011-2022 走看看