本文介绍的定时器的信号触发与主从模式,主要指通用定时器或高级定时器,不涉及基本定时器,因为基本定时器相对比较简单,对外无过多联络。
那对于STM32定时器而言,有哪些触发信号呢?这些信号来自何处?或流向哪里呢?
触发信号分两大类:触发输入信号【TRGI】,简单地讲就是从外部引入到本定时器的信号;另一类就是触发输出信号,即TRGO信号,它是定时器输出给其它定时器或外设的触发信号。
在STM32参考手册里文字描述部分,找不到一句完整的关于触发输入信号的描述文字,它主要把触发输入信号的概念融入进时钟源部分,倒是在从模式控制寄存器TIMX_SMCR的TS字段对定时器的触发输入信号有个系统的归纳。从数目上有讲一般可以多达8个,大致分为三类:
第一类:来自定时器自身输入通道1或通道2的输入信号,经过极性选择和滤波以后生成的触发信号,连接到从模式控制器,进而控制计数器的工作;顺便提醒下,来自通道1的输入信号经过上升沿、下降沿双沿检测而生成的脉冲信号进行逻辑相或以后的信号就是TI1F_ED信号,即TI1F_ED双沿脉冲信号。
第二类,来自于外部触发脚[ETR脚]经过极性选择、分频、滤波以后的信号,经过触发输入选择器,连接到从模式控制器。当然分频和滤波不是必需的,可以根据外来信号频率高低及信号干净度来决定。
第三类,来自其它定时器的触发输出信号,通过内部线路连接到本定时器的触发输入控制器而连接到从模式控制器。【当然个别特定外设也会产生一些输出信号给到定时器,这里不做重点讨论】再具体一点说,就是其它定时器的触发输出信号连接到本定时器的内部触发输入端ITRx,x可能是0~3,也就是说常规定时器内部最多可以4路内部输入选择端。
结合前面的介绍,不论来自本定时器外部的哪一类触发输入信号,它们有个共同特点,就是都要经过触发输入选择器而连接到从模式控制器,从而使得计数器的工作受到从模式控制器的控制或影响,基于这一点,定时器工作在从模式。
那么,定时器的从模式控制器可以对计数器实现哪些控制或影响呢?从模式控制器检测到触发输入信号时,可以对定时器进行如下操作而控制或影响计数器的工作:
1、对计数器复位
2、启动或停止计数器的计数动作
3、使能计数器模块的工作
4、通过触发信号为计数器提供时钟源
既然这么多可能的控制方式,那么,当触发输入信号出现时,从模式控制器到底如何影响计数器的工作呢?这就引出了定时器从模式话题。也就是说,从模式控制器最终如何控制或影响计数器的工作,又取决于定时器的从模式。定时器的从模式又有哪些呢?
整体上讲,STM32通用或高级定时器的从模式有如下几种:[SMS@TIMx_SMCR]
1、复位模式 【Reset mode】
2、触发模式 【Trigger mode】
3、门控模式 【Gate mode】
4、外部时钟模式1 【External clock mode 1】
5、编码器模式 【encode mode】
对于编码器模式,它是针对编码器应用的一个特定从模式,应用时注意使用定时器的通道1、通道2引进编码器脉冲,这里不赘述。以下重点介绍前四种从模式。
复位模式[Reset Mode]
当有效触发输入信号出现时,计数器将会被复位,同时还会产生更新事件和触发事件。
如果计数器向上计数或中央对齐模式的话,复位后计数器从0开始计数,如果向下计数模式,复位后计数器从ARR值开始计数。
不妨以计数器向上计数为例,将它配置在复位从模式。比方说当计数器计数到某个数据的时候,来了个触发信号,计数器不再继续往上计数,而是重新归0后开始计数。当然,计数器的实际复位操作与触发沿之间往往会有个小的延时,这是由于触发信号作为有效触发脉冲的话,还需要经过定时器内的同步电路确认。
这里顺便插几句,我们在介绍定时器的更新事件源时会提到复位模式下的触发脉冲,就是指现在讨论的情形。即处于复位模式的定时器,在触发信号的作用下可以对计数器复位并产生更新事件,实现预装载寄存器内容到影子寄存器的拷贝更新。
关于处于复位模式下的定时器,有两点提醒:
1、只要有复位触发脉冲出现,计数器就会被复位重置。复位次数取决于触发脉冲次数。
2、工作在复位模式下的定时器,其使能需靠软件代码实现,即使能定时器的CEN@TIMx_CR1位。
触发模式 [Trigged Mode]
当有效触发输入信号出现时,会将本来处于未使能状态的计数器使能激活,让计数器开始计数,同时还会产生触发事件。
触发从模式下,触发信号具有相当于软件使能计数器的作用,即置位CEN@TIMx_CR1,这也是它最大最明显的特征。
门控模式 [Gate Mode]
定时器根据触发输入信号的电平来启动或停止计数器的计数。在计数器启动或停止时都会产生触发事件并置位相关标志位,TIF@TIMx_SR。
下图表示来自TI1的输入信号,低电平时计数器启动计数,高电平时停止计数。
同样,工作在门控模式下的定时器,其使能需靠软件代码实现,即使能定时器的CEN@TIMx_CR1位。
外部时钟模式1从模式 [External Clock Mod1]
这个模式比较特别,名字也有点奇葩。其实,这个从模式跟时钟源的外部时钟模式1有渊源。在介绍计数器时钟源时,讲到过外部时钟模式1,即计数器的时钟来自TI1或TI2的输入脉冲,连接到从模式控制器并为计数器提供时钟。
也就是说,当计数器的时钟来自触发信号时,计数器就处于外部时钟模式1从模式。当然,这个触发信号就不仅仅限于来自定时器通道TI1/TI2的输入信号,还可以是上面提到过三类触发输入信号的任一种,比方来自其它定时器的触发输出信号,或者来自ETR脚的触发输入信号。
或者,反过来讲,如果定时器的时钟来自外来触发信号时,它一定就工作在外部时钟模式1从模式,显然,它的工作离不开这个触发信号,不然连计数时钟都没有。这个从模式“从”得很彻底。
比如,我们可以使用来自ETR脚的滤波信号ETRF作为触发信号并担当计数器的时钟源。
到此,上面比较集中介绍了几类常见定时器触发输入信号以及四种典型的定时器从模式及各自特点。触发模式的典型特点是触发信号可以使能计数器的工作,其它模式的计数器的工作需要软件使能。外部时钟模式1从模式比较特别,当计数器的时钟源来自触发信号时,此时定时器就工作在外部时钟1从模式,此时触发信号扮演着双角色,即触发信号与时钟信号。
前面重点介绍了基于触发信号与定时器的触发与同步,当触发信号是源于其它定时器的触发输出时,这里就自然而然地衍生出了不同定时器间的触发与同步,定时器间联系的纽带就是这个触发信号。
定时器间的触发与同步,并无拓展新概念,只是基于定时器信号触发与同步的做了应用上的延伸。定时器所涉及的从模式还是上面提到的那几种,复位模式、触发模式、门控模式及外部时钟1模式。
前面多次提到其它定时器的触发输出,这里的其它是相对而言的,本定时器以为的定时器就是其它定时器。一般来讲,STM32的常规定时器都能输出触发信号[TRGO],差别在于不同定时器的可能的输出信号源在数量上或者类型上有差异。
STM32定时器可以有哪些触发输出信号呢?或者说怎样才能产生触发输出信号呢?整体上讲,常规定时器可以如下方式产生触发输出信号[TRGO]:
1、软件方式对定时器复位:置位UG@TIMx_EGR
2、使能计数器。置位CEN@TIMx_CR1
3、定时器更新事件
4、定时器捕获、比较事件
5、各输出通道中间参考信号 OCxREF
这里要提醒下,通过软件方式对定时器复位,即置位UG@TIMx_EGR,从而产生触发输出信号。它只是产生触发输出信号的一种途径,并非表示该触发输出信号连接到从定时器后,就一定会使得从定时器复位。从定时器复位与否与哪种触发信号无关,取决于从模式下定时器具体的从模式类型。即只有定时器处于复位从模式时,外来触发信号才会导致从定时器复位。
定时器的主从模式小结
当定时器的工作受到外来触发信号的影响或控制时,它就是工作在从模式,其中从模式可以有多种;如果某定时器能产生触发输出并作为其它定时器的触发输入信号时,此时该定时器就是工作在主模式。如果某定时器的工作既受外来触发信号的影响或控制,同时又能输出触发信号影响或控制别的从定时器,它就是处于主从双角色模式。
相关文章