999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA和STM32的脈寬頻率測量方法

2017-04-12 09:20:59
實(shí)驗(yàn)室研究與探索 2017年2期
關(guān)鍵詞:測量信號檢測

潘 宇

(白城師范學(xué)院 物理學(xué)院, 吉林 白城 137000)

基于FPGA和STM32的脈寬頻率測量方法

潘 宇

(白城師范學(xué)院 物理學(xué)院, 吉林 白城 137000)

為準(zhǔn)確測量高頻信號的頻率,克服STM32F103輸入捕獲模式下測得頻率最高為80 kHz的缺點(diǎn)。提出用FPGA對高頻信號進(jìn)行分頻,用軟件編程調(diào)整分頻因子,將輸入高頻信號分頻到80 kHz以下,然后輸入給STM32F103,采用脈寬測量法測得頻率。為提高測量精度,采用多次采集,并冒泡排序,去掉部分最大、最小值,用剩余值取均值的濾波算法提高測量頻率的精度。最后將測量值與FPGA的分頻倍數(shù)相乘即可得到實(shí)際頻率。測試結(jié)果表明:該方法實(shí)現(xiàn)簡單、測量精度高、頻率高,有一定的實(shí)用價(jià)值。

頻率測量; 脈寬測量法; 均值濾波算法; 分頻

0 引 言

在儀器儀表應(yīng)用中,經(jīng)常要檢測信號的頻率。目前,常用的檢測方法有以下幾種:① 閘門法,即1 s內(nèi)測得的信號跳變的次數(shù),由于毛刺等干擾信號,會存在一定的誤差。② 等精度測量法,設(shè)置2個(gè)同步閥門,同時(shí)對測量信號和基準(zhǔn)信號進(jìn)行測量,其計(jì)數(shù)比就是頻率比。因?yàn)榛鶞?zhǔn)信號頻率已知,所以乘以頻率比就是測量信號的頻率。該方法對硬件電路設(shè)計(jì)要求較高,要求嚴(yán)格同步。③ 測量正脈寬方法,要求正脈寬的占空比已知,一般為50%。測得正脈寬的寬度后乘以2就是周期,對周期取倒數(shù),就可得到頻率[1-3]。

以上方法都要用到計(jì)數(shù)器,計(jì)數(shù)器的頻率與處理器的主頻相關(guān)。比如STM32F103,其主頻達(dá)到72 MHz,通過實(shí)驗(yàn)測試可知,用捕獲正脈寬的方法測試輸入信號的頻率時(shí),最高只能達(dá)到80 kHz。用其他處理器也會遇到這個(gè)問題。因此,為了有效提高測量信號的頻率,采用對高頻信號分頻的方法來降低頻率,通過FPGA的軟件編程實(shí)現(xiàn)任意分頻。又因?yàn)镕PGA技術(shù)發(fā)展迅速,主頻最高可以到GHz。因此將FPGA與STM32相結(jié)合,可使測量的頻率范圍大大提高,可達(dá)到幾十MHz甚至上百M(fèi)Hz。 為了進(jìn)一步提高測量的精確度,加入均值濾波算法,連續(xù)采集100次,然后冒泡排序,將最大值和最小值各去掉20個(gè),用剩余的60個(gè)取平均值。這樣就可有效去除干擾,大大提高測量頻率的精度。

1 系統(tǒng)設(shè)計(jì)

1.1 設(shè)計(jì)框圖

系統(tǒng)設(shè)計(jì)框圖如圖1所示。圖中首先對輸入的信號分頻,分頻因子用VHDL編程語言實(shí)現(xiàn)。將分頻后得到的低頻信號輸入處理器STM32F103RBT6,采用正脈寬測量法和改進(jìn)的均值濾波算法測得該信號的頻率,將其通過串口送到電腦上顯示[4-8]。

圖1 系統(tǒng)框圖

1.2 FPGA分頻軟件設(shè)計(jì)

將要檢測的信號作為輸入信號輸入FPGA。分頻器就是將高頻信號進(jìn)行分頻,得到較低頻率的信號。分頻系數(shù)為

(1)

式中:Fin為輸入信號頻率;Fout為輸出信號頻率[9-12]。

在VHDL語言程序設(shè)計(jì)時(shí),定義一個(gè)N位的計(jì)數(shù)器,對輸入的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)結(jié)果的第N-1位就是對輸入時(shí)鐘的2的N次冪分頻。將相應(yīng)的位數(shù)取出即可得到分頻時(shí)鐘。在VHDL下編寫的程序代碼如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY test IS

PORT (clk : IN STD_LOGIC;

clk_div2 : OUT STD_LOGIC;

clk_div4 : OUT STD_LOGIC;

clk_div8 : OUT STD_LOGIC;

clk_div16 : OUT STD_LOGIC);

END test;

ARCHITECTURE rtl OF test IS

SIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(clk)

BEGIN

IF (clk'event AND clk='1') THEN

IF(count="1111") THEN

Count <= (OTHERS =>'0');

ELSE

Count <= count +1;

END IF ;

END IF ;

END PROCESS;

clk_div2 <= count(0);

clk_div4 <= count(1);

clk_div8 <= count(2);

clk_div16 <= count(3);

END rtl;

上述代碼可實(shí)現(xiàn)2、4、8、16分頻。若想實(shí)現(xiàn)更高分頻,只需要適當(dāng)?shù)男薷膮?shù)即可。

1.3 STM32F103軟件設(shè)計(jì)流程圖

主控采用STM32F103RBT6,基于Cortex-M3內(nèi)核,是32位的微處理器。主頻為72 MHz,有TIM2、TIM3、TIM4、TIM5共4個(gè)通用定時(shí)器。每個(gè)定時(shí)器都有4個(gè)獨(dú)立的通道,這些通道都可以用來作為輸入捕獲通道使用。在軟件編程時(shí)使用TIM2的通道1作為檢測信號輸入端。串口與電腦相互連接,將測得的數(shù)值傳送到電腦上顯示。

軟件設(shè)計(jì)流程圖如圖2所示, 圖中將經(jīng)過FPGA分頻的檢測信號接入STM32的TIM2的通道1,首先初始化串口為460800,N,8,1.然后初始化定時(shí)器TIM2為輸入捕獲模式,采用1 MHz的頻率計(jì)數(shù),測到的計(jì)數(shù)初值剛好對應(yīng)的是1 μs,如果測到計(jì)數(shù)值是10,則為10 μs。當(dāng)檢測到上升沿時(shí)啟動定時(shí)器計(jì)數(shù);當(dāng)捕獲到下降沿時(shí),停止計(jì)數(shù)。

圖2 軟件設(shè)計(jì)流程圖

1.4 初始化代碼

串口初始化代碼如下:

void uart_init(u32 pclk2,u32 bound)

{

float temp;

u16 mantissa;

u16 fraction;

temp=(float)(pclk2*1000000)/(bound*16);//得到USARTDIV

mantissa=temp; //得到整數(shù)部分

fraction=(temp-mantissa)*16; mantissa<<=4;

mantissa+=fraction;

RCC->APB2ENR|=1<<2; //使能PORTA口時(shí)鐘

RCC->APB2ENR|=1<<14; //使能串口時(shí)鐘

GPIOA->CRH&=0XFFFFF00F;//IO狀態(tài)設(shè)置

GPIOA->CRH|=0X000008B0;//IO狀態(tài)設(shè)置

RCC->APB2RSTR|=1<<14; //復(fù)位串口1

RCC->APB2RSTR&=~(1<<14);//停止復(fù)位 USART1->BRR=mantissa; // 波特率設(shè)置

USART1->CR1|=0X200C; //1位停止,無校驗(yàn)位.

if EN_USART1_RX //如果使能了接收

USART1->CR1|=1<<5; //接收中斷使能 MY_NVIC_Init(3,3,USART1_IRQn,2);//設(shè)置中斷優(yōu)先級

endif

}

定時(shí)器2輸入捕獲初始化程序:

void TIM2_Cap_Set(u16 arr,u16 psc,u8 ch)

{

RCC->APB1ENR|=1<<0; //TIM2 時(shí)鐘使能

RCC->APB2ENR|=1<<2; //使能PORTA時(shí)鐘

TIM2->ARR=arr; //設(shè)定計(jì)數(shù)器自動重裝值

TIM2->PSC=psc; //預(yù)分頻器

switch (ch)

{

case 1: //select PA0 GPIOA->CRL&=0XFFFFFFF0; GPIOA->CRL|=0X00000008;

GPIOA->ODR|=0<<0;//PA0 下拉

TIM2->CCMR1|=1<<0;//CC1S=01 TIM2->CCMR1|=1<<4;

TIM2->CCMR1|=0<<2;

TIM2->CCER|=0<<1; /CC1P=0 BIT1=0 上升沿捕獲 BIT1=1 下降沿捕獲

TIM2->CCER|=1<<0; TIM2->DIER|=1<<1; //允許捕獲中斷CC1IE:BIT1=1 允許捕獲/比較1中斷 break;

}

TIM2->DIER|=1<<0; //允許更新中斷TIM2->CR1|=0x01; //使能定時(shí)器2

MY_NVIC_Init(2,0,TIM2_IRQn,2);

}

捕獲部分關(guān)鍵代碼:

if(TIM2CH1_CAPTURE_STA&0X80)//成功捕獲到了一次高電平

