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

2024-05-26 18:12

本文主要是介绍电赛一等奖!基于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();
//***脉宽测量结束,禁止定时器和捕获,复位中断标志位
资源下载
电赛一等奖!简易数字频率计设计(原理图、PCB、源码、分析报告)icon-default.png?t=N7T8https://download.csdn.net/download/xcltapestry/89356209?spm=1001.2014.3001.5503

这篇关于电赛一等奖!基于TMS320F2812的简易数字频率计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005213

相关文章

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用PyQt实现简易文本编辑器

《使用PyQt实现简易文本编辑器》这篇文章主要为大家详细介绍了如何使用PyQt5框架构建一个简单的文本编辑器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录分析主窗口类 (MyWindow)菜单操作语法高亮 (SyntaxHighlighter)运行程序主要组件代码图示分析实现

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

通过C#和RTSPClient实现简易音视频解码功能

《通过C#和RTSPClient实现简易音视频解码功能》在多媒体应用中,实时传输协议(RTSP)用于流媒体服务,特别是音视频监控系统,通过C#和RTSPClient库,可以轻松实现简易的音视... 目录前言正文关键特性解决方案实现步骤示例代码总结最后前言在多媒体应用中,实时传输协议(RTSP)用于流媒体服

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人