新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于DSP的數(shù)字頻率計設(shè)計

        基于DSP的數(shù)字頻率計設(shè)計

        作者: 時間:2011-09-23 來源:網(wǎng)絡(luò) 收藏
        軟件

        本文引用地址:http://www.104case.com/article/150179.htm

          軟件部分主要包括以下四部分:

          ·初始化:對變量參數(shù)、系統(tǒng)時鐘、PIE、EV、Flash、GPIO等進(jìn)行配置。
          ·中斷模塊:SCI中斷和定時器T2、T3上溢中斷。
          ·數(shù)據(jù)處理模塊:分段+取算術(shù)平均值。
          ·輸出操作模塊:數(shù)據(jù)經(jīng)RS-232傳給上位機(jī)。

          圖5為測、周期軟件流程圖,圖6為定時器2的溢出中斷流程圖。

        圖5 測、周期流程圖

        圖6 定時器T2溢出中斷流程圖

          在該部分初始化時,要進(jìn)行以下配置:通用定時器T1時鐘輸入為外部定時器時鐘,通用定時器T2時鐘輸入為內(nèi)部時鐘輸入,用來對標(biāo)準(zhǔn)脈沖進(jìn)行計數(shù),該標(biāo)準(zhǔn)脈沖由外部30MHz的有源晶振提供;捕獲單元1設(shè)置為上升沿捕獲,用來捕獲T1PWM引腳輸出PWM波的上升沿,在每次比較匹配時讀取定時器T2的計數(shù)值T2CNT,該值保存在CAP1FIFO內(nèi)。初始化時要將捕獲單元1的狀態(tài)寄存器中的FIFO堆棧狀態(tài)設(shè)置成空堆棧;將定時器T1的定時周期設(shè)置為4個被測信號的周期長度,通過測得的定時器T1的一個定時周期內(nèi)的標(biāo)準(zhǔn)脈沖的個數(shù),計算出被測信號,然后對被測信號進(jìn)行分段,分別為低頻段(小于46.875Hz),中頻段(大于46.875Hz,小于2343.75KHz),以及高頻段(大于2343.75 KHz),其中分段的依據(jù)是定時器的計數(shù)飽和值為65536和計數(shù)個數(shù)應(yīng)大于等于1。若信號頻率為中高頻段則重新配置定時器T1,定時器T2的寄存器,來改變定時周期以及每個門閘時間內(nèi)的高頻填充脈沖的個數(shù)。在定時器T1的下一個定時周期內(nèi)計算出頻率和周期。另外,定時器T2的溢出次數(shù)要在第一次發(fā)生比較匹配時清零,而是否是第一次發(fā)生比較匹配則通過設(shè)置一個標(biāo)志來判斷。當(dāng)溢出次數(shù)清零后才開始記溢出次數(shù),直到第二次發(fā)生比較匹配。

          下一步改進(jìn)意見

          該方法的測量誤差主要來自硬件部分,整形電路的優(yōu)劣直接關(guān)系到測量精度的高低。所以我們下一步的工作就是改進(jìn)整形電路的整形效果和抗干擾性能,盡最大可能減小信號整形帶來的誤差。

          由于定時器在計數(shù)時存在計數(shù)飽和的情況,因此在實(shí)現(xiàn)該等精度測量時存在上限,即當(dāng)被測信號頻率高于高頻填充脈沖的頻率時,該方法就不能實(shí)現(xiàn)等精度了。可以在該方案的基礎(chǔ)上進(jìn)行以下處理:選擇定時器T1定時周期內(nèi)被測信號的個數(shù)固定,可設(shè)置T1PR為65529,同時將定時器T2的時鐘修改為75MHz,這樣就能保證每個門閘時間內(nèi)高頻填充脈沖的個數(shù),從而在對高頻信號實(shí)現(xiàn)頻率和周期測量時保證了精度。

          但選擇定時器T1時鐘輸入為外部時鐘時對被測信號的輸入范圍存在限制,如果要進(jìn)一步提高測量的信號的范圍,使得范圍達(dá)到上百兆或上G赫茲,可以考慮相位測量的方法,將被測信號設(shè)為360度,根據(jù)被測信號與標(biāo)準(zhǔn)信號之間的X度相位差,計算被測信號頻率。


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 景东| 墨玉县| 长垣县| 莱西市| 常宁市| 左权县| 稻城县| 金平| 铁力市| 裕民县| 阿勒泰市| 新巴尔虎右旗| 育儿| 永济市| 乡宁县| 武宣县| 绥宁县| 油尖旺区| 彰武县| 绥芬河市| 淄博市| 宁都县| 兴隆县| 惠州市| 永嘉县| 元江| 阳新县| 德钦县| 武义县| 镇远县| 泽州县| 富顺县| 辛集市| 新田县| 平利县| 阿勒泰市| 宁国市| 定陶县| 淮滨县| 乐山市| 钟山县|