{temp=TIM2CH1_CAPTURE_STA&0X3F;

temp*=65536;

temp+=TIM2CH1_CAPTURE_VAL;//得到總的高電平時(shí)間

printf("HIGH:%d us ",temp/72);//打印總的高點(diǎn)平時(shí)間

TIM2CH1_CAPTURE_STA=0;//開啟下一次捕獲

}

對上述代碼重復(fù)調(diào)用100次,得到100次的值,然后冒泡排序,去掉最大值和最小值各20個(gè),用剩余的值求均值,就可得到被測信號的周期,將其乘2取倒數(shù),就可得到頻率[13]。

2 測試結(jié)果

2.1 FGPA分頻測試結(jié)果

在Quartus8.0下,用VHDL編程,并設(shè)置好相應(yīng)的參數(shù)后,仿真運(yùn)行,可得到如圖3所示[14-16]波形。在圖中,對輸入信號CLK分別實(shí)現(xiàn)了2、4、8和16分頻。

圖3 分頻圖

圖4所示是經(jīng)16分頻后輸入給STM32的80 kHz波形。用示波器測得的頻率是80 kHz,由于示波器誤差,占空比測得是50.4%,而實(shí)際是50%。

圖4 分頻后產(chǎn)生的80 kHz波形

2.2 頻率測試結(jié)果

在Keil下用C語言編程,將80 kHz的方波輸入給STM32的PA0,對PA0輸入信號進(jìn)行脈寬測量,并經(jīng)過改進(jìn)的均值濾波算法得到的頻率,通過串口助手顯示結(jié)果如圖5所示。從圖中可以看出,基本上沒有誤差。實(shí)際信號的頻率是:80×16=1 280 kHz。

圖5 串口顯示的測量頻率

3 結(jié) 語

本文提出了一種頻率檢測的新方法,為有效提高檢測頻率的范圍,采用高速FPGA軟件編程分頻的方法,將高頻信號頻率降低為低頻信號。輸入給STM32,利用STM32定時(shí)器的捕獲功能測量正脈寬的寬度,以此得到信號的周期,對其求倒數(shù)及得到頻率。為有效提高測量的精度,采用改進(jìn)的均值濾波算法,經(jīng)多次測量排序,并去除干擾比較大的數(shù)值后求均值,提高了測量的精度。經(jīng)測試,該方法能夠有效提高測量頻率的范圍,可測量較高的頻率,并且精度較高,有一定的實(shí)用價(jià)值。

[1] 應(yīng)毓海. FPGA 高精度測量頻率研究[J].低溫與超導(dǎo),2014,42(3):79-82.

[2] 陳壽法,王中鵬. 等精度頻率測量的同步門電路改進(jìn)設(shè)計(jì)[J]. 電測與儀表,2015,52(18): 90-95.

[3] 張?zhí)旌悖~ 偉. 基于SOPC的便攜式高精度頻率儀設(shè)計(jì)[J].儀表技術(shù)與傳感器,2015(5):34-37.

[4] 江 修,經(jīng)亞枝,張煥春.用等精度測頻方法實(shí)現(xiàn)振弦式傳感器頻率測量[J].傳感器技術(shù),2001,20(6):53-55.

[5] 黃國剛,陳 明,張 朋.聲表面波CO氣體傳感器高精度頻率測量研究[J]. 計(jì)算機(jī)測量與控制,2009,17(6):1033-1038.

[6] 沈 偉,王軍政,汪正軍.一種基于信號補(bǔ)償?shù)念l率測量方法[J].儀器儀表學(xué)報(bào),2010,31(10):2192-2197.

[7] 劉 婭, 李孝輝, 王玉蘭. 一種基于數(shù)字技術(shù)的多通道頻率測量系統(tǒng)[J]. 儀器儀表學(xué)報(bào),2009,30(9):1963-1968.

[8] 汪正軍,潘 磊,紀(jì)國瑞. 基于離散相位差檢測的頻率測量方法[J]. 儀器儀表學(xué)報(bào),2013,34(5):994-999.

[9] 梁文海,麥 文,張 健,等. 一種高精度頻率測量的研究與實(shí)現(xiàn)[J]. 四川師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,31(3): 376-378.

[10] 牟龍華,邢錦磊. 基于傅里葉變換的精確頻率測量算法[J].電力系統(tǒng)自動化,2008, 32(23):67-70.

[11] 杜玉環(huán),郭迎清.基于LabVIEW的FFT光纖渦輪流量測量系統(tǒng)研究[J].儀表技術(shù)與傳感器,2015(11):56-58.

[12] 閆 珺, 王淑紅. 一種基于軟件鎖相環(huán)的電網(wǎng)頻率動態(tài)檢測方法[J]. 電測與儀表,2015,52(24): 56-59.

[13] 李月琴,裴 麗.多級高精度可調(diào)諧的瞬時(shí)頻率測量方法[J].中國激光,2015,52(24): 1-8.

