?? 基于tms320f2812事件管理器的一種測頻方法.htm
字號:
<TBODY>
<TR>
<TD align=middle width="5%"><IMG height=11
src="基于TMS320F2812事件管理器的一種測頻方法.files/arrow3.gif" width=29></TD>
<TD width="73%">您現在的位置: <A class=LinkPath
href="http://www.21control.com/">嵌入式控制研究室</A> >> <A
class=LinkPath
href="http://www.21control.com/DSP/Index.html">DSP</A> >> <A
class=LinkPath
href="http://www.21control.com/DSP/DSPtech/Index.html">DSP應用</A> >> 文章正文</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%"> <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&AuthorName=鄭杰 陶維青">鄭杰 陶維…</A> 文章來源:<A
href="http://www.21control.com/ShowCopyFrom.asp?ChannelID=1005&SourceName=微計算機信息">微計算機信息</A> 點擊數:
<SCRIPT language=javascript
src="基于TMS320F2812事件管理器的一種測頻方法.files/GetHits.htm"></SCRIPT>
更新時間: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>摘要 TMS320F2812是TI公司新推出的一款主要應用于工業控制的DSP芯片。它集成了EV、AD、串口等的片內外設,具有強大的事件管理能力和嵌入式控制功能。文章利用其片內外設事件管理器的捕獲功能,給出了一種簡單的測頻方法,實現了電力系統中電網頻率的測量。有較強的實用性。
<BR>關鍵詞 測頻 電力系統 TMS320F2812 捕獲 <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>
</B>頻率測量是電力系統測量中一個十分重要的環節。電力系統中采樣對測頻要求有一定的實時性。電網頻率范圍在45Hz與55Hz之間,一般在49.5與50.5之間波動。在精度要求不需要特別高的電網頻率測量中,本文給出一種基于DSP芯片TMS320F2812的一種簡易測頻方法。該方法有效利用F2812的片內外設事件管理器(EV)的捕獲功能,在被測信號的有效電平跳變沿捕獲計數,電路實現多靠軟件設置,運算簡單,實時性好,精度達10<SUP>-3</SUP>,完全能夠滿足要求。</P>
<P><B>1 </B><B>測頻原理及常用方法</B></P>
<P> 測頻是電子測量技術中最基本的測量之一,通常采用的直接測頻方法有測頻法和測周法兩種。</P>
<P>
測頻法就是在確定的閘門時間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> <IMG src="基于TMS320F2812事件管理器的一種測頻方法.files/20060520204833964.gif"
border=0></P>
<P><B>2 </B><B>測頻的硬件設計</B></P>
<P><B></B> </P>
<P>2.1 TMS320F2812芯片簡介</P>
<P><B>
</B><B> </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> </P>
<P>2.2 事件管理器及其捕獲單元</P>
<P>
其片內外設事件管理器含有兩個模塊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>
捕獲單元可以記錄捕獲單元引腳的變化,用戶可以指定診斷變化的方式(上升沿、下降沿或兩個邊沿)。當捕捉輸入引腳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;
//周期寄存器設為FFFF</P>
<P> EvaRegs.T1CNT=0;</P>
<P>
EvaRegs.T1CON.all=0;
//定時器控制寄存器</P>
<P>
EvaRegs.T1CON.bit.TMODE=2; //連續增計數模式</P>
<P>
EvaRegs.T1CON.bit.TPS=5; //4分頻</P>
<P> EvaRegs.T1CON.bit.TENABLE=1;
//使能定時器</P>
<P>
EvaRegs.CAPCON.all=0;
//捕捉控制寄存器</P>
<P>
EvaRegs.CAPCON.bit.CAPQEPN=1; //使能捕捉</P>
<P>
EvaRegs.CAPCON.bit.CAP1EDGE=1; /檢測上升沿</P>
<P>
EvaRegs.CAPCON.bit.CAP12TSEL=1; //選定時器1</P>
<P> EvaRegs.CAPFIFO.bit.CAP1FIFO=0;
//CAP1FIFO空</P>
<P>
EvaRegs.EVAIFRC.bit.CAP1INT=1;//清捕獲中斷1標志位</P>
<P> EvaRegs.EVAIMRC.bit.CAP1INT=1;
//捕獲1中斷使能</P>
<P>} </P>
<P>3.2 捕獲中斷子程序</P>
<P> 進入捕獲中斷子程序時,保護現場后首先清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 + -