曹孟剛



摘要:為了降低頻率量采集系統(tǒng)設(shè)計復(fù)雜性,提高頻率量采集精度,利用STM32F4微控制器定時器自帶的級聯(lián)功能,設(shè)計了一種高效的采集方式,通過與傳統(tǒng)采集方式對比及實驗驗證,本采集方式能夠達到較高精度。
關(guān)鍵詞:STM32;頻率量采集;高精度;定時器。
一、引言
備份儀表中大氣壓力參數(shù)采集通常采用振動筒或硅諧振式 壓力傳感器,受限于工作原理,兩型傳感器通常輸出與待測壓 力成函數(shù)關(guān)系的頻率量,通過測量該頻率即可計算出待測壓力。 頻率測量精度高低直接影響計算大氣參數(shù)的精度。 通常實現(xiàn)高精度頻率量測量,需要專用芯片或 FPGA 實現(xiàn), 不但增加設(shè)計成本,增加了系統(tǒng)復(fù)雜性還降低了系統(tǒng)可靠性。
本文采用 STM32F4 系列微處理器片內(nèi)通用定時器實現(xiàn)頻 率量高精度采集,不需要增加專用硬件。該方式不但保證了較 高的測量精度,降低了軟件設(shè)計復(fù)雜性。對 500Hz~30MHz 范 圍內(nèi)的頻率均能達到±0.001Hz 精度要求。
二、頻率量采集方法
STM32F4 系列微控制器測量頻率通常由測頻法和測周法 兩種方式。
1)測頻法
測頻法主要是將被測頻率信號作為定時器計數(shù)源,測量單 位時間 T 內(nèi)計數(shù)器計數(shù)值 N。被測信號頻率 f = N/T。
該方法由于計數(shù)器只能進行整數(shù)計數(shù),計數(shù)值 N 存在±1 誤差,測量誤差為±1/T。
2)測周法
測周法原理利用標(biāo)準(zhǔn)頻率信號作為計數(shù)器計數(shù)源,被測信 號作為觸發(fā),測量被測信號周期 T1。
假定標(biāo)準(zhǔn)頻率信號頻率為 fs,計數(shù)器計數(shù)值為 N,則被測信 號頻率為: f=fs/N。同樣計數(shù)器存在±1 誤差,被測信號頻率量 測量誤差為 fs/(N2+N),約為 1/N。被測信號頻率確定,標(biāo)準(zhǔn) 信號頻率越高,測得的誤差越小。此方法由于中斷產(chǎn)生頻率等 于被測信號頻率,被測信號頻率越高,消耗 MCU 資源越多。 當(dāng)被測信號頻率高于 5KHz 時不建議使用。
STM32F4 系列 MCU 具有 2 個高級定時器、 11 個通用定時 器和 2 個基本定時器,特定定時器可進行級聯(lián)同步,內(nèi)部連接 關(guān)系表如表 1 所示。
本文通過對測頻法進行改良,消除被測信號采集時的±1 誤差,從而提高測量精度。測量原理示意圖如圖 1 所示。
被測信號接主定時器比較/捕獲通道,經(jīng)過濾波及邊沿檢測 后的信號 TI1FP1 作為計數(shù)器的計數(shù)源,同時將該通道配置為 PWM 模式 2 不輸出模式作為門控信號控制從定時器的工作狀 態(tài)。設(shè)置主定時器 TIMx_CCRx 為 n,從定時器工作在門控模 式,計數(shù)源為 APB 總線時鐘。
當(dāng)主定時器開啟后開始對外部被測信號上升沿開始計數(shù), 時,門控信號輸出為低,此時從定時器不計數(shù)。 n≤ TIMx_CNT ≤TIMx_ARR 時,門控信號輸出為高,從定時器對標(biāo)準(zhǔn)信號進 行計數(shù)。若主定時器設(shè)置為單脈沖工作方式, TIMx_CNT=TIMx_ARR 時主定時器停止工作并產(chǎn)生中斷,即 可計算被測信號頻率。
此方法由于門控信號開始與結(jié)束均與被測信號上升沿對 齊,所以對被測信號的計數(shù)值不會產(chǎn)生±1 誤差,從定時器對 標(biāo)準(zhǔn)信號測量仍存在±1 誤差。假定主定時器 TIMx_CCRx 為 n1,TIMx_ARR 為 n2,從定時器計數(shù)源頻率為 f1,計數(shù)值為 N。則被測信號頻率為
由于 N 存在±1 誤差,則被測信號頻率 F 的誤差為 1/N, 通常 STM32F4 系列 MCU 定時工作頻率為 90MHz,門控信號開 啟時間設(shè)置為10ms時,計數(shù)值N約為900K,則F的誤差±2*10-6 以內(nèi)。
軟件設(shè)計
目前基于 STM32 開發(fā)主要有直接操作寄存器,使用標(biāo)準(zhǔn)外 設(shè)庫和使用 HAL 庫三種方式。其中使用 HAL 庫是意法半導(dǎo)體 推薦的開發(fā)方式,能夠使工程師快速上手。
本設(shè)計采用 HAL 庫加直接操作寄存器的方式,能夠?qū)崿F(xiàn)對 定時器的靈活控制。選用 TIM3 作為主定時器,TIM5 作為從定 時器,被測信號接 TIM3 的 chan1。本設(shè)計主要工作為定時初始 化配置。
四、結(jié)束語
用信號發(fā)生器產(chǎn)生被測信號,對本設(shè)計采集精度進行試驗 驗證。驗證結(jié)果表明被測信號采集精度滿足預(yù)期結(jié)果。
本設(shè)計中預(yù)期精度均以標(biāo)準(zhǔn)信號為理想信號為前提,實際 STM32 工作時鐘為外部時鐘信號倍頻鎖相后產(chǎn)生,因此外部時 鐘精度對采集精度影響較大。對于采集精度要求較高時,選用 受溫度影響較小的溫補晶振作為 MCU 外部時鐘,頻率準(zhǔn)確度 可達±1ppm,由于標(biāo)準(zhǔn)信號誤差帶來的采集精度誤差可以忽略。
本問介紹的頻率量高精度采集方案利用 MCU 自帶的定時 器實現(xiàn),可靈活配置采集周期,在采集精度與 MCU 工作負荷 間取得平衡。通過實驗表明采集精度能夠滿足設(shè)計要求。