[14] 孟 卓,溫 和. 基于復(fù)化梯形的準(zhǔn)同步采樣頻率測量算法[J]. 中國電機(jī)工程學(xué)報(bào),2015,35(10): 2445-2453.

[15] 易 藝,岳慶英.基于FPGA的便攜式課外實(shí)驗(yàn)儀設(shè)計(jì)與實(shí)現(xiàn)[J]. 實(shí)驗(yàn)技術(shù)與管理,2016,33(1): 86-90.

[16] 薛海東, 郭迎清.基于DSP的高精度測頻方法與軟件設(shè)計(jì)[J]. 傳感器與微系統(tǒng),2016,35(1): 117-120.

Pulse Width Frequency Measurement Method Based on FPGA and STM32

PANYu

(Department of Physics, Baicheng Normal College, Baicheng 137000, Jilin, China)

In order to accurately measure the frequency of high frequency signals, overcome the shortcomings of the highest measured frequency is 80 kHz under the STM32F103 input capture mode. The paper proposed to use FPGA to divide the high frequency signal, and use software to adjust the factor of frequency division, the input high frequency signal can be divided and every component is below 80 kHz, then STM32F103 can measure them. In order to improve the measurement precision, we apply the repeated acquisition and bubble sorting, and then remove the maximum and minimum values, and take the average for the remaining values. The method improves the accuracy of frequency measurement. Finally, the measured value can be multiplied with the frequency division of FPGA to get the actual frequency. The test results show that the method is simple and has high precision and high frequency, it has certain practical value.

frequency measure; pulse width measurement; average filtering algorithm; frequency division

2016-05-12

潘 宇 (1982-), 男, 吉林白城人,碩士,講師, 主要研究方向:電子信息工程。

Tel.:15590795511; E-mail: 82048492@qq.com

TP 216

A

1006-7167(2017)02-0083-04

猜你喜歡
測量信號檢測
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
把握四個(gè)“三” 測量變簡單
滑動摩擦力的測量和計(jì)算
基于FPGA的多功能信號發(fā)生器的設(shè)計(jì)
電子制作(2018年11期)2018-08-04 03:25:42
滑動摩擦力的測量與計(jì)算
小波變換在PCB缺陷檢測中的應(yīng)用
主站蜘蛛池模板: 视频一区亚洲| 成人另类稀缺在线观看| 精品一区二区无码av| 国产a v无码专区亚洲av| 欧美亚洲国产精品第一页| 亚洲国产看片基地久久1024| 伊人久久大线影院首页| 精品久久国产综合精麻豆| 亚洲欧美极品| 亚洲天堂精品在线观看| 久草性视频| 成人免费视频一区| 伊人久久久久久久| 91国内在线视频| 天堂亚洲网| 97视频精品全国在线观看| 日韩精品专区免费无码aⅴ| 久久黄色一级视频| 72种姿势欧美久久久久大黄蕉| www精品久久| 黄色片中文字幕| 国产美女自慰在线观看| 免费国产无遮挡又黄又爽| 真实国产乱子伦视频| 无码免费试看| 视频二区国产精品职场同事| 最新加勒比隔壁人妻| 亚洲人成在线免费观看| 美女国产在线| 福利在线不卡| 成人福利在线观看| 欧美另类图片视频无弹跳第一页| 国产自产视频一区二区三区| 国产在线精品香蕉麻豆| 亚洲天堂2014| 午夜不卡福利| 波多野结衣亚洲一区| 婷婷色婷婷| 激情無極限的亚洲一区免费| 亚洲va欧美va国产综合下载| 国产成人综合欧美精品久久| 精品一区国产精品| 亚洲综合在线最大成人| 天天色综合4| 国产午夜无码片在线观看网站 | 欧美翘臀一区二区三区| 国产黄色片在线看| 久久久久久高潮白浆| 色精品视频| 亚洲国产精品成人久久综合影院| 老汉色老汉首页a亚洲| 香港一级毛片免费看| 国产视频入口| 亚洲av日韩av制服丝袜| 中文字幕亚洲电影| 无码啪啪精品天堂浪潮av| 国产乱人激情H在线观看| 欧美另类一区| 欧美自慰一级看片免费| 国产全黄a一级毛片| 国产毛片高清一级国语 | 制服丝袜国产精品| 青青草一区| 国产日本欧美在线观看| 久久精品人妻中文系列| 亚洲无码精品在线播放| 91麻豆国产视频| 99在线观看视频免费| 黄色成年视频| 国产亚洲欧美在线视频| 亚洲国产成人无码AV在线影院L| 亚洲天堂视频网站| 国产在线视频导航| 亚洲国产看片基地久久1024 | 中文字幕第4页| 国内精品自在欧美一区| 成人午夜久久| 青青草原偷拍视频| 2021国产精品自拍| 日韩黄色大片免费看| 日韩国产黄色网站| 国产屁屁影院|