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