王皎 任晓琨
摘要:嵌入式系统中,频率采集是一个非常重要和普遍的功能,信号采集的精确性和可靠性对系统应用至关重要。该文针对基于DSP的频率捕获单元,通过数频,计算和滤波,提出了一种通用的计算方法。并通过实际激励信号,进行测试和验证,结果表明该频率计算方法有效,测量精度高。
关键词:频率;DSP;捕获单元
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2019)12-0276-02
开放科学(资源服务)标识码(OSID):
Calculating Methods of Frequency Based on DSP
WANG Jiao, REN Xiao-kun
(AVIC ACTRI,Xian 710065, China)
Abstract: In an embedded system, Frequency acquisition is a very important and universal feature. The accuracy and reliability of signal acquisition is critical to system applications This article is for DSP based frequency capture unit.it Proposed ageneral calculation method by calculation and filtering. This method was tested and verified by actual excitation signal. The result show that the frequency calculation method is effective and accurately.
Key words: frequency; dsp; capture unit
1 背景
当今时代,嵌入式系统已无所不在。从早期的汽车工业,国防工业,通信设备,工业控制,医疗器械等领域已很快扩展到与人们日常生活密切相关的电子产品中。以DSP为核心的嵌入式系统更是成为现代人生活的一部分。在这种以微处理器为硬件平台的系统中,频率采集是系统应用中非常常见的一种需求。而由于DSP的型号种类繁多,外部设备激励也千差万别。因此,提出一种通用,精度高的频率采集方法。该方法通过DSP的捕获单元获得时间值,并经过软件采频算法计算出最终频率值。
2 频率捕获单元设计原理
DSP的捕获单元是挂在内部事件管理器EV下,EV具有自己通用定时器,捕获单元通过获取外部输入脉冲波形的上升沿或者下降沿,统计脉冲的间隔,,以及脉冲的个数。图1为EVA组成框图。
2.1 通用定时器配置
通用定时器的数值根据外部晶振,PLL寄存器,高速预定标寄存器,以及TPS因子设置而来,如图2所示。
其中,
SYSCLKOUT=OSCCLK(m=0)
SYSCLKOUT=OSCCLK*m/2(m[≠]0)
HSPCLK= SYSCLKOUT(n=0)
HSPCLK= SYSCLKOUT/2n(n[≠]0)
TCLK= HSPCLK/[2p]
2.2 捕獲单元
捕获单元能够捕获外部输入引脚的电平变化,其原理图如图3所示:
每个捕获单元都有一个捕获引脚,当捕获引脚输入脉冲波形时,捕获单元就能够捕获指定的电平变化,当捕获到脉冲指定的电平变化时,捕获单元就记录下定时器的时间。捕获到第一个脉冲时定时器的时间为[tk-1],捕获到第2个脉冲定时器的时间为[tk],那么脉冲的宽度就为[tk]-[tk-1]。由此便可计算出频率值。
3 数频计算设计
本文中使用TMS2812,在CCS中进行DSP的初始化和数频计算,其中设置参
数如表1所示:
软件算法中每50ms计算一次频率值,每个周期中最大收取20次脉冲时间值,达到20次后,关中断。不再进行脉冲时间的收集。每50ms将收集到的脉冲时间值存入FIFO中,并记录收集到的中断次数。由于时间是累加增长的,所以通过前后两次的时间差和脉冲次数便可计算出频率值,考虑到计时器有可能翻转的情况,当前后脉冲时间差值为负数时,加上计数器翻转一圈的最大值。代码实现如下:
IF FREQCOUT11>=20 THEN
For(i=0;i<19;i++)
{
IF 后一次采集值<=前一次采集值 THEN
(JZ*PLL*HSPCLK*TCLK*1000)/(后一次采集值+0xffff—前一次采集值)
ELSE
(JZ*PLL*HSPCLK*TCLK*1000)/(后一次采集值—前一次采集值)
END IF
}
频率滤波(19)
ELSE
IF FREQCOUT11==0 THEN
频率=0
ELSE IF FREQCOUT11==1 THEN
频率=10
ELSE
For(i=0;i< FREQCOUT11-1;i++)
{
IF 后一次采集值<=前一次采集值 THEN
(JZ*PLL*HSPCLK*TCLK*1000)/(后一次采集值+0xffff—前一次采集值)
ELSE
(JZ*PLL*HSPCLK*TCLK*1000)/(后一次采集值—前一次采集值)
END IF
}
频率滤波(FREQCOUT11-1)
4 测试结果分析
使用频率发生器,实际测量结果如表2所示,当频率低于10Hz时,采集频率均为0,该数据是因为采集周期为50ms,时间过短原因,实际使用中,如果对于低频信号有系统需求,可加长采集周期时间。当高于10Hz时,采集精度误差小于1%,符合预期要求。
参考文献:
[1] 梁波. 飞机电动静液防滑刹车系统额仿真研究[D]. 西安: 西北工业大学, 2009.
[2] 范启亮. 一种简易数字频率计的设计与实现[J]. 科技风, 2014(20).
[3] 白勇. 基于FPGA的飞机轮速测量系统设计[J]. 微处理机, 2011, 32(3): 16-19.
[4] 陈勇, 洪传文. 基于LabVIEW 的水轮机振动信号采集与处理[J]. 水电与新能源, 2010(5): 27-29.
[5] 葛君, 王旭柱. 基于TMS320C6713B 的实时数据采集与处理系统[J]. 微计算机信息, 2010, 26(12): 111-113.
【通联编辑:谢媛媛】