电赛一等奖!基于TMS320F2812的简易数字频率计

电赛一等奖!简易数字频率计设计(原理图、PCB、源码、分析报告)

        这份文件是关于合肥工业大学电气与自动化工程学院的一个项目报告,题目为“基于TMS320F2812的简易数字频率计”。项目由方敏、侯其立、李苗、张巧云四位本科生完成,指导教师为徐科军教授。以下是该项目报告的核心内容概述:

项目背景与目的:

  • 频率测量在多个领域非常重要,因此高精度、宽量程的数字频率计成为了关键的测量工具。
  • 项目设计采用了多周期测量原理,通过标准频率信号填充被测信号的整数个周期,以消除计数误差,提高测量精度。

系统设计与实现:

  • 选用了TMS320F2812型号的DSP芯片作为核心处理单元,利用其高精度时钟和快速运算能力。
  • 结合DSP芯片的事件管理器,如捕获单元、定时/计数单元、比较单元和脉宽调制电路PWM,实现了高精度的频率测量及脉宽和占空比的测量。

系统指标与性能:

  • 系统设计满足了高精度测量的要求,具体性能指标包括幅度范围、频率范围、最大相对误差等。
  • 系统在保证最大相对误差的前提下,尽可能扩大了测量范围。

测量方法及理论误差分析:

  • 详细介绍了频率测量、脉宽和占空比测量以及幅值测量的方法和理论误差分析。
  • 讨论了量化误差、测量原理误差和标准频率误差对测量结果的影响。

摘要

        频率测量用途非常广泛,高精度、宽量程的数字频率计因而成为重要的测量仪器。本设
计采用多周期测量原理,即用标准频率信号填充整数个周期的被测信号,从而消除了被测信
号+1 的计数误差,其测量精度仅与门控时间和标准频率有关,克服传统的直接测频或者直
接测周法均不能全面满足高精度要求的缺陷。选用 TMS320F2812 型号的 DSP 芯片作为核心处
理单元,结合其高精时钟和快速运算的优点,充分利用其内部的事件管理器:捕获单元,定
时/计数单元,比较单元,脉宽调制电路 PWM,实现高精度的频率测量,并且实现了脉宽和
占空比的测量。
关键词:
高精度频率测量;脉宽和占空比测量;多周期测量原理;DSP ;
系统组成
系统主要是由电源管理模块,输入调理模块,信号处理模块,通讯模块和 D 触发器组
成,如图 所示
信号处理部分
本设计中采用的 DSP 芯片型号为 TMS320F2812,它是到目前为止 C2000 系列中性能最强
大的一代产品。系统中,F2812 协调整个系统各模块的有序工作,并且承担着信号处理的任
务。
系统软件设计
系统软件设计采取模块化设计方案,将完成特定功能或者类似功能的子程序组合成功能
模块,主要功能模块有:初始化模块、中断模块、频率测量模块、脉宽测量模块、SCI 通信
模块以及看门狗模块等,由主监控程序统一调用,协调各个部分正常有序工作。软件系统功
能框图如图所示。
关键程序:
EV 配置程序:
void InitEv(void)
{
EvaRegs.GPTCONA.all = 0;
EvbRegs.GPTCONB.all = 0;
EvaRegs.EXTCONA.bit.INDCOE=1;//
EvaRegs.GPTCONA.bit.T1CTRIPE = 1;//使能定时器 1 输出切断功能
EvaRegs.GPTCONA.bit.T1CMPOE = 1;//使能 T1 比较输出,允许独立使能禁止
//将通用定时器 1 的比较输出设置成低电平有效
EvaRegs.GPTCONA.bit.T1PIN = 1;
// 将定时器 1 设置成连续增计数模式外部时钟,使能 T1 比较
EvaRegs.T1CON.all = 0x101a;
EvaRegs.T1PR=0xffff;
EvaRegs.T1CMPR=1;
// 将定时器 2 设置成连续增计数模式 4 分频,内部时钟
EvaRegs.T2CON.all = 0x1288;
EvaRegs.T2PR = 0xffff;
EvbRegs.T3PR = 0xffff;
EvbRegs.T3CMPR =30000;//T3CMPR 设置为 10000 预置时间
EvbRegs.T4PR=0xffff;
EvbRegs.T4CON.all=0x1000; //T4 使用内部时钟
EvaRegs.CAPCONA.all= 0x04E4; //CAP3 时基为 T1,检测上边沿, CAP1 时基为 T2 ,检
测两个边沿
EvbRegs.CAPCONB.all=0x0064; //CAP4 上升沿 cap5 下降沿,时基 T4
}
主循环程序:
while(1)
{
//***开始测量频率
EvaRegs.CAPCONA.bit.CAP12EN = 1;//使能捕获 1
//实验发现,使能捕获 1 后 CAP1FIFO 会变成 2,故重新复位
EvaRegs.CAPFIFOA.bit.CAP1FIFO=0;
EvaRegs.CAPFIFOA.bit.CAP3FIFO=0;
EvaRegs.T1CON.bit.TENABLE=1;//使能 T1、T2
while(EvaRegs.EVAIFRA.bit.T1CINT!=1)KickDog();//等待 T1 发生比较匹配
t1cint_isr();
while(EvbRegs.EVBIFRA.bit.T3CINT!=1);//等待 T3 发生比较匹配
t3cint_isr();
while(EvaRegs.EVAIFRA.bit.PDPINTA != 1 )KickDog();//等待 PDPINTA 置位
pdpinta_isr();
//***频率测量结束,禁止定时器和捕获
EvaRegs.T1CON.bit.TENABLE=0;//禁止 T1、T2
EvaRegs.CAPCONA.bit.CAP12EN=0;//禁止捕获 1
EvaRegs.CAPCONA.bit.CAP3EN=0;//禁止捕获 3
//***计算频率周期
Freaa[n_celiang]=150000000.0*(65536.0*t1ofcount+t1_2-1)/((4.0*2)*(t2_2+t2ofcoun
t*65536.0-t2_1));
Taa[n_celiang]=1.0/Freaa[n_celiang];
GpioDataRegs.GPASET.bit.GPIOA0 = 1;//写 1 给 GPIOA0 口
//***开始测量脉宽
EvbRegs.CAPFIFOB.bit.CAP4FIFO=1;//置 CAP4FIFO 为 1
EvbRegs.T4CON.bit.TENABLE=1;// 使能 T4
EvbRegs.CAPCONB.bit.CAP45EN = 1;//使能 CAP45
while(EvbRegs.EVBIFRC.bit.CAP4INT!=1)KickDog();//等待 CAP4 中断标志位职
capint4_isr();
//***脉宽测量结束,禁止定时器和捕获,复位中断标志位

相关推荐

  1. 基于FPGA频率与串口通信(二)

    2024-05-25 23:24:29       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-25 23:24:29       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-25 23:24:29       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-25 23:24:29       82 阅读
  4. Python语言-面向对象

    2024-05-25 23:24:29       91 阅读

热门阅读

  1. 栈——顺序存储

    2024-05-25 23:24:29       38 阅读
  2. mysql内存结构

    2024-05-25 23:24:29       36 阅读
  3. 【Muduo】网络库框架模型和各模块简介

    2024-05-25 23:24:29       30 阅读
  4. C# 中的 Dictionary<TKey, TValue> 类

    2024-05-25 23:24:29       32 阅读
  5. docker system prune命令详解

    2024-05-25 23:24:29       32 阅读
  6. MySql开源闪回工具MyFlash

    2024-05-25 23:24:29       30 阅读