标题:
基于DSP的高精度数字频率计的设计
[打印本页]
作者:
yuyang911220
时间:
2016-11-24 16:30
标题:
基于DSP的高精度数字频率计的设计
单色液晶屏模块
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;//开外设中断应答
}
LCD显示处理
LCD的显示分为信息区与显示区两部分。其中信息区包括固定信息(显示烟台大学DSP实验室等),显示区包括通道号信息与各通道的频率值信息的显示。本模块主要包括LCD的初始化设置与频率值的显示等子程序。
实验结果
本系统测试了如表1中的6组数据,并做出了误差分析。输入信号频率与实测信号频率如表1所示。
误差分析:本系统的误差主要来自如下两个方面,即计数脉冲和门控信号不同步以及晶振不稳定。
结束语
本文设计了一种具有高精度和简单结构特点的测频系统,由于在实现上简单,可以满足低成本的要求,使测频电路大为简化,便于工程应用,具有较大的应用价值。
经过反复测试后得出:系统的测频误差可达到0.1%,由于采用了实时的键盘定时中断扫描,可以较好地满足实时性要求。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0