原创 【博客大赛】简易数字频率计

2013-4-26 11:10 3179 9 16 分类: MCU/ 嵌入式

 

        本设计采用 TMS320F2812 DSP 芯片,制作了一台简易数字频率计。本设计

综合了传统的多周期测量和等精度测量方法,实现了对被测信号频率、周期、脉宽

和占空比宽范围、高精度的测量。提出了一种在无需任何外部硬件控制情况下,利

用 DSP 2812 丰富的软件资源实现等精度测量的一种方法。

         

 

      在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量都有十分密切的关系,

因此频率的测量就显得更为重要。数字频率计是用数字显示被测信号频率的仪器,被测信号可

以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测

试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。另外,数字频率计还广泛应用于通讯设备、广播电视设备、电子仪表及家电产品的测量调试中,是一种应用相当广泛的

仪器。

现在 DSP 逐渐成为各种电子器件的基础器件,逐渐成为 21 世纪最具发展潜力的朝阳行业,

并主动担当起信息化数字化时代革命旗手。本设计基于 TMS320F2812 DSP 平台,完成了频率计

的制作与测试。

2

本设计达到了该题目要求的所有基本指标和发挥部分指标,并在此基础上进行了扩展。本

设计不仅可以对双极性信号的频率、周期、脉宽和占空比进行测量,还可以对单极性信号进行

                     

 

3.1 总体介绍

本设计是以设计尽量简单,测量精度尽量高为目标,在尽量发挥 DSP 软件资源的驱动下完

成的。信号处理部分以 TMS320F2812 DSP 芯片作为控制和测量的核心;信号的调理整形部分主

要由快速差分比较器 TL3016 完成,为防止正弦信号在过零点的毛刺造成比较器的误动作,

TL3016 接入了正反馈。测量时主要使用了该 DSP 芯片的 EV 模块。测频率、周期使用定时器 1、

定时器 2 和捕获单元 1,测脉宽时使用了定时器 3 和捕获单元 4 和捕获单元 5。通讯使用了 SCI

单元 A,使用 RS232 与计算机进行通讯。总体框图如图 3.1 所示。

被测信号

TMS320F2812

键盘

显示

整形电路

标准频率信号

发生电路

SCI

模块

TCLKINA

XCLKINA

T1PWM

CAP1

CAP4

CAP5

电源模块

+12V -12V

GND

1.8V

3.3V

+5V

-5V

 

3.2 频率/周期测量原理

本部分主要实现了对被测信号频率和周期的测量。在对被测信号频率和周期的测量中,本

设计综合了传统的多周期测量和等精度测量方法,将频率分为三段,在高频和低频段采用多周

期测量;在中频段,采用独特的等精度测量方法。该等精度测量基于 DSP 比较匹配时 T1PWM 引

脚输出电平的跳变作为门闸信号的开启和关闭,由于比较匹配发生在被测信号的上升沿,从而

实现了门闸时间与被测信号的同步(本等精度测量与传统等精度测量原理的相似性分析在 3.5

节)。原理图如图 3.2 所示。被测信号 整形电路

CAP1

T1PWM

TCLKINA

DSP F2812

整形后被测

信号

定时器T1计

数器的值

T1PWM输

出端波形

总数Ny

高频标准

填充脉冲

1

2

3

0 0基于 TMS320F2812 的简 数易 字 易易易数 频字 率 字字频 计率率率

在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量都有十分密切的关系,

因此频率的测量就显得更为重要。数字频率计是用数字显示被测信号频率的仪器,被测信号可

以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测

试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。另外,数字频率计还广泛应用于通讯设备、广播电视设备、电子仪表及家电产品的测量调试中,是一种应用相当广泛的

仪器。

现在 DSP 逐渐成为各种电子器件的基础器件,逐渐成为 21 世纪最具发展潜力的朝阳行业,

并主动担当起信息化数字化时代革命旗手。本设计基于 TMS320F2812 DSP 平台,完成了频率计

