葉敏 意法半導(dǎo)體中國(guó)投資有限公司
隨著科技水平的提高,ARM內(nèi)核的芯片,憑借強(qiáng)大的處理能力和極低的功耗,得到越來(lái)越廣泛的應(yīng)用。意法半導(dǎo)體的STM32系列微控制器是AR@Cortex@-M內(nèi)核單片機(jī)市場(chǎng)和技術(shù)方面的領(lǐng)先者,目前提供12大產(chǎn)品線 (F0, F1, F2, F3, F4, F7, H7, L0, L1,L4, L4+,WB),超過(guò)800個(gè)型號(hào)。產(chǎn)品廣泛應(yīng)用于工業(yè)控制、消費(fèi)電子、物聯(lián)網(wǎng)、通訊設(shè)備、醫(yī)療服務(wù)、安防監(jiān)控等應(yīng)用領(lǐng)域,其優(yōu)異的性能進(jìn)一步推動(dòng)了生活和產(chǎn)業(yè)智能化的發(fā)展。
本文以STM32H7為控制器為基礎(chǔ),具體闡述ADC測(cè)試系統(tǒng)及ADC誤差種類。最后介紹了過(guò)采樣技術(shù)及其原理,以及減少ADC測(cè)量誤差的方法。
STM32H7微控制器自帶的16 位 ADC 是逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。有通道數(shù)20個(gè),2 個(gè)可以測(cè)量?jī)?nèi)部信號(hào)。各通道的A/D 轉(zhuǎn)換模式類型有單次、連續(xù)、掃描或間斷。有32位數(shù)據(jù)寄存器可以來(lái)存儲(chǔ) ADC 的轉(zhuǎn)換結(jié)果。該單片機(jī)的 A/D 寄存器有狀態(tài)寄存器、控制寄存器、采樣時(shí)間寄存器、注入通道偏移寄存器、看門(mén)狗閾值寄存器、規(guī)則序列寄存器等。
轉(zhuǎn)換精度不是僅僅依賴于ADC模塊的性能和功能,它與該模塊周邊應(yīng)用環(huán)境的設(shè)計(jì)密切相關(guān)。
2.1.1 ADC模塊自身相關(guān)的誤差
在STM32H7的數(shù)據(jù)手冊(cè)中,給出了不同類型的ADC精度誤差數(shù)值。通常,精度誤差是以
LSB為單位表示。電壓的分辨率與參考電壓相關(guān)。電壓誤差是按照LSB的倍數(shù)計(jì)算:1 LSB = VREF+/216或VDDA/ 216
2.1.1.1 偏移誤差
這是定義為從第一次實(shí)際的轉(zhuǎn)換至第一次理想的轉(zhuǎn)換之間的偏差。當(dāng)ADC模塊的數(shù)字輸出從0變?yōu)?的時(shí)刻,發(fā)生了第一次轉(zhuǎn)換。理想情況下,當(dāng)模擬輸入信號(hào)介于0.5 LSB至1.5 LSB表達(dá)的范圍之內(nèi)時(shí),數(shù)字輸出應(yīng)該為1;即理想情況下,第一次轉(zhuǎn)換應(yīng)該發(fā)生在輸入信號(hào)為0.5 LSB時(shí)。偏移誤差以EO標(biāo)注。
例子說(shuō)明
對(duì)于STM32H7的ADC模塊,最小的可檢測(cè)到的電壓增量變化,按LSB表示為:
1 LSB = VREF+/65536 (或?qū)τ跊](méi)有VREF+管腳的產(chǎn)品:VDDA /65536)
如果 VREF+=3.3V,理想情況下輸入7.63μV(0.5 LSB = 0.5 x 15.26μV)時(shí),產(chǎn)生數(shù)字輸出1。然而實(shí)際上,這時(shí)ADC模塊的讀數(shù)可能仍然為0。如果在輸入電壓達(dá)到8μV時(shí),才能得到數(shù)字輸出1,則:
偏移誤差EO=實(shí)際的轉(zhuǎn)換- 理想的轉(zhuǎn)換
當(dāng)輸入的模擬電壓大于0.5 LSB產(chǎn)生第一次的轉(zhuǎn)換,則偏移誤差是正值。
當(dāng)輸入的模擬電壓小于0.5 LSB產(chǎn)生第一次的轉(zhuǎn)換,則偏移誤差是負(fù)值。
2.1.1.2 增益誤差
增益誤差定義為最后一次實(shí)際轉(zhuǎn)換與最后一次理想轉(zhuǎn)換之間的偏差。增益誤差以EG標(biāo)注。
最后一次實(shí)際轉(zhuǎn)換是從FFFEh至FFFFh的變換。理想情況下,當(dāng)模擬輸入電壓等于VREF+- 0.5LSB時(shí)產(chǎn)生從FFFEh至FFFFh的變換,因此對(duì)于VREF+ =3.3V的情況,最后一次理想轉(zhuǎn)換應(yīng)該在3.2999847V。
如果ADC數(shù)字輸出為FFFFh時(shí),VAIN< VREF+-0.5LSB,則增益誤差為負(fù)值。
例子說(shuō)明
增益誤差EG=最后一次實(shí)際轉(zhuǎn)換-最后一次理想轉(zhuǎn)換
如果VREF+=3.3V并且VAIN=3.299935V時(shí)產(chǎn)生了從FFFEh至FFFFh 的變換,則:EG=3.299935 V - 3.2999847 V
如果在VAIN等于VREF+時(shí)不能得到滿量程的讀數(shù)(FFFFh)時(shí),增益誤差是正值,即需要一個(gè)大于VREF+的電壓才能產(chǎn)生最后一次變換。
偏移和增益誤差可以簡(jiǎn)單地使用ADC模塊的自校準(zhǔn)功能補(bǔ)償。
除此之外,ADC模塊自身相關(guān)的誤差還有微分線性誤差,積分線性誤差等。
進(jìn)行多次轉(zhuǎn)換再做平均可以減小它們的影響。
2.1.2
與環(huán)境相關(guān)的ADC誤差
2.1.2.1 電源噪聲
模擬電源引腳是用于為轉(zhuǎn)換提供參考電壓,因?yàn)锳DC輸出是模擬信號(hào)電壓和模擬參考電壓之間的比例數(shù)值,因此任何模擬參考電源上的噪聲都會(huì)使轉(zhuǎn)換的數(shù)值產(chǎn)生變化。
例如:模擬參考電壓為3.3V,輸入信號(hào)為1V,則轉(zhuǎn)換的結(jié)果是:(1/3.3) x 65535 = 4D93
如果在供電電源上有一個(gè)峰-峰為40mV的紋波,則當(dāng)VREF+處于尖峰時(shí),轉(zhuǎn)換的結(jié)果變?yōu)椋?1/3.34) x 65535 = 4CA5
通常開(kāi)關(guān)式電源(SMPS)具有內(nèi)部的快速開(kāi)關(guān)功率晶體管,這會(huì)在輸出上產(chǎn)生高頻噪聲,開(kāi)關(guān)噪聲的范圍介于15kHz至1MHz之間。
2.1.2.2 消除模擬輸入信號(hào)的噪聲
平均值方法
平均值法是一個(gè)簡(jiǎn)單的技術(shù),通過(guò)對(duì)一個(gè)模擬輸入信號(hào)的多次采樣和軟件計(jì)算取平均值實(shí)現(xiàn)。這個(gè)技術(shù)有利于消除那些不頻繁變化的模擬輸入信號(hào)上的噪聲。
平均值法需要在一個(gè)相同的模擬輸入電壓上進(jìn)行多次采樣,保證模擬輸入信號(hào)在轉(zhuǎn)換完成之前,保持在相同的電壓,否則模擬輸入的變化將會(huì)出現(xiàn)在結(jié)果數(shù)值中,從而引入新的誤差。
增加一個(gè)外部濾波器
使用一個(gè)外部濾波器可以消除高頻噪聲,沒(méi)有必要使用昂貴的濾波器去處理超出需要頻率之外的頻率分量。因此,一個(gè)相對(duì)簡(jiǎn)單的具有阻斷頻率fC,剛好超過(guò)需要頻率的低通濾波器,可以有效地限制噪聲和假波。采樣速率超過(guò)最高的需要頻率即可,通常為2~5倍于fC。
過(guò)采樣技術(shù)即為提高采樣率來(lái)提高數(shù)據(jù)精度,可以減少白噪聲對(duì)采樣結(jié)果的影響。STM32H7中的ADC模塊自帶過(guò)采樣設(shè)計(jì),適當(dāng)配置寄存器后即可實(shí)現(xiàn)過(guò)采樣。
3.1.1 量化噪聲分析
ADC 采樣過(guò)程其實(shí)是一個(gè)將連續(xù)的模擬信號(hào)量化成有限的數(shù)字的過(guò)程,每個(gè)數(shù)字代表一次采樣所獲得的信號(hào)。量化時(shí),根據(jù)數(shù)據(jù)位把整個(gè)幅度劃分為量化級(jí),例如16位數(shù)據(jù)則表示216個(gè)量化級(jí)。把落入同一級(jí)的樣本值歸為一類,并給定一個(gè)量化值。由于模擬信號(hào)是連續(xù)的,量化結(jié)果和被實(shí)際模擬量的之間會(huì)有差值,該差值就是量化誤差(eq),也稱為量化噪聲。
根據(jù)參考電壓(Vref)和量化的數(shù)字的位數(shù)(N),能夠確定的最小分辨率:
N越大,△就越小,量化誤差也就越小。在沒(méi)有其它能造成誤差的因素如參考電壓的變化的理想情況下,量化誤差應(yīng)該在±0.5△之內(nèi)。
假設(shè)量化噪聲是白噪聲,則可通過(guò)計(jì)算量化誤差的方差來(lái)得到平均噪聲功率:
假設(shè)采樣頻率為fs,將量化噪聲看成一個(gè)總功率為常數(shù),平均分布在0~fs頻帶內(nèi),可以算出量化噪聲的功率密度:
可以看出,采樣頻率越高,量化噪聲影響越小。
3.1.2 過(guò)采樣數(shù)據(jù)的計(jì)算
通過(guò)4p的過(guò)采樣率得來(lái)的采樣值再通過(guò)求和運(yùn)算、平均計(jì)算等方法進(jìn)行處理,但是卻不能簡(jiǎn)單的把4p的采樣值進(jìn)行簡(jiǎn)單的加法和除法的運(yùn)算,這種運(yùn)算方法的濾波作用很低,比如R位的采樣值通過(guò)精度的平均后仍然是R位,并不能提高過(guò)采樣的精度。在進(jìn)行過(guò)采樣數(shù)據(jù)的提取時(shí)可以將4p個(gè)采樣數(shù)據(jù)值進(jìn)行相加得到R+2p位的數(shù)值,通過(guò)數(shù)值右移p個(gè)單位,就能夠得到R+P位的數(shù)值,此時(shí)的數(shù)字是提高了p位后精度的采樣最后結(jié)果。
3.1.3 過(guò)采樣能夠進(jìn)行的前提
過(guò)采樣技術(shù)并不是在任何情況下都能很好地發(fā)揮作用的,如果要使用過(guò)采樣來(lái)增加采樣精度,必須滿下面兩個(gè)條件:
(1)控制器輸入的信號(hào)必須存在一些白噪音,而功率的平均分配要在采樣技術(shù)有用的頻率帶內(nèi)。
(2)噪聲的幅度必須能夠?qū)斎胄盘?hào)產(chǎn)生足夠大的影響。如果不能則輸入的信號(hào)轉(zhuǎn)出的值就會(huì)相同,這樣的抽取結(jié)果不能提高過(guò)采樣的數(shù)據(jù)精度。
在由意法半導(dǎo)體設(shè)計(jì)生產(chǎn)的STM32H7微控制器Discovery開(kāi)發(fā)板上,將PA0管腳連接1.25v外部輸入,參考電壓Vref接到2.5V穩(wěn)壓電源。測(cè)試環(huán)境滿足過(guò)采樣技術(shù)的使用條件。
原始數(shù)據(jù)采樣:通過(guò)1654次ADC連續(xù)采樣PA0管腳的電壓值,做出數(shù)據(jù)統(tǒng)計(jì)。
過(guò)采樣數(shù)據(jù)收集:通過(guò)1654次ADC連續(xù)過(guò)采樣采集PA0管腳的電壓值。
STM32H7微控制器芯片內(nèi)部ADC模塊需配置CFGR2寄存器的ROVSE位置為1,使能過(guò)采樣。將CFGR2寄存器的OSR位(過(guò)采樣率)配置為1024x,OVSS(采樣右移值)為6bit右移。
3.3.1 原始采樣值分布(1654次連續(xù)采樣)
采樣最大值-采樣最小值 = 32868-32757 = 111
3.3.2 過(guò)采樣求平均后結(jié)果
處理后結(jié)果最大值-處理后結(jié)果最小值= 4
本文通過(guò)對(duì)STM32H7微控制器ADC模塊的介紹,ADC測(cè)量誤差的種類分析,以及過(guò)采樣技術(shù)的深入剖析,分析了ADC采樣系統(tǒng)設(shè)計(jì)的原理以及提高采樣精度的方法。通過(guò)過(guò)采樣技術(shù),大大減少了白噪聲對(duì)采樣結(jié)果的影響, 提高了ADC的采樣精度。