微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DSP的高精度数字频率计的设计

基于DSP的高精度数字频率计的设计

时间:02-03 来源:世界电子元器件 点击:
引言

随着现代科学技术的发展,频率及时间的测量以及它们的控制技术在科学技术各领域,特别是在计量学、电子技术、信息科学、通信、天文和电子仪器等领域占有越来越重要的地位。从国际发展的趋势上看,频率标准的准确度和稳定度提高得非常快,几乎是每隔6至8年就提高一个数量级。本系统采用DSP的数值控制方式是目前设计控制系统的发展趋势,这种基于DSP的控制系统能够用软件实现复杂的算法,而不需要复杂的模拟电路,具有软硬件模块化、测量功能可重组/可选择的特点。该系统采用TI公司推出的150MHz高速处理能力的高精度定点数字信号控制器TMS320F2812芯片,其丰富的片内资源可以大大简化硬件电路的设计,有利于提高系统的可靠性,其高效的32位CPU内核、支持浮点运算等特点,为提高系统的测量精度奠定了基础。该系统具有精度高、实时性好、使用方便、测量迅速,以及便于实现测量过程自动化等优点。

系统总体设计方案

本嵌入式数字频率计的硬件电路主要包含4个部分:4通道整形电路模块,TMS320F2812数字信号处理模块,单色液晶屏模块(CM320*240)和4*2矩阵键盘模块。系统总体框图如图1所示。

4通道整形电路模块:完成模拟信号整形、衰减功能 。

TMS320F2812数字信号处理模块:完成软件滤波,多周期同步测频算法等。

单色液晶屏模块:实时显示瞬时捕获的频率值,同时配合键盘进行仪表参数设置。

4*2矩阵键盘模块:系统命令的形成与其它参数的输入设置。

信号处理过程:在键盘控制下,TMS320F2812根据4*2键盘发出的命令实时地将要转换的模拟信号经过电压比较器形成的方波信号直接输入捕获单元的输入引脚,再通过软件滤波将捕获到的数据经过多周期同步测量算法处理后直接送到单色液晶屏显示,当再次进行通道选择时,可通过键盘进行实时调整。

系统硬件设计

本系统在综合考虑各种硬件条件下,设计出如图2的系统硬件连接图。

通道整形电路模块

利用TMS320F2812的捕获单元设计出硬件测频电路。由于CAP模块只能捕获0V~3V的外界模拟方波信号,模拟信道必须将要转换的模拟信号转换后才能输入CAP模块。本系统采用ADI公司的AD8022作为前端模拟处理。

AD8022是一款性能优良、价格低廉、具有低噪声和低失真特性的高性能8引脚双运算放大器。其内部电路输入级是NPN差分对,与之对应的后面驱动是PNP对,输出缓冲级是工作在AB类的放大的射频跟随器。当闭环增益提高时,AD8022可驱动更大的容性负载,输出不会产生震荡。

本系统采用开环方式实现电压比较器,可以将-15V~+15V的外界模拟信号,经过电压求和电路输出0V~3V的模拟信号(即图3中的引脚3处),为抑制共模抑制比将其输入到同相端,而在反相端输入+1.5V的比较电平,这样,在输出端即引脚6处可得到占空比为50%的方波,其中电容C5起抑制高频噪声的作用。单通道整形电路模块电路图如图3所示。

单色液晶屏模块

CM320240是一种图形点阵液晶显示器,主要采用动态驱动原理由行驱动控制器和列驱动控制器两部分组成了320(列)×240(行)的全点阵液晶显示,此显示器内含了硬件字库,编程模式简洁方便。

该液晶模块的读写周期最小为800ns。如果采用总线方式控制液晶模块,TMS320F2812读、写周期最大值为200ns,不能满足该液晶模块的要求,故采用间接控制方式。为节约硬件成本,该系统选用通用GPIO来控制液晶屏的读写信号。

键盘模块

由于键盘是低速外设,与TMS320F2812连接时存在速度匹配问题。为此,设计时设置相应的全局变量实现与系统的同步。

本系统将键盘分为二类:通道选择键(3个)与系统键(4个)。通道选择键主要完成系统单通道、双通道、四通道模式的设定;系统键包括停止键(停止观察显示的频率)、返回键(通道选择的重新设定)、UP键和DOWN键(选择捕获单元硬件连接方式)。

软件设计

系统软件设计是本系统的重点,主要包括三部分内容:捕获中断测频子程序、键盘定时中断扫描子程序和LCD显示处理子程序。系统软件总体流程图如图4所示。

键盘定时中断扫描

为满足系统实时性要求、完成键盘操作的实时响应,本系统设置了一个5ms的时基,采用事件管理器的EVB的time4定时周期中断来完成。对键盘扫描、命令形成与标志位设置功能,都在定时器中断服务子程序完成。键盘定时中断扫描流程图如图5所示。

捕获中断测频

本系统使用TMS320F2812事件管理器模块的捕获单元来测频,捕捉被测信号的有效电平跳变沿,由内部的计数器记录一个周波内标频脉冲个数,并通过相应的运算来得到被测频率的大小。此模块主要包括捕获与定时的初始化设置与捕获中断子程序两部分。

捕获中断测频子程序的部分代码如下:

(1)void InitEv1(void)//捕获1初始化设置
{
EALLOW;
SysCtrlRegs.HISPCP.all = 0x00;// 外设高速时钟
EDIS;
EvaRegs.CAPCONA.bit.CAP1EDGE=1; //检测上升沿,计算周期脉冲宽度
EvaRegs.CAPFIFOA.bit.CAP1FIFO=0; //CAP1FIFO空
EvaRegs.CAP1FBOT=0;//栈底清零
EvaRegs.CAP1FIFO=0;
EvaRegs.EVAIFRC.bit.CAP1INT=1;//清捕获中断1标志位
EvaRegs.EVAIMRC.bit.CAP1INT=1; //捕获1中断使能
}
(2)interrupt void CAPINT1_isr(void)//捕获中断1子程序
{
CAP1_t1=EvaRegs.CAP1FIFO;//
CAP2_t1=EvaRegs.CAP1FIFO;
if(CAP2_t1>CAP1_t1)
temp1=CAP2_t1-CAP1_t1;
else
temp1=CAP2_t1+EvaTimer1InterruptCount*65535-CAP1_t1;
f1= 1171875.0/(float)temp1;
value=f1;
fpart = modf(value, &ipart);
a1=(long)ipart;//获得频率的32位整数
*(Uint16 *)0x80008=a1&0x0ffff;//获的低16位
*(Uint16 *)0x80009=(a1&0xffff0000)>>16;//获的高16位
EvaRegs.EVAIFRC.bit.CAP1INT=1;//清捕获中断1标志位
EvaRegs.EVAIMRC.bit.CAP1INT=1; //捕获1中断使能
PieCtrlRegs.PIEACK.bit.ACK3 = 1;//开外设中断应答
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top