的制作与测试。

2

本设计达到了该题目要求的所有基本指标和发挥部分指标,并在此基础上进行了扩展。本

设计不仅可以对双极性信号的频率、周期、脉宽和占空比进行测量,还可以对单极性信号进行

上面各项的测量,并均达到发挥部分指标。现将题目的要求指标(包括基本要求指标和发挥部

分指标)和本设计所达到的各项指标在表 1 中进行比较。

3.2 频率/周期测量原理

本部分主要实现了对被测信号频率和周期的测量。在对被测信号频率和周期的测量中,本

设计综合了传统的多周期测量和等精度测量方法,将频率分为三段,在高频和低频段采用多周

期测量;在中频段,采用独特的等精度测量方法。该等精度测量基于 DSP 比较匹配时 T1PWM 引

脚输出电平的跳变作为门闸信号的开启和关闭,由于比较匹配发生在被测信号的上升沿,从而

实现了门闸时间与被测信号的同步(本等精度测量与传统等精度测量原理的相似性分析在 3.5

节)。原理图如图 3.2 所示。被测信号 整形电路

CAP1

T1PWM

TCLKINA

DSP F2812

整形后被测

信号

定时器T1计

数器的值

T1PWM输

出端波形

总数Ny

高频标准

填充脉冲

1

2

3

0 0

1

2

3

比较匹配 比较匹配

 频率测量原理

通用定时器 T1 时钟输入选择外部定时器时钟,调理后的被测信号作为定时器 T1 的

时钟输入,定时器 T2 时钟输入选择内部 CPU 时钟,用来产生高频标准填充脉冲。F2812 片上

EVA 中通用定时器 T1 在发生比较匹配事件时,其比较输出引脚 T1CMP 输出信号会自动改变电平

状态,产生 PWM 波。捕获单元 CAP1 设置为上升沿捕获,T1PWM 输出的 PWM 波上升沿被捕获单元

1 捕获到,该上升沿作为门闸时间开启信号,下一次上升沿到达作为该门闸时间的停止信号。

通过读取两级堆栈 CAP1FIFO 内的值,即可获得该门闸时间内标准填充脉冲的个数,然后求出被

测信号频率。

从图中可以看出该门闸时间的值与通用定时器 T1 的定时周期相等,因此只要保证该门闸时

间内标准脉冲的个数一定,就可以实现门闸时间一定,从而实现等精度测量。当标准脉冲个数

小于某值时,就相应地增加该门闸时间内被测脉冲的个数,即增加定时器 T1 一个定时周期内被

测信号的个数(T1PR+1),保证定时器 T1 定时周期固定。从下一个周期开始即可获得理想的

精度。

现假设标准脉冲频率为 f0,初始化时设定 T1PR 和 T1CMPR 的值,并设定捕获单元 CAP1

为上升沿捕获,当 T1 计数器的值到达 T1CMPR 的值时,定时器 T1 的比较输出端 T1PWM 会产

生一个上升沿突变,被捕获单元 CAP1 捕获,读取此时定时器 T2 的计数值 T2CNT,其值保存

在 CAP1FIFO1 中,假设为 x1;同理当 T1 计数器在下一次比较匹配的时候,CAP1 会再次捕获到一个上升沿突变,读取此时的 T2CNT,其值保存在 CAP1FIFO2 中 ,假设为 x2,假设定时器

T2 在该门闸时间内的溢出次数为 x3,那么被测信号频率可由下式得出:

                         (T1PR +1)/fx = (x2- x1+65536* x3)/f0  

                     fx = f0*(T1PR +1)/(x2- x1+65536* x3)

周期测量与频率测量的基本原理完全相同,在测出信号频率后,根据公式 T=1/f 即可得出

被测信号的周期。

3.3 脉宽测量原理

该部分主要实现对周期性脉冲波实现脉冲宽度的测量,原理图如图 3.3 所示。

图 3.3  测脉宽原理图

