曹孟剛



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