李廣柱
(長沙學(xué)院,長沙 410022)
STM32 單片機(jī)具有高速數(shù)據(jù)處理能力、強(qiáng)大的中斷處理能力,較低的功耗[1]4,被廣泛應(yīng)用在家用電器、工業(yè)控制和自動化等領(lǐng)域[2]。在很多應(yīng)用領(lǐng)域都存在頻率測量的任務(wù)需求,STM32 單片機(jī)提供了輸入捕獲、主從模式等多種測頻方法,文章從測頻誤差的角度對比這兩種測頻方法,推導(dǎo)了兩種方法的測頻誤差公式并進(jìn)行分析,在此基礎(chǔ)上介紹了兩種測頻方法的應(yīng)用場景,可作為具體應(yīng)用時選擇正確頻率測量方法的參考。
目前,具有類似功能的國產(chǎn)單片機(jī),如兆易半導(dǎo)體生產(chǎn)的GD32 系列[3]、靈動微電子生產(chǎn)的MM32 系列[4],性能與STM32 一致,且價格更優(yōu)惠,供貨更方便。文章比較的兩種測頻方法,也適用于GD32、MM32系列單片機(jī)。
輸入捕獲法測量信號頻率的時序示意圖如圖1所示。
圖1 輸入捕獲法測頻時序示意圖
對于STM32 系列單片機(jī)來說,高級控制定時器和通用定時器都具有輸入捕獲功能,圖1 中TIMx 選用其中任意一個皆可。圖1假定TIMx 工作在向上計數(shù)模式,t0時刻,待測外部信號產(chǎn)生第一個上升沿,將TIMx 的計數(shù)器清零,TIMx 從0 開始計數(shù);t1時刻,待測外部信號產(chǎn)生第二個上升沿,TIMx的計數(shù)器清零的同時,計數(shù)值存儲到捕獲/比較寄存器TIMx_CCR1中。t0到t1時刻的時間差即為待測外部信號的周期,倒數(shù)即為信號的頻率。
記頻率f的測量誤差為Δf,則:
式(3)反映了測頻的最大相對誤差是時鐘抖動因素和計數(shù)誤差之和。
主從模式法測量信號頻率的時序示意圖如圖2所示。
圖2 主從模式法測頻時序示意圖
對比圖1和圖2可以發(fā)現(xiàn),主從模式法有兩點(diǎn)不同,其一,計數(shù)的時鐘改變?yōu)榇郎y外部信號;其二,主從模式法需要同時采用兩個計數(shù)器,一個作為主計數(shù)器,另一個作為從計數(shù)器,圖2 中TIMx、TIMy 分別為主計數(shù)器和從計數(shù)器,STM32系列單片機(jī)的高級控制定時器和通用定時器都可作為從計數(shù)器,從計數(shù)器選定后,主計數(shù)器只有四種選擇[1]237。
從計數(shù)器TIMy 對待測外部信號計數(shù),圖2 假定TIMy 工作在向上計數(shù)模式;另一方面,主計數(shù)器TIMx 通過分頻得到一個慢速時鐘,t0時刻,TIMx時鐘產(chǎn)生第一個上升沿,將TIMy的計數(shù)器清零,TIMy從0開始計數(shù);t1時刻,TIMx時鐘產(chǎn)生第二個上升沿,TIMy 的計數(shù)器清零的同時,計數(shù)值存儲到捕獲/比較寄存器TIMy_CCR1中。
對式(4)求微分,可以得到主從模式法測頻的相對誤差:
類似可知,主從模式法測頻相對誤差的最大值亦滿足式(3)。
由式可見,兩種測頻方法相對誤差的最大值皆為晶振頻率抖動造成的誤差和計數(shù)誤差之和。針對兩種測頻方法而言,晶振頻率抖動造成的誤差是一致的,且可以補(bǔ)償[5],故以下僅考慮計數(shù)誤差造成的影響。注意到計數(shù)誤差ΔN=±1,因此|ΔN|=1,故由計數(shù)誤差引起的兩種測頻方法的相對誤差最大值皆為1/N。
輸入捕獲法和主從模式法,由計數(shù)誤差引起的測頻相對誤差皆為1/N,但兩種測頻方法下的計數(shù)值N卻不同。參見圖2,若主從模式法采用的主計數(shù)器時鐘為某個確定值,由圖1和圖2可見,待測外部信號的頻率越高,輸入捕獲法對應(yīng)的計數(shù)值N 就越小,對應(yīng)的測頻相對誤差就越大;主從模式法對應(yīng)的計數(shù)值N 就越大,對應(yīng)的測頻相對誤差就越小。也就是說,對于輸入捕獲法,待測外部信號的頻率越高,測頻相對誤差越大;主從模式法則相反,待測外部信號頻率越高,測頻相對誤差越小。
若STM32采用的內(nèi)部工作時鐘為72MHz,圖1所示的輸入捕獲法采用的TIMx 使用72MHz 時鐘;同時假定主從模式法采用的主計數(shù)器使用的時鐘為1Hz,則對于不同頻率的待測外部信號,兩種測頻方法下的相對誤差如圖3所示。
圖3 兩種測頻方法計數(shù)誤差對比
圖3的橫坐標(biāo)為待測外部信號的頻率,縱坐標(biāo)為最大計數(shù)誤差,兩者皆為對數(shù)坐標(biāo)。當(dāng)輸入捕獲法定時器所用時鐘頻率減小時,圖3 中顯示的誤差曲線上移,計數(shù)誤差增加。主從模式法所用主計數(shù)器的時鐘頻率減小時,誤差曲線下移,計數(shù)誤差減少。兩種測頻方法使用時鐘頻率改變,計數(shù)誤差隨著待測外部信號頻率的變化趨勢不變。
由圖3可見,輸入捕獲法適用于低頻的待測外部信號;主從模式法適用于高頻的待測外部信號。當(dāng)待測外部信號頻率為8.48KHz時,兩種測頻方法的計數(shù)誤差一致。此時若要降低測頻誤差,采用輸入捕獲法測頻時,需提高輸入捕獲法定時器的時鐘頻率;若采用主從模式法測頻,則需要降低主計數(shù)器的時鐘頻率。通過圖3可知,此時改變兩種測頻方法的時鐘頻率,對測頻的計數(shù)誤差改善有限。因此,如果需要高精度測量8.48KHz左右的信號時,需采用其他方法。
STM32 以及國產(chǎn)單片機(jī)GD32、MM32 具有多個定時器,可以實(shí)現(xiàn)輸入捕獲法、主從模式法等多種頻率測量的功能。文章在介紹這兩種測頻方法原理的基礎(chǔ)上,推導(dǎo)了測頻誤差公式,可以發(fā)現(xiàn)兩種測頻方法的最大相對誤差具有相同的表達(dá)式。通過對兩種方法對比研究發(fā)現(xiàn),輸入捕獲法適用于測量低頻信號,主從模式法適用于測量高頻信號。當(dāng)待測外部信號頻率在8.48KHz 左右時,兩種測頻方法的誤差接近。這一結(jié)論對于測頻時選擇恰當(dāng)?shù)臏y頻方法有一定的參考價值。
柳州職業(yè)技術(shù)學(xué)院學(xué)報2021年6期