在 EVB 中测脉宽,定时器 T3 时钟输入选择一个高频的标准脉冲,测周期和测脉宽同时进

行。如图 3.3 所示,整形后的被测信号直接送入 DSP CAP4、CAP5 引脚,对被测信号的上升沿

和下降沿分别捕获,,,首先使能 CAP4  为上升沿捕获,当 CAP4 捕获上升沿时,立即使能 CAP5

为下降沿捕获,在每次的 CAP5 捕获中断中计算脉宽。假设在各电平突变时的 T3CNT  为 a1、

a2、b1、b2,每次在 CAP5  捕获到后读取 CAPFIFO  堆栈中 T3CNT 的值,根据一个被测脉宽内

总的高频标准脉冲的计数个数 Ny2 可计算出被测信号脉宽的值。

3.4 周期脉冲信号占空比测量原理

     该部分主要实现对周期性脉冲信号占空比的测量。测得信号的脉冲宽度,设其值为TWX 1;

再测信号的周期,记录其值为T ,则其占空比可由下式得到:

                     占空比 = [TWX 1

/T ]  × 100% 3.5 与传统的等精度方法的比较

传统的等精度测量原理图如图 3.4 所示。

  

                             传统的等精度测量原理

传统的等精度测量一般像图  所示由硬件控制计数的门闸时间,当预置们信号(即定闸

门信号)为高电平时,基准信号计数器 CNT1 和被测信号计数器 CNT2 并不启动,而是等被测信

号的上升沿来到时才同时开始计数,当预置们信号为低电平时,两个计数器并不马上关闭,同

样要等到被测信号上升沿,于是实际闸门时间就是被测信号周期的整数倍,从而实现了闸门与

被测信号的同步。但实际的门闸时间并不固定,与被测信号的频率有关。    

                              

变作为门闸信号的开启和关闭,由于比较匹配发生在被测信号的上升沿,从而实现了门闸时间

与被测信号的同步。两个相邻的比较匹配产生的 PWM 波的上升沿分别作为门闸信号的开启和

关闭,故每个门闸时间即一个定时器周期。其中被测信号的个数为整数,并且是由我们自己任

意设定的。定时器 T2 时钟输入选择内部 CPU 时钟,用来产生标准填充脉冲。设定捕获单元 CAP1

为上升沿捕获,当其捕获到上升沿时读取堆栈 CAPFIFO 内的值,在下一次捕获到时再读堆栈内

的值,计算出标准填充脉冲的个数 Ny,保证 Ny 的个数不小于一定的值,即可保证门闸时间大

于一定的值。假设现在希望一个门闸时间内高频填充脉冲的总数不小于 n,当 Ny<n 时,就增大

定时器 T1 的定时周期,即增大 T1PR 的值。 T1PR*+1= n/Ny  由于不一定为整数,假设 a < n/Ny

<a+1(a 为整数),  则取 n/Ny= a+1,表现在被测信号上,则与传统的用硬件控制一样,用下一

个被测信号的上升沿作为门闸信号的关闭信号,只不过该上升沿发生在下一次的比较匹配时。

然后,再在该门闸时间内读取高频填充脉冲的个数,有 Ny>=n,从而得出高精度的被测信号频率。

但在本设计中,定时器 T1 并不关闭,前一门闸时间的关闭信号同时作为下一门闸信号的开启信

号。

总的来说,有以下两点不同:

(1)从测量方法上:传统方法是由定门闸信号控制被测信号个数,从而产生实际门闸信号,

再去读取高频标准信号的个数。而本设计采用逆向思维,由被测信号自己产生门闸信号,若希

望误差不大于二十万分之一。则进行以下处理:读取门闸时间内标准脉冲的个数,若个数小于

20 万个,则表明此时测量误差大于二十万分之一(5e-6),误差超出希望的范围,然后,由高频

标准填充脉冲的个数计算出需要将定时器 T1 每周期内的被测信号个数修改为多少,从而从下一

次测量开始每个门闸时间内的标准脉冲的个数就保证大于 20 万个,从而实现了等精度测量。

(2)从测量结果上,传统的等精度测量第一次测量结果就能满足等精度,而本方法第一次

测量的数据往往是不准确的,从第二次测量的数据开始满足了等精度,但由于每次测量的时间

非常短,故该方法仍是可行的。

3.6 算法及数据处理 

3.6.1 算法分析

设测的频率为 fx,被测频率真实值为 fxe,标准频率为 f0,在一个门闸时间内,被测信号

个数为 Nx,标准频率脉冲个数为 Ny。

  fx 计数的启停时间都是由该信号的上升沿触发的,在一次测量时间内 fx 的计数无误差;

在此时间内标准频率脉冲的计数个数 Ny 最多相差一个。

 

显然,测量精度仅仅与 Ny 有关,只要保证 Ny 的值,就能保证精度。为了达到更高的精度,

在进行软件设计时,采用了以下处理:

(1)采用分段处理方法

本设计在进行频率、周期测量时,首先采用了分段处理的方法。为了使系统快速响应,在

程序开始时,先把定时器 T1 的周期值设为 4,T2CLK 设定为 150/64MHz。这样通过很短的时间

就可以计算出被测频率的值。如果周期值设为很大的话,若输入信号频率很低,就会等待很长

的时间才得出结果,不利于实时测量。对于固定个数的被测信号周期时间内,频率越低标准高

频脉冲个数越多,故把被测信号分为高频段,中频段以及低频段。分段依据如下:设变量 Ny 为

该固定时间内测得的标准脉冲数,若 Ny 小于 13 个,则定义为高频段,需重新配置定时器 T1 的

定时周期为 65530 个被测信号周期长度,并且修改定时器 2 的时钟频率为 150/2MHz;若 Ny

>200000,定义为低频段;若 Ny 小于 200000 个而大于 13 个,定义为中频段。具体算法如下:

(a)若 Ny >200000,则说明被测信号频率 fx<150MHZ/64/50000=46.875Hz,为了增加响应快

速性,可以直接计算频率。(b)对于中频段,本设计采用等精度测量。选择定时器 T1 的周期长

1

2

3

比较匹配 比较匹配

图 3.2      频率测量原理

通用定时器 T1 时钟输入选择外部定时器时钟,此处用调理后的被测信号作为定时器 T1 的

时钟输入,定时器 T2 时钟输入选择内部 CPU 时钟,用来产生高频标准填充脉冲。F2812 片上

EVA 中通用定时器 T1 在发生比较匹配事件时,其比较输出引脚 T1CMP 输出信号会自动改变电平

状态,产生 PWM 波。捕获单元 CAP1 设置为上升沿捕获,T1PWM 输出的 PWM 波上升沿被捕获单元

1 捕获到,该上升沿作为门闸时间开启信号,下一次上升沿到达作为该门闸时间的停止信号。

通过读取两级堆栈 CAP1FIFO 内的值,即可获得该门闸时间内标准填充脉冲的个数,然后求出被

测信号频率。

从图中可以看出该门闸时间的值与通用定时器 T1 的定时周期相等,因此只要保证该门闸时

间内标准脉冲的个数一定,就可以实现门闸时间一定,从而实现等精度测量。当标准脉冲个数

小于某值时,就相应地增加该门闸时间内被测脉冲的个数,即增加定时器 T1 一个定时周期内被

测信号的个数(T1PR+1),保证定时器 T1 定时周期固定。从下一个周期开始即可获得理想的

精度。

现假设标准脉冲频率为 f0,初始化时设定 T1PR 和 T1CMPR 的值,并设定捕获单元 CAP1

为上升沿捕获,当 T1 计数器的值到达 T1CMPR 的值时,定时器 T1 的比较输出端 T1PWM 会产

生一个上升沿突变,被捕获单元 CAP1 捕获,读取此时定时器 T2 的计数值 T2CNT,其值保存

在 CAP1FIFO1 中,假设为 x1;同理当 T1 计数器在下一次比较匹配的时候,CAP1 会再次捕获到一个上升沿突变,读取此时的 T2CNT,其值保存在 CAP1FIFO2 中 ,假设为 x2,假设定时器

3.3 脉宽测量原理

该部分主要实现对周期性脉冲波实现脉冲宽度的测量,原理图如图 3.3 所示。

图 3.3  测脉宽原理图

在 EVB 中测脉宽,定时器 T3 时钟输入选择一个高频的标准脉冲,测周期和测脉宽同时进

行。如图 3.3 所示,整形后的被测信号直接送入 DSP CAP4、CAP5 引脚,对被测信号的上升沿

和下降沿分别捕获,,,首先使能 CAP4  为上升沿捕获,当 CAP4 捕获上升沿时,立即使能 CAP5

为下降沿捕获,在每次的 CAP5 捕获中断中计算脉宽。假设在各电平突变时的 T3CNT  为 a1、

a2、b1、b2,每次在 CAP5  捕获到后读取 CAPFIFO  堆栈中 T3CNT 的值,根据一个被测脉宽内

总的高频标准脉冲的计数个数 Ny2 可计算出被测信号脉宽的值。

3.4 周期脉冲信号占空比测量原理

     该部分主要实现对周期性脉冲信号占空比的测量。测得信号的脉冲宽度,设其值为TWX 1;

再测信号的周期,记录其值为T ,则其占空比可由下式得到:

                     占空比 = [TWX 1

/T ]  × 100% 3.5 与传统的等精度方法的比较

传统的等精度测量原理图如图 3.4 所示。

  

                           图 3.4     传统的等精度测量原理

传统的等精度测量一般像图 3.4 所示由硬件控制计数的门闸时间,当预置们信号(即定闸

门信号)为高电平时,基准信号计数器 CNT1 和被测信号计数器 CNT2 并不启动,而是等被测信

号的上升沿来到时才同时开始计数,当预置们信号为低电平时,两个计数器并不马上关闭,同

样要等到被测信号上升沿,于是实际闸门时间就是被测信号周期的整数倍,从而实现了闸门与

被测信号的同步。但实际的门闸时间并不固定,与被测信号的频率有关。    

                              图 3.5 本等精度测量原理图 本设计的等精度测量原理如图 3.5 所示,其基于 DSP 比较匹配时 T1PWM 引脚输出电平的跳

变作为门闸信号的开启和关闭,由于比较匹配发生在被测信号的上升沿,从而实现了门闸时间

与被测信号的同步。两个相邻的比较匹配产生的 PWM 波的上升沿分别作为门闸信号的开启和

关闭,故每个门闸时间即一个定时器周期。其中被测信号的个数为整数,并且是由我们自己任

意设定的。定时器 T2 时钟输入选择内部 CPU 时钟,用来产生标准填充脉冲。设定捕获单元 CAP1

为上升沿捕获,当其捕获到上升沿时读取堆栈 CAPFIFO 内的值,在下一次捕获到时再读堆栈内

的值,计算出标准填充脉冲的个数 Ny,保证 Ny 的个数不小于一定的值,即可保证门闸时间大

于一定的值。假设现在希望一个门闸时间内高频填充脉冲的总数不小于 n,当 Ny<n 时,就增大

定时器 T1 的定时周期,即增大 T1PR 的值。 T1PR*+1= n/Ny  由于不一定为整数,假设 a < n/Ny

<a+1(a 为整数),  则取 n/Ny= a+1,表现在被测信号上,则与传统的用硬件控制一样,用下一

个被测信号的上升沿作为门闸信号的关闭信号,只不过该上升沿发生在下一次的比较匹配时。

然后,再在该门闸时间内读取高频填充脉冲的个数,有 Ny>=n,从而得出高精度的被测信号频率。

但在本设计中,定时器 T1 并不关闭,前一门闸时间的关闭信号同时作为下一门闸信号的开启信

号。

总的来说,有以下两点不同:

(1)从测量方法上:传统方法是由定门闸信号控制被测信号个数,从而产生实际门闸信号,

再去读取高频标准信号的个数。而本设计采用逆向思维,由被测信号自己产生门闸信号,若希

望误差不大于二十万分之一。则进行以下处理:读取门闸时间内标准脉冲的个数,若个数小于

20 万个,则表明此时测量误差大于二十万分之一(5e-6),误差超出希望的范围,然后,由高频

标准填充脉冲的个数计算出需要将定时器 T1 每周期内的被测信号个数修改为多少,从而从下一

次测量开始每个门闸时间内的标准脉冲的个数就保证大于 20 万个,从而实现了等精度测量。

(2)从测量结果上,传统的等精度测量第一次测量结果就能满足等精度,而本方法第一次

测量的数据往往是不准确的,从第二次测量的数据开始满足了等精度,但由于每次测量的时间

非常短,故该方法仍是可行的。

3.6 算法及数据处理 

 

(1)采用分段处理方法

本设计在进行频率、周期测量时,首先采用了分段处理的方法。为了使系统快速响应,在

程序开始时,先把定时器 T1 的周期值设为 4,T2CLK 设定为 150/64MHz。这样通过很短的时间

就可以计算出被测频率的值。如果周期值设为很大的话,若输入信号频率很低,就会等待很长

的时间才得出结果,不利于实时测量。对于固定个数的被测信号周期时间内,频率越低标准高

频脉冲个数越多,故把被测信号分为高频段,中频段以及低频段。分段依据如下:设变量 Ny 为

该固定时间内测得的标准脉冲数,若 Ny 小于 13 个,则定义为高频段,需重新配置定时器 T1 的

定时周期为 65530 个被测信号周期长度,并且修改定时器 2 的时钟频率为 150/2MHz;若 Ny

>200000,定义为低频段;若 Ny 小于 200000 个而大于 13 个,定义为中频段。具体算法如下:

(a)若 Ny >200000,则说明被测信号频率 fx<150MHZ/64/50000=46.875Hz,为了增加响应快

速性,可以直接计算频率。(b)对于中频段,本设计采用等精度测量。选择定时器 T1 的周期长。

PARTNER CONTENT

文章评论7条评论)

登录后参与讨论

用户377235 2016-4-13 08:33

哈哈哈,棒棒哒

DiracFatCat 2013-12-27 16:31

感谢你的肯定~

用户1171055 2013-12-27 13:17

精神可嘉,简单的问题能够深入去分析,很值得提倡

用户1647968 2013-4-29 20:13

不错

用户444364 2013-4-29 18:47

对被测信号频率和周期的测量符合简易数字频率计吗?

用户377235 2013-4-28 16:51

用DSP做简易频率计?测量范围?分辨率?精度? 简易频率计普通廉价单片机就可以做到的。

用户443316 2013-4-28 13:22

博主写的真不错啊!

用户443316 2013-4-26 22:53

本设计在进行频率、周期测量时,传统的等精度测量原理适合用吗?

用户443316 2013-4-26 22:21

传统的等精度测量原理适合现在吗?

用户403664 2013-4-26 11:46

没看到图片啊!
相关推荐阅读
用户450567 2013-05-24 13:19
【博客大赛】数字图像相关性应变测量方案
     一直以来,一般的一般力和位移都是用阻抗式传感器测量的,例如载荷传感器、引伸仪和线性位移传感器LVDT。但是这各阻抗式传感器有着不可以避免的弊端1、由于传感器本身的加载,使测量数据不准...
用户450567 2013-05-24 13:15
【原创】数字图像相关性应变测量方案
      一直以来,一般的一般力和位移都是用阻抗式传感器测量的,例如载荷传感器、引伸仪和线性位移传感器LVDT。但是这各阻抗式传感器有着不可...
我要评论
7
9
关闭 站长推荐上一条 /3 下一条