楊衛(wèi)東 班奎峰 楊紅天
【摘要】 近幾年發(fā)展成熟的Cotex-M3系列嵌入式單片機,由于其低功耗、低成本和高性能的特點,使其在高端工業(yè)儀表和儀器應(yīng)用得以迅速普及。但30MHz以上級別的計數(shù)器,無法在STM32F103系列單片機上直接實現(xiàn),原有儀器硬件方案是采用高速FPGA實現(xiàn)計數(shù)。針對原有儀器硬件方案進行改進,將MCS51單片機換成STM32F103VET6嵌入式單片機,去掉FPGA的計數(shù)器,用嵌入式單片機直接實現(xiàn)100MHz高速計數(shù)器功能。以達到簡化原設(shè)計的復(fù)雜程度。
【關(guān)鍵詞】 高速計數(shù)器 嵌入式系統(tǒng)
一、輸入信號的分頻處理
針對STM32F103VET6計數(shù)器上限只能到27MHz的情況,決定對被測高頻信號進行4分頻后,進入單片機。如此,信號在100MHz時輸入單片機的信號頻率為25MHz,就達到了頻率設(shè)計目標。選擇FAIRCHILD公司的74AC74(雙D觸發(fā)器)來實現(xiàn)4分頻,74AC74在SV電源工作條件下,-40。-85°范圍內(nèi)fmax≥125MHz。4分頻原理圖見圖1。
二、計時器系統(tǒng)的主要誤差分析
l、基本誤差。計數(shù)器在每秒計數(shù)期間,由于信號和秒時鐘的偶然關(guān)系,計數(shù)器具有±1個字的基本誤差。
2、四分頻器誤差。由于單片機內(nèi)的計數(shù)器工作在四分頻信號,則計數(shù)器的所有誤差均會被放大4倍。
3、單片機1秒中斷誤差。單片機內(nèi)部1秒中斷時間到,到執(zhí)行讀出計數(shù)器數(shù)據(jù)這個過程中,每次操作延遲的時間有一定的差別,導致誤差;并且在讀數(shù)期間也有可能產(chǎn)生新的計數(shù),若是碰到計數(shù)進位情況,會產(chǎn)生很大的偶然性誤差。這兩種誤差也會因4分頻被放大4倍。
三、計時器系統(tǒng)誤差處理
1、消除計數(shù)器基本誤差。對于計數(shù)器的此項誤差,通過軟件將前后兩次計數(shù)值,做簡單的均值濾波就可以消除。
2、降低4分頻器誤差。由于4分頻器均會將所有誤差放大4倍,影響最大。發(fā)揮STM32F103VET6的多計數(shù)器長處,用兩個計數(shù)器對信號技術(shù),一個對信號的上升沿計數(shù),一個對信號下降沿計數(shù)。這樣處理后,實際的分頻系數(shù)就降低為2了。若想消除此項誤差,在雙計數(shù)器技術(shù)的條件下,選擇計數(shù)器速度超過50MHz的單片機才能實現(xiàn)。
3、消除單片機1秒中斷誤差。為了消除此項誤差,只能采用硬件操作來完場計數(shù)器的讀數(shù),而不能用軟件中斷方式來實現(xiàn)。筆者是這樣解決的,針對計數(shù)器有外部捕獲功能,若每秒產(chǎn)生一個不收軟件控制的捕獲信號即可。從這個思路出發(fā),充分發(fā)揮嵌入式單片機優(yōu)勢,通過單片機內(nèi)的PWM發(fā)生器,產(chǎn)生一個不用軟件參與的1Hz信號,將這個PWM引腳連接到計數(shù)器的捕獲引腳上,就達到目的了。也可以采用單獨的實時時鐘芯片產(chǎn)生這個信號。
4、降低1秒時間基準誤差。由于此項誤差不來源于單片機本身,而是來源于外部的石英晶體振蕩器,最簡單的辦法是采用高精度和穩(wěn)定度的石英晶體振蕩器。
四、軟件流程圖
設(shè)計中充分運用STM32F103VET6的計數(shù)器外設(shè),完全避開了軟件對計數(shù)器工作的干擾,計數(shù)器的運行消耗MCU資源極少,只在每秒計算信號頻率時才運行一次計算程序,軟件流程見圖7,計算公式如下:
本次1秒F=(N*65536+本次捕獲計數(shù)器值-前次捕獲計數(shù)器值)*分頻系數(shù)
N*65536計數(shù)器工作在16位模式,每次中斷代表有65536信號進入計數(shù)器
分頻系數(shù)=2
信號頻率=(本次1秒F+前次1秒F)/2