Stellaris™系列微控制器的ADC過采樣技術(shù)(一)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
概述 Luminary Micro在Stellaris系列微控制器的部分產(chǎn)品中提供了模數(shù)轉(zhuǎn)換器(ADC)模塊。ADC的硬件分辨率為10位,但由于噪音和其它使精度變小的因素的影響,實(shí)際的精度小于10位。本應(yīng)用文檔提供了一個(gè)基于軟件的過采樣技術(shù),從而使轉(zhuǎn)換結(jié)果的有效位數(shù)(ENOB)得到了改善。文檔中描述了對(duì)輸入信號(hào)執(zhí)行過采樣的方法,以及在精度和整個(gè)系統(tǒng)性能上的影響。
過采樣
過采樣,顧名思義就是從輸入信號(hào)中采集額外的轉(zhuǎn)換數(shù)據(jù)。模擬信號(hào)采樣的標(biāo)準(zhǔn)約定指出:采樣頻率fS至少是輸入信號(hào)的最高頻率成分fH的兩倍。這被稱作奈奎斯特采樣定理(Nyquist Theorem)(見等式1)。
等式1 奈奎斯特采樣定理:
fS=2fH
只要所選的采樣頻率高于fS就被看作是過采樣。當(dāng)過采樣與平均技術(shù)相結(jié)合時(shí),可改善ENOB。這是可以實(shí)現(xiàn)的,因?yàn)樵趯⑦^采樣的結(jié)果進(jìn)行平均的同時(shí)也將量化噪音進(jìn)行了平均,這樣就提高了信噪比(SNR),信噪比的提高會(huì)在ENOB上產(chǎn)生一個(gè)直接的影響,從而改善ENOB。
精度上每提高一位,必須對(duì)信號(hào)進(jìn)行4倍的過采樣,即過采樣頻率fOS與采樣頻率fS的關(guān)系如等式2所示:
等式2 過采樣頻率:
fOS=4X*fS
x為ENOB上需改進(jìn)的位數(shù)(例如,需要改進(jìn)2位,則x=2)。
平均
平均操作可看作是輸入信號(hào)上的一個(gè)低通濾波器,當(dāng)采樣數(shù)據(jù)寬度(simple size)增加時(shí)濾波器的通帶變窄。有兩種方法可對(duì)轉(zhuǎn)換結(jié)果進(jìn)行平均:常規(guī)平均和滑動(dòng)平均(rolling average)。
常規(guī)平均
對(duì)輸入信號(hào)進(jìn)行n次采樣,將采樣值相加并將結(jié)果除以n,這即是常規(guī)平均。圖1所示的即為常規(guī)平均。當(dāng)在過采樣方案中使用常規(guī)平均時(shí),使用該技術(shù)之后,用于計(jì)算平均值的采樣數(shù)據(jù)被丟棄。每次應(yīng)用程序需要一個(gè)新的轉(zhuǎn)換結(jié)果時(shí),重復(fù)該處理。
在應(yīng)用中,常規(guī)平均方案可理想地用于采樣頻率與ADC的采樣率相比較小的情況。
要點(diǎn):當(dāng)在常規(guī)平均方案中執(zhí)行n倍過采樣時(shí),有效的ADC采樣率將按照相同的因子降低。例如,在對(duì)輸入信號(hào)進(jìn)行4倍過采樣時(shí),最大的有效ADC采樣率降低為原來的1/4,即采樣率為250K/s的ADC有效地變?yōu)?/span>62.5K/s的ADC。
圖2顯示的解決方案使用常規(guī)平均對(duì)輸入源進(jìn)行4倍過采樣。在該例中,應(yīng)用要求在每個(gè)t階段(t0、t1、t2等等)準(zhǔn)備好一個(gè)新值(平均操作完成)。
在使用平均技術(shù)時(shí),因?yàn)橛?jì)算后的轉(zhuǎn)換結(jié)果要與上面的n個(gè)采樣點(diǎn)對(duì)應(yīng),因此稍微有一點(diǎn)延遲。延遲時(shí)間使用等式3中的公式來計(jì)算:
等式3 平均后的采樣延遲:
tdelay=(tSn-tS0)/2+tprocess
tS0為進(jìn)行平均時(shí)第一個(gè)采樣點(diǎn)出現(xiàn)的時(shí)間,tSn為最后一個(gè)采樣點(diǎn)出現(xiàn)的時(shí)間。中斷處理程序處理采樣數(shù)據(jù)所需的時(shí)間,并被計(jì)算為供應(yīng)用使用的平均tproces也被分解到等式中。
滑動(dòng)平均
滑動(dòng)平均在平均計(jì)算中使用存放n個(gè)最近采樣值的采樣緩沖區(qū),允許ADC在其最大采樣率時(shí)采樣(ADC采樣率并不象常規(guī)平均那樣減小為原來的1/n),這樣它可理想地用于要求過采樣和更高采樣率的應(yīng)用中。在未知狀態(tài)中,采樣緩沖區(qū)能夠用有效的采樣數(shù)據(jù)預(yù)先填充(通過捕獲第一個(gè)“實(shí)際”數(shù)據(jù)點(diǎn)之前的n-1個(gè)采樣點(diǎn)),也可保持為空,由應(yīng)用來決定。不預(yù)先填充緩沖區(qū)的危害是前面的n-1個(gè)采樣點(diǎn)包含無效的數(shù)據(jù),并在滑動(dòng)平均計(jì)算中產(chǎn)生不利的影響。如果這些影響可被應(yīng)用所接受,并且如果軟件能夠解決前面的n-1個(gè)偏移的采樣點(diǎn)的可能性,則可去除緩沖區(qū)填充操作。
圖3顯示了采用滑動(dòng)平均的過采樣實(shí)例。圖中顯示的情況為:輸入信號(hào)進(jìn)行4倍過采樣,即采樣緩沖區(qū)使用4個(gè)最近的采樣值來計(jì)算平均值。在該例中,應(yīng)用要求在每個(gè)t時(shí)刻有一個(gè)新的采樣值。在t0時(shí)刻計(jì)算第一個(gè)過采樣的結(jié)果之前,采樣緩沖區(qū)收集了3個(gè)采樣值,這樣提供給應(yīng)用的第一個(gè)數(shù)據(jù)有效。
在使用滑動(dòng)平均時(shí),等式3中計(jì)算得來的采樣延遲也同樣適用。要點(diǎn):因?yàn)楸仨氃诿看沃袛噙^程中執(zhí)行采樣緩沖區(qū)處理,因此使用滑動(dòng)平均增加了額外的處理開銷。
實(shí)現(xiàn)
Luminary Micro在ADC中使用采樣定序器(sample sequencer)結(jié)構(gòu),它使用一次觸發(fā)就可采集到高達(dá)17個(gè)不同的采樣值(來自任意的模擬通道),這樣過采樣的實(shí)現(xiàn)就變得非常簡(jiǎn)單。而通過向應(yīng)用提供在任意給定的時(shí)刻對(duì)多個(gè)通道進(jìn)行過采樣的方法,使得軟件的實(shí)現(xiàn)也具有極大的靈活性。
下面將給出使用Stellaris微控制器的多種過采樣實(shí)現(xiàn)。有許多方法是將采樣定序器的配置、ADC觸發(fā)和中斷相結(jié)合來工作的。這里所舉的例子焦點(diǎn)都集中在最常使用的技術(shù)上。
所有的實(shí)例代碼都使用Stellaris系統(tǒng)驅(qū)動(dòng)庫(kù)的ADC函數(shù)。驅(qū)動(dòng)庫(kù)和本文檔中顯示的軟件實(shí)例的源代碼可從Luminary Micro網(wǎng)站:http://www.luminarymicro.com中獲得。
使用驅(qū)動(dòng)庫(kù)函數(shù)的8倍過采樣
Stellaris驅(qū)動(dòng)庫(kù)具有內(nèi)置的允許進(jìn)行高達(dá)8倍過采樣的函數(shù)。該級(jí)別的過采樣能夠使ENOB改進(jìn)大約1.4位,因此在大多數(shù)應(yīng)用中已足夠了。
使用驅(qū)動(dòng)庫(kù)的過采樣函數(shù)是對(duì)輸入信號(hào)進(jìn)行過采樣的最簡(jiǎn)單的方法。配置“典型”ADC轉(zhuǎn)換和過采樣轉(zhuǎn)換的主要不同在于函數(shù)調(diào)用。過采樣函數(shù)有一個(gè)ADCSoftwareOversample前綴,很容易從標(biāo)準(zhǔn)ADC函數(shù)中識(shí)別出。
一旦確定好ADC轉(zhuǎn)換處理的參數(shù)(采樣頻率、觸發(fā)源、通道、等等),寫代碼是非常簡(jiǎn)單的。舉例:例1中的代碼段即為建立一個(gè)8倍過采樣的10ms周期轉(zhuǎn)換(由定時(shí)器觸發(fā))的代碼。
|