具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者***中还存在另外的相同要素。
进一步值得说明的是,本发明各实施例中各步骤之间的顺序是可以调整的,不是必须按照以下举例的顺序执行。
图1为本发明实施例提供的一种信号频率测量***的结构示意图,如图1所示,该信号频率测量***包括:微控制器11、第一定时器12、第二定时器13、内部时钟源14。
微控制器11,分别与微控制器11连接的第一定时器12和第二定时器13,以及内部时钟源14。
其中,内部时钟源14与第二定时器13连接,以为第二定时器13提供时钟信号。
其中,第一定时器12中被设置有第一预设重载值;第二定时器13中被设置有预设计时时长。
待测信号输入第一定时器12和第二定时器13。
第一定时器12,用于在待测信号的预设跳变沿脉冲触发下开始计数,每当检测到预设跳变沿脉冲时计数值更新。
第二定时器13,用于在预设跳变沿脉冲触发下开始计时,每当计时到预设计时时长时计数值更新。
微控制器11,用于在第一定时器12的计数值达到第一预设重载值时,读取第二定时器13的计数值,以根据第一预设重载值和第二定时器13的计数值确定待测信号的频率。
在本实施例中,第一定时器12被设置有第一预设重载值,并将待测信号作为其触发源和时钟源,在待测信号的预设跳变沿脉冲触发下开始计数,每当检测到预设跳变沿脉冲时计数值更新,直到计数到第一预设重载值时,此时可以向微控制器11发送中断触发信号,以告知微控制器11当前第一定时器12已经计数到第一预设重载值。
实际应用中,该信号频率测量***中可以包括与第一定时器12对应的寄存器,从而可以将上述第一预设重载值预先写入该寄存器中以完成该第一预设重载值向第一定时器12的设置。
第二定时器13被设置有预设计时时长,并将待测信号作为触发源,内部时钟作为时钟源,在待测信号的预设跳变沿脉冲触发下开始计时,在内部时钟输出的时钟脉冲的控制下计时预设计时时长,每当计时到预设计时时长时计数值更新。实际应用中,该信号频率测量***中可以包括与第二定时器13对应的寄存器,从而可以将上述预设计时时长预先写入该寄存器中以完成该预设计时时长向第二定时器13的设置。
微控制器11在第一定时器T1的计数值达到第一预设重载值时,读取第二定时器T2的计数值,以根据第一预设重载值和第二定时器T2的计数值确定待测信号的频率。本实施例中,微控制器11在读取第二定时器13的计数值之后,清零第二定时器13的计数值,以使得第二定时器13重新开始计时、计数。
基于本实施例提供的信号频率测试***,待测信号输入到第一定时器12中,以上述预设跳变沿脉冲为上升沿脉冲为例,第一定时器12在待测信号的第一个上升沿脉冲触发下开始计数,每当检测到一个上升沿脉冲时计数值更新,直到计数到第一预设重载值(假设为N),当计数到第一预设重载值N时,第一定时器12可以重新开始计时。
所以第一定时器12的第一预设重载值N实际为待测信号已经经历的周期个数。也就是说,第一定时器12相当于是从待测信号的第一个上升沿脉冲触发下开始计数,计数待测信号已经经历的周期个数N,N个周期即对应于连续接收到的N个上升沿脉冲。
第二定时器13在待测信号的上升沿脉冲触发下开始计时,假设预设计时时长为1us,则每当计时到1us时计数值加一,直到微控制器11在发现第一定时器12已经计数到N时,控制第二定时器13清零,重新开始计时。
由此可知,第二定时器13相当于是用于计时从第一定时器12开始计数,一直到计数到N时所经历的时间长度,亦即待测信号的N个周期所对应的时间长度。当N个周期经历的时间长度确定时,该待测信号在该N个周期内对应的频率即可计算得到。
计算公式如下:待测信号的频率=第一预设重载值/(第二定时器T2的计数值*预设计时时长)。
实际应用中,待测信号的频率可能会发生微小的振动,因此,当第一定时器12已经计数到第一预设重载值N即已经计数了N个周期后,待测信号依旧输入,此时可以按照前面介绍的过程,继续对待测信号进行下一次N个周期的频率的测量。
值得说明的是,通过上述第一定时器12和第二定时器13的计时作用可知,第一定时器12主要用于计数待测信号的已经经历的周期个数,实际应用中,N的取值可以合理设定,一般不会太高,因此,对第一定时器12的计数范围的要求不大,因此,16位的定时器一般即可满足需求。但是,为了满足对不同频率的待测信号的频率的准确测量,内部时钟源的频率往往会比较高,对第二定时器13的计数范围的要求会比较高,因此,第二定时器13一般可以选用32位的定时器。
另外,可选地,本发明实施例提供的信号频率测量***可以基于STM32系列的单片机来实现。
综上,通过本方案,在N个周期内,第一定时器12和第二定时器13都不会产生中断,即不需要频繁地进行跳变沿检测,不需要频繁地进行中断逻辑处理,从而提高了信号频率测量的处理效率。
图2为本发明实施例提供的另一种信号频率测量***的结构示意图,如图2所示,在图1所示实施例基础上,该信号频率测量***还可以包括:
第三定时器15,此第三定时器15中被设置有第二预设重载值。
实际应用中,该信号频率测量***中可以包括与第三定时器15对应的寄存器,从而可以将上述第二预设重载值预先写入该寄存器中以完成该第二预设重载值向第三定时器15的设置。
其中,第三定时器15的一端与待测信号连接,第三定时器15的另一端分别与第一定时器12和第二定时器13连接。
第三定时器15,用于在待测信号的预设跳变沿脉冲触发下开始计数,每当检测到预设跳变沿脉冲时计数值更新,在计数值更新到第二预设重载值时分别向第一定时器12和第二定时器13输出第一脉冲信号,以使第一定时器12在第一脉冲信号的触发下开始计数以及以使第二定时器13在第一脉冲信号的触发下开始计时。
第三定时器15,还用于在计数值更新到第二预设重载值后重新开始计数,在重新计数到第二预设重载值时,向第一定时器12输出第二脉冲信号,第二脉冲信号与第一脉冲信号电平属性相反。
在本实施例中,第三定时器15提供了分频功能,上述第二预设重载值即为分频倍数。实际应用中,在第三定时器15是从0开始计数的情况下,实际的分配倍数为第二预设重载值+1,以下的描述以从0开始计数为例。
本实施例中,之所以设置提供分频作用的第三定时器15,是因为实际应用中,待测信号的频率可能是非常高的,如果待测信号的频率高于内部时钟源的频率,很可能导致频率测量结果不准确,基于此,通过第三定时器15的分频功能,可以将输入到第一定时器12的信号的频率降低。
实际应用中,可选地,本实施例提供的信号频率测量***可以基于STM32系列单片机实现,此时,该第三定时器15可以是该单片机中提供了分频功能的定时器。
为便于理解第三定时器15的分频工作过程,结合图3,对第三定时器15提供分频功能的基本原理进行简单说明:
假设第二预设重载值为1,则分频倍数为1+1=2,并且,假设触发第三定时器15开始计数的预设跳变沿脉冲为上升沿脉冲。基于此,当第三定时器15首次接收到待测信号的上升沿脉冲中触发开始从0进行计数,此时计数值为0。之后,当第三定时器15再次接收到上升沿脉冲时,更新计数值为1,此时,计数值达到了第二预设重载值1,则此时,第三定时器15可以向第一定时器12和第二定时器13同时输出第一脉冲信号,比如上升沿脉冲信号,该第一脉冲信号作为第一定时器12和第二定时器13同时触发计数的触发信号。
基于该第一脉冲信号的触发,第一定时器12开始计数,比如第一定时器12也是从初始值为0开始计数,则此时第一定时器12的计数值为初始值0。基于该第一脉冲信号的触发,第二定时器13开始工作,即开始预设计时时长比如1us的计数,并在每次计时达到1us时计数值加一。
当第三定时器15计数到第二预设重载值后,计数值更新为初始值0,再重新开始计数,即在接收到第三个上升沿脉冲时,计数值更新为1,此时,计数值又一次达到了第二预设重载值1,此时,第三定时器15可以输出第二脉冲信号,比如下降沿脉冲信号。
由于在上述举例中,第一定时器12进行计数值更新的有效跳变沿脉冲为上升沿脉冲信号,因此,第三定时器15此时输出的下降沿脉冲信号并不会引起第一定时器12的计数值的更新。
上述下降沿脉冲信号的输出,一方面是为了实现对待测信号的2分频目的,另一方面,由于第三定时器15作为第一定时器12的时钟源,如果第三定时器15在第一次输出上升沿脉冲信号后就停止向第一定时器12输出电信号,则第一定时器12将无法工作,基于此,如图3所示,第三定时器15在第一次输出上升沿脉冲信号后保持对应的高电平信号的输出,直到重新计数到第二预设重载值后输出下降沿脉冲信号,此后保持低电平信号的输出,直到再一次重新计数到第二预设重载值,此时再次输出上升沿脉冲信号,该上升沿脉冲信号会引起第一定时器12的计数值加一更新,如此重复下去。
综上,在引入第三定时器15后,第三定时器15的输出将作为第一定时器12的触发源(触发开始计数)和时钟源,以及作为第二定时器13的触发源。
第一定时器12和第二定时器13被触发开始计数之后的过程,可以参考图1所示实施例中的描述,不再赘述。
基于上述的计数值从0开始计数的前提,可选地,微控制器11可以根据如下公式计算出待测信号的频率:待测信号频率=(第一预设重载值*(第二预设重载值+1))/(第二定时器T2的计数值*预设计时时长)。
图4为本发明实施例提供的又一种信号频率测量***的结构示意图。如图4所示,在图1所示实施例基础上,该信号频率测量***还可以包括:
分频器16,其中,分频器16被设置有预设分频倍数。
其中,分频器16的一端与待测信号连接,分频器16的另一端分别与第一定时器12和第二定时器13连接。
分频器16,用于对待测信号进行预设分频倍数的分频处理,将分频后的待测信号输出至第一定时器12和第二定时器13。
与图2中第三定时器15所提供的分频功能类似,本实施例中,可以通过传统的分频器16来实现对待测信号的分频。
与图2所示实施例不同的是,本实施例中,相当于是先利用分频器对待测信号进行分频,得到分频后的信号,比如图3中所示的2分频后的波形图,之后,将分频后的信号输出到第一定时器12和第二定时器13,此时,相比于图2所示实施例的方案,由于先对完整的待测信号进行分频处理,将花费一定的时间,因此,输入到第一定时器12和第二定时器13的分频后的信号具有一定的时间延迟。
本实施例中,可以将分频后的信号视为图1所示实施例中的待测信号,从而,该分频后的信号作为第一定时器12的触发源和时钟源,作为第二定时器13的触发源,分频后的信号中的第一个预设跳变沿脉冲比如上升沿脉冲同时触发第一定时器12和第二定时器13开始计数。
第一定时器12和第二定时器13的工作过程在此不再赘述。
本实施例中,微控制器可以根据如下公式计算待测信号的频率:
待测信号频率=(第一预设重载值*预设分频倍数)/(第二定时器的计数值*预设计时时长)。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。