⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 基于tms320f2812事件管理器的一种测频方法.htm

📁 基于2812的一个测频程序 对于新手应该帮助不小
💻 HTM
📖 第 1 页 / 共 3 页
字号:
  <TBODY>
  <TR>
    <TD align=middle width="5%"><IMG height=11 
      src="基于TMS320F2812事件管理器的一种测频方法.files/arrow3.gif" width=29></TD>
    <TD width="73%">您现在的位置:&nbsp;<A class=LinkPath 
      href="http://www.21control.com/">嵌入式控制研究室</A>&nbsp;&gt;&gt;&nbsp;<A 
      class=LinkPath 
      href="http://www.21control.com/DSP/Index.html">DSP</A>&nbsp;&gt;&gt;&nbsp;<A 
      class=LinkPath 
      href="http://www.21control.com/DSP/DSPtech/Index.html">DSP应用</A>&nbsp;&gt;&gt;&nbsp;文章正文</TD>
    <TD align=right width="22%"><IMG height=13 
      src="基于TMS320F2812事件管理器的一种测频方法.files/User_Login.gif" width=13 
      align=absMiddle> <A class=top_UserLogin 
      href="http://www.21control.com/User/User_Login.asp" target=_blank>用户登录</A> 
      <IMG height=13 src="基于TMS320F2812事件管理器的一种测频方法.files/User_Reg.gif" width=13 
      align=absMiddle> <A class=top_UserLogin 
      href="http://www.21control.com/Reg/User_Reg.asp" target=_blank>新用户注册</A> 
    </TD></TR></TBODY></TABLE><!--导航代码结束--><!-- ********网页顶部代码结束******** --><!-- ********网页中部代码开始******** --><!--文章显示代码开始-->
<TABLE class=center_tdbgall style="WORD-BREAK: break-all" cellSpacing=0 
cellPadding=0 width=760 align=center border=0>
  <TBODY>
  <TR>
    <TD colSpan=2>
      <TABLE class=main_title_760 style="WORD-BREAK: break-all" cellSpacing=0 
      cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD vAlign=center width="3%"><IMG 
            src="基于TMS320F2812事件管理器的一种测频方法.files/arrow.gif" align=absMiddle></TD>
          <TD width="66%"><STRONG><SPAN 
            class=S_headline2>[组图]</SPAN>基于TMS320F2812事件管理器的一种测频方法</STRONG></TD>
          <TD 
            width="18%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT 
            color=#009999>★★★</FONT></TD>
          <TD align=right width="13%">【字体:<A 
            href="javascript:fontZoomA();"><FONT color=#ffffff>小</FONT></A> <A 
            href="javascript:fontZoomB();"><FONT 
        color=#ffffff>大</FONT></A>】</TD></TR></TBODY></TABLE></TD></TR>
  <TR vAlign=center align=middle>
    <TD class=main_ArticleTitle style="WORD-BREAK: break-all" colSpan=2 
    height=50>基于TMS320F2812事件管理器的一种测频方法</TD></TR>
  <TR vAlign=center align=middle>
    <TD class=main_ArticleSubheading style="WORD-BREAK: break-all" 
    colSpan=2></TD></TR>
  <TR align=middle>
    <TD class=Article_tdbgall colSpan=2>作者:<A title="郑杰 陶维青" 
      href="http://www.21control.com/ShowAuthor.asp?ChannelID=1005&amp;AuthorName=郑杰 陶维青">郑杰&nbsp;陶维…</A>&nbsp;&nbsp;&nbsp;&nbsp;文章来源:<A 
      href="http://www.21control.com/ShowCopyFrom.asp?ChannelID=1005&amp;SourceName=微计算机信息">微计算机信息</A>&nbsp;&nbsp;&nbsp;&nbsp;点击数:
      <SCRIPT language=javascript 
      src="基于TMS320F2812事件管理器的一种测频方法.files/GetHits.htm"></SCRIPT>
      &nbsp;&nbsp;&nbsp;&nbsp;更新时间:2006-5-20</TD></TR>
  <TR>
    <TD class=main_tdbg_760 id=fontzoom style="WORD-BREAK: break-all" vAlign=top 
    colSpan=2 height=300>
      <TABLE cellSpacing=0 cellPadding=10 align=left border=0>
        <TBODY>
        <TR>
          <TD><!--插入广告JS代码--></TD></TR></TBODY></TABLE>
      <P>摘要&nbsp;TMS320F2812是TI公司新推出的一款主要应用于工业控制的DSP芯片。它集成了EV、AD、串口等的片内外设,具有强大的事件管理能力和嵌入式控制功能。文章利用其片内外设事件管理器的捕获功能,给出了一种简单的测频方法,实现了电力系统中电网频率的测量。有较强的实用性。 
      <BR>关键词&nbsp;测频&nbsp;&nbsp;电力系统&nbsp;TMS320F2812&nbsp;捕获 <A 
      href="http://www.51kaifa.com/shop/read.php?ID=3152" target=_blank><FONT 
      color=#ffffff size=1><U>SOC开发平台</U></FONT></A><FONT color=#ffffff 
      size=1>360元 </FONT><A href="http://www.51kaifa.com/shop/read.php?ID=3184" 
      target=_blank><FONT color=#ffffff size=1><U>豪华单片机开发系统</U></FONT></A><FONT 
      color=#ffffff size=1>498元 </FONT><A 
      href="http://www.51kaifa.com/shop/read.php?ID=3192" target=_blank><FONT 
      color=#ffffff size=1><U>单片机学习板</U></FONT></A><FONT size=1><FONT 
      color=#ffffff>138 无线nRF-9E5模块100元 </FONT><A 
      href="http://www.51kaifa.com/shop/read.php?ID=3140"><FONT 
      color=#ffffff><U>S3C44B0 ARM7开发板</U></FONT></A><FONT color=#ffffff>398元 
      </FONT></FONT><A href="http://www.51kaifa.com/shop/read.php?ID=3134" 
      target=_blank><FONT color=#ffffff size=1><U>Genius 
      NSP通用编程器</U></FONT></A><FONT color=#ffffff size=1>2</FONT><FONT 
      color=#ffffff size=1>60元 </FONT><A 
      href="http://www.51kaifa.com/shop/read.php?ID=3186" target=_blank><FONT 
      color=#ffffff size=1><U>Mini ARM Debugger</U></FONT></A><FONT 
      color=#ffffff size=1>330元 </FONT><A 
      href="http://www.51kaifa.com/shop/read.php?ID=66" target=_blank><FONT 
      color=#ffffff size=1><U>LABTOOL-48UXP</U></FONT></A><FONT color=#ffffff 
      size=1>2800元 </FONT><A href="http://www.51kaifa.com/shop/read.php?ID=4702" 
      target=_blank><FONT color=#ffffff size=1><U>S3C2410 
      ARM9开发板</U></FONT></A><FONT color=#ffffff 
      size=1>800<BR></FONT><B>引言</B></P>
      <P><B>&nbsp; 
      &nbsp;&nbsp;</B>频率测量是电力系统测量中一个十分重要的环节。电力系统中采样对测频要求有一定的实时性。电网频率范围在45Hz与55Hz之间,一般在49.5与50.5之间波动。在精度要求不需要特别高的电网频率测量中,本文给出一种基于DSP芯片TMS320F2812的一种简易测频方法。该方法有效利用F2812的片内外设事件管理器(EV)的捕获功能,在被测信号的有效电平跳变沿捕获计数,电路实现多靠软件设置,运算简单,实时性好,精度达10<SUP>-3</SUP>,完全能够满足要求。</P>
      <P><B>1 </B><B>测频原理及常用方法</B></P>
      <P>&nbsp; &nbsp;测频是电子测量技术中最基本的测量之一,通常采用的直接测频方法有测频法和测周法两种。</P>
      <P>&nbsp; 
      &nbsp;测频法就是在确定的闸门时间T<SUB>w</SUB>内,记录被测信号的变化周期数(或脉冲个数)N<SUB>x</SUB>,则被测信号的频率为:f<SUB>x</SUB>=N<SUB>x</SUB>/T<SUB>w</SUB>。测周期法需要有标准信号的频率f<SUB>s</SUB>,在待测信号的一个周期T<SUB>x</SUB>内,记录标准频率的周期数N<SUB>s</SUB>,则被测信号的频率为:f<SUB>x</SUB>=f<SUB>s</SUB>/N<SUB>s</SUB>。这两种方法都会产生±1误差(计数脉冲和门控信号不同步而产生)和标准频率误差(所使用的晶振不稳定引起),且±1误差较标准频率误差更大。为了保证测试精度,一般采用低频端测周高频端测频。电网频率在50Hz左右,采用测周法能达到较高的精度。捕获测频原理波形图见图1。精度更高的等精度测频方法有多周期同步测频法和多周期完全同步测频法。但这两种方法实现都比较复杂,可参看参考文献[5]. 
      </P>
      <P>&nbsp;<IMG src="基于TMS320F2812事件管理器的一种测频方法.files/20060520204833964.gif" 
      border=0></P>
      <P><B>2 </B><B>测频的硬件设计</B></P>
      <P><B></B>&nbsp;</P>
      <P>2.1 TMS320F2812芯片简介</P>
      <P><B>&nbsp; 
      </B><B>&nbsp;</B>TMS320F2812是TI公司2000系列的新型DSP芯片,具有32位低功耗定点处理器,最高主频150MHz,有强大的操作能力和迅速的中断响应处理能力。片内有18K字高速RAM,128K字的可加密Flash 
      ROM。片上还集成了丰富的片内外设,有SPI、SCI、eCAN和McBSP等多个串口外围设备,16通道的12位模数转换器(ADC),两个事件管理器(EVA,EVB),56个独立的可编程、多用途通用I/O口(GPIO)。该DSP芯片集成了大量工业控制领域应用的外设接口,能大大简化电路设计,同时它也具有足够的处理能力,是应用于控制领域的一款高性能DSP处理器。</P>
      <P>&nbsp;</P>
      <P>2.2 事件管理器及其捕获单元</P>
      <P>&nbsp; 
      &nbsp;其片内外设事件管理器含有两个模块EVA和EVB,每个模块都包括2个通用目的(GP)定时器、3个全比较/PWM单元、3个捕捉单元和1个正交编码脉冲电路。事件管理器为用户提供了众多的功能和特点,在运动控制和马达控制中特别有用。图2是捕获单元模块图,标出了一些相应的寄存器设置。</P>
      <P><IMG src="基于TMS320F2812事件管理器的一种测频方法.files/20060520204835537.gif" 
      border=0></P>
      <P></P>
      <P>这里利用EV模块的定时器,可以节省一个CPU定时器去处理其他工作。捕获单元捕捉被测信号的有效电平跳变沿,由内部的计数器记录一个周波内标频脉冲个数,并通过相应的运算来得到被测频率的大小。频率测量时应在接入DSP前接一比较电路,将被测信号整形为方波信号后输出到DSP捕获引脚。图3为硬件电路模块图。</P>
      <P><IMG src="基于TMS320F2812事件管理器的一种测频方法.files/20060520204836397.gif" 
      border=0></P>
      <P></P>
      <P>&nbsp; 
      &nbsp;捕获单元可以记录捕获单元引脚的变化,用户可以指定诊断变化的方式(上升沿、下降沿或两个边沿)。当捕捉输入引脚CAPx(x=1、2、3属于EVA;x=4、5、6属于EVB)检测到变化时,它将捕捉所选择的GP定时器的当前计数值,并把该计数值存储在两级深度的16位FIFO堆栈中。这里每个捕捉单元都有一个专用的2级深度FIFO堆栈,顶层堆栈由CAPFIFOx组成,底层由CAPxFBOT组成。测频分两次捕捉,第一次捕捉到引脚发生的指定变化时,捕获单元将捕捉所选用计数器的计数值并把该值写入FIFO堆栈的上层寄存器(如果堆栈为空)。如果在第一次捕捉的值读取之前发生第二次捕捉,一个新的捕捉值会被送入底层寄存器。捕获单元捕捉到数值后,相应的中断标志位置1,如果没有屏蔽中断,就会产生外围设备中断请求。这里第一次捕捉屏蔽中断,第二次设置为和第一次捕捉相同的跳变沿捕捉,并开中断。响应中断,就可以通过中断服务程序读出一对捕捉的数值。这样的一对捕捉值正好是一个被测频率周期的两次计数。堆栈中的数值个数可以通过16位的FIFO状态寄存器CAPFIFOA(或CAPFIFOB)检测到。读出堆栈中两次存入的新旧捕获值,就能计算出一个周波内的标频脉冲数,进而得出被测周波的频率。</P>
      <P><B>3 </B><B>测频软件设计</B></P>
      <P>3.1 事件管理器的初始化</P>
      <P>初始化事件管理器时,在EVA的定时器1控制寄存器(T1CON)中设为连续增计数模式,64分频(由于被测的电网频率范围在45Hz-55Hz,而TMS320F2812主频为150MHz,计数器最大计数为0xFFFF,即65535.为使精度最高,选64分频,150M/64/50=46875),并使能定时器T1。通过设置捕获单元控制寄存器A(CAPCONA)的相应位来选用EVA模块的CAP1和GP定时器T1,并设为上升沿捕获。这里选用连续增计数模式,写0xFFFF到周期寄存器T1PR以使两次捕获的计数值之差尽可能大。GP定时器T1根据输入时钟进行增计数直到计数器的计数值与周期寄存器(T1PR)的值相等时为止,在产生匹配后的下一个输入时钟上升沿定时器复位为0并重新开始计数。捕获前要清中断标志位,开捕获中断。初始化子程序下所示。</P>
      <P>void InitEv(void)</P>
      <P>{</P>
      <P>EvaRegs.T1PR = 0xFFFF;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //周期寄存器设为FFFF</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EvaRegs.T1CNT=0;</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      EvaRegs.T1CON.all=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //定时器控制寄存器</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      EvaRegs.T1CON.bit.TMODE=2;&nbsp;&nbsp;&nbsp; //连续增计数模式</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      EvaRegs.T1CON.bit.TPS=5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //4分频</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EvaRegs.T1CON.bit.TENABLE=1;&nbsp; 
      //使能定时器</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      EvaRegs.CAPCON.all=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //捕捉控制寄存器</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      EvaRegs.CAPCON.bit.CAPQEPN=1;&nbsp; //使能捕捉</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      EvaRegs.CAPCON.bit.CAP1EDGE=1;&nbsp;&nbsp;&nbsp; /检测上升沿</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      EvaRegs.CAPCON.bit.CAP12TSEL=1;&nbsp; //选定时器1</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EvaRegs.CAPFIFO.bit.CAP1FIFO=0; 
      //CAP1FIFO空</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      EvaRegs.EVAIFRC.bit.CAP1INT=1;//清捕获中断1标志位</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EvaRegs.EVAIMRC.bit.CAP1INT=1; 
      //捕获1中断使能</P>
      <P>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </P>
      <P>3.2 捕获中断子程序</P>
      <P>&nbsp;&nbsp;&nbsp;进入捕获中断子程序时,保护现场后首先清CAP1中断标志位,从2级深度FIFO中依次读出两次捕获的计数值capnum1和capnum2。如果capnum2大于capnum1,则直接相减,之差即为在被测频率的一个周波内记的定时器T1脉冲数t。若capnum2小于capnum1,则说明在计数过程中有计数溢出,即计数到周期寄存器T1PR内写入的0xFFFF后回零重新计数,因此在求脉冲数t时要在capnum2与capnum1之差上加上0xFFFF。被测的信号频率:f 
      = 时基T1的频率/ 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -