在MCU系統(tǒng)中如何利用ADC技術(shù)進(jìn)行數(shù)據(jù)采集
使用MCU的系統(tǒng)設(shè)計(jì)人員受益于摩爾定律,即通過(guò)更小封裝、更低成本獲得更多的豐富特性功能。嵌入式系統(tǒng)設(shè)計(jì)人員和MCU廠商關(guān)心數(shù)據(jù)采集系統(tǒng)的三個(gè)基本功能:捕獲、計(jì)算和通信。理解全部功能對(duì)設(shè)計(jì)大有幫助,本文將主要關(guān)注數(shù)據(jù)采集系統(tǒng)的捕獲階段。
捕獲
復(fù)雜的混合信號(hào)MCU必須能夠從模擬世界中捕獲某些有用信息,并且能夠把連續(xù)時(shí)間信號(hào)轉(zhuǎn)換成離散的數(shù)字形式。模數(shù)轉(zhuǎn)換器(ADC)是完成這項(xiàng)任務(wù)最重要的MCU外設(shè),因此ADC的性能往往決定何種MCU適用于何種應(yīng)用。MCU也能夠通過(guò)各種串行或并行數(shù)字I/O接口捕獲來(lái)自外部信號(hào)源的數(shù)字形式的系統(tǒng)信息。
計(jì)算
信號(hào)捕獲后,需要對(duì)捕獲數(shù)據(jù)進(jìn)行某些處理;有時(shí)僅僅需要模數(shù)轉(zhuǎn)換,但是更多情況下必須要對(duì)捕獲的數(shù)據(jù)樣本進(jìn)行計(jì)算。MCU行業(yè)中持續(xù)進(jìn)行的數(shù)字化演變,帶給系統(tǒng)開(kāi)發(fā)人員更先進(jìn)的信號(hào)處理水平和更高的處理器速度。因此,嵌入式開(kāi)發(fā)人員現(xiàn)在對(duì)8位、16位和32位混合信號(hào)MCU有更多的選擇余地,以便適應(yīng)各種成本/性能目標(biāo)。開(kāi)發(fā)人員也有更多片上選擇(on-chip options)可用于完成系統(tǒng)任務(wù)。此外,MCU的硬宏(hard-macro)能自動(dòng)處理,在外設(shè)中集成的功能狀態(tài)機(jī)可完成常見(jiàn)的處理器任務(wù)。
通信
最后,為了控制過(guò)程中的信息交換,某種形式的通信是必要的。此功能可以相當(dāng)簡(jiǎn)單,也可以相當(dāng)復(fù)雜。通信甚至可以是模擬輸出的電壓或電流,通常使用數(shù)模轉(zhuǎn)換器(DAC)把捕獲和處理的數(shù)據(jù)轉(zhuǎn)換到模擬形式來(lái)實(shí)現(xiàn)。
基于多功能MCU的數(shù)據(jù)采集系統(tǒng)
MCU數(shù)據(jù)采集系統(tǒng)的關(guān)鍵是ADC。在電子行業(yè)中最常見(jiàn)的ADC類(lèi)型一般是逐次逼近型ADC(SAR ADC)。許多MCU使用SAR ADC是因?yàn)樗谒俣群托阅芙M合上的靈活性。 在MCU中,SAR ADC的精確度可以從8位到16位,吞吐速率范圍可以從極慢的按需轉(zhuǎn)換請(qǐng)求到每秒超過(guò)100萬(wàn)次轉(zhuǎn)換。但是ADC僅僅是完整數(shù)據(jù)采集系統(tǒng)中的一部分。數(shù)據(jù)采集系統(tǒng)的其他部分也可增加其靈活性,包括信號(hào)輸入接口、參考電壓接口、用于ADC的時(shí)鐘和采樣系統(tǒng)以及用于轉(zhuǎn)換后ADC輸出數(shù)據(jù)的數(shù)據(jù)管理。
通常情況下,模擬信號(hào)輸入接口共享一個(gè)通用輸入輸出(I/O)緩沖器結(jié)構(gòu)體,此結(jié)構(gòu)體可配置為數(shù)字域或模擬域,或者也可以由兩個(gè)域共用。多配置性實(shí)現(xiàn)方法允許設(shè)計(jì)人員根據(jù)其系統(tǒng)需求在多個(gè)芯片引腳上劃分模擬和數(shù)字功能。作為輸入多路復(fù)用器的一部分,最常見(jiàn)的輔助輸入之一是片上的溫度傳感器;其他的重要輸入包括內(nèi)部電壓。
一旦系統(tǒng)的輸入通道配置完成,嵌入式設(shè)計(jì)人員就可以利用程序代碼選擇任意通道,并請(qǐng)求ADC轉(zhuǎn)換。設(shè)計(jì)人員也可以選擇免除程序代碼,而允許ADC通道定序器根據(jù)預(yù)先設(shè)定的通道輸入進(jìn)行循環(huán),直到檢測(cè)出重要事件。
數(shù)據(jù)采集
系統(tǒng)的另一個(gè)重要方面是ADC參考電壓(VREF)。參考電壓用來(lái)設(shè)置系統(tǒng)的輸入動(dòng)態(tài)范圍或量程,并能顯著影響整體噪聲性能。多路轉(zhuǎn)換器通常用于從多種板上和外部參考電壓輸入中選擇VREF。常用的參考電壓包括MCU內(nèi)部生成的緩沖帶隙電壓的倍頻電壓、片外生成的精確參考電壓以及多種外部電源電壓,以上可選參考電壓都兼容I/O緩沖器結(jié)構(gòu)體和ADC限制。
如此多的輸入通道,使人們很容易想象到,在某些系統(tǒng)中一個(gè)或多個(gè)引腳的輸入動(dòng)態(tài)范圍可能不兼容單一VREF電壓。為了解決這個(gè)問(wèn)題,Silicon Labs Precision32 MCU集成輸入級(jí)聯(lián)增益,根據(jù)ADC型號(hào)不同可能有0.5或1倍的增益,這樣通過(guò)調(diào)整輸入信號(hào)可更好的兼容選擇VREF。
ADC轉(zhuǎn)換循環(huán)
ADC的時(shí)鐘系統(tǒng)要易于配置,以便支持MCU應(yīng)用的多種用途。SAR ADC屬于奈奎斯特率轉(zhuǎn)換器,系統(tǒng)設(shè)計(jì)人員要仔細(xì)選擇以滿(mǎn)足采樣率至少兩倍于輸入信號(hào)帶寬的奈奎斯特準(zhǔn)則。當(dāng)配置ADC時(shí),開(kāi)發(fā)人員還必須考慮兩個(gè)計(jì)時(shí)任務(wù)。這兩個(gè)任務(wù)涉及ADC轉(zhuǎn)換循環(huán)和MCU系統(tǒng)內(nèi)的可用時(shí)鐘源。轉(zhuǎn)換循環(huán)有兩部分組成:一個(gè)是跟蹤周期,一個(gè)是轉(zhuǎn)換周期,如圖1所示。
圖1:ADC轉(zhuǎn)換循環(huán)。
跟蹤周期是轉(zhuǎn)換循環(huán)中當(dāng)ADC輸入電路連接到輸入信號(hào)時(shí)所花費(fèi)的那部分時(shí)間。輸入采樣發(fā)生在跟蹤周期結(jié)束并且輸入電路從輸入源斷開(kāi)時(shí)。這一刻是由連接到ADC的數(shù)字控制信號(hào)引起的,稱(chēng)為轉(zhuǎn)換啟動(dòng)(CNVST)。該命名恰如其分,CNVST標(biāo)志著跟蹤周期的結(jié)束和轉(zhuǎn)換周期的開(kāi)始。
轉(zhuǎn)換周期是ADC執(zhí)行逐次逼近寄存器(SAR)邏輯時(shí)的那部分ADC轉(zhuǎn)換循環(huán)。ADC用于跟蹤輸入信號(hào)的時(shí)間量與ADC的輸入負(fù)載特性、信號(hào)源的驅(qū)動(dòng)能力和測(cè)量所需的精度要求相關(guān)。MCU器件規(guī)格手冊(cè)列出ADC輸入模型,給出ADC輸入的輸入電容、電阻和漏電流值。為了精確測(cè)量,開(kāi)發(fā)人員應(yīng)當(dāng)為輸入信號(hào)穩(wěn)定保留足夠的跟蹤時(shí)間,最好超過(guò)0.5 LSB。
雖然轉(zhuǎn)換周期通常是一個(gè)與SAR ADC時(shí)鐘周期有關(guān)的可配置時(shí)間量,即對(duì)于每一位的判別時(shí)間,但他最好是采用CNVST請(qǐng)求之間的時(shí)間量描述跟蹤時(shí)間,而不是SAR轉(zhuǎn)換周期。簡(jiǎn)單的說(shuō),如果ADC沒(méi)有處于轉(zhuǎn)換狀態(tài),那他就處于跟蹤狀態(tài)。轉(zhuǎn)換請(qǐng)求之間的過(guò)長(zhǎng)時(shí)間會(huì)導(dǎo)致更多的跟蹤時(shí)間。為了解決這個(gè)問(wèn)題,Silicon Labs MCU系列產(chǎn)品提供在轉(zhuǎn)換請(qǐng)求之間關(guān)閉跟蹤電路的功能,從而可降低系統(tǒng)功耗。
ADC轉(zhuǎn)換吞吐速率是轉(zhuǎn)換請(qǐng)求的頻率,通常命名為符號(hào)Fs。最大吞吐速率的設(shè)定通常由ADC的最小跟蹤時(shí)間以及最小轉(zhuǎn)換時(shí)間限定。恒定的吞吐速率是通過(guò)發(fā)送同樣時(shí)間間隔的轉(zhuǎn)換請(qǐng)求流來(lái)實(shí)現(xiàn)的。對(duì)于管理兩個(gè)關(guān)鍵的計(jì)時(shí)任務(wù)來(lái)說(shuō),可配置的ADC時(shí)鐘系統(tǒng)是必不可少的。
計(jì)時(shí)任務(wù)之一是生成用于轉(zhuǎn)換周期期間的時(shí)鐘,用于執(zhí)行SAR算法。與轉(zhuǎn)換周期相關(guān)的SAR時(shí)鐘(SARCLK)通常來(lái)自MCU系統(tǒng)時(shí)鐘。SARCLK的可配性需要適應(yīng)MCU系統(tǒng)時(shí)鐘,時(shí)鐘頻率范圍從不到1MHz到超過(guò)100MHz。由于ADC內(nèi)部的比較器設(shè)計(jì),將產(chǎn)生SAR轉(zhuǎn)換邏輯被定時(shí)的最大速率。系統(tǒng)設(shè)計(jì)人員必須小心配置SARCLK頻率,避免超過(guò)其最大時(shí)鐘速率規(guī)格。另一個(gè)計(jì)時(shí)任務(wù)是生成轉(zhuǎn)換請(qǐng)求采樣速率,其不能超過(guò)給定適當(dāng)轉(zhuǎn)換周期配置的ADC轉(zhuǎn)換器的最大吞吐速率。
孔徑抖動(dòng)和延遲
轉(zhuǎn)換啟動(dòng)請(qǐng)求信號(hào)可以看作是采樣時(shí)鐘,因此它決定ADC采樣和保持電路實(shí)際捕獲輸入信號(hào)的時(shí)間點(diǎn)。當(dāng)配置ADC轉(zhuǎn)換請(qǐng)求時(shí)基時(shí),需要考慮與采樣和保持電路相關(guān)的規(guī)格,即孔徑抖動(dòng)和孔徑延遲。這兩個(gè)規(guī)格影響輸入信號(hào)采樣的精確度,因?yàn)檩斎胄盘?hào)相對(duì)于孔徑時(shí)間延遲在不斷快速變化,如圖2所示。
圖2:孔徑抖動(dòng)和延遲。
孔徑抖動(dòng)在生成轉(zhuǎn)換啟動(dòng)信號(hào)的時(shí)鐘系統(tǒng)和其他電路中將導(dǎo)致誤差(即時(shí)鐘抖動(dòng)),同時(shí)孔徑延遲導(dǎo)致轉(zhuǎn)換啟動(dòng)信號(hào)和采樣開(kāi)關(guān)之間電路延遲??讖蕉秳?dòng)在數(shù)據(jù)采集系統(tǒng)中會(huì)引入噪聲和失真??讖窖舆t可以由MCU設(shè)計(jì)人員內(nèi)部管理,使其最小化,以避免由于長(zhǎng)延遲而增加更多抖動(dòng)的風(fēng)險(xiǎn)??讖窖舆t在數(shù)據(jù)采集系統(tǒng)中引起延遲誤差。太長(zhǎng)的孔徑延遲類(lèi)似于水池在“水池滿(mǎn)”信號(hào)發(fā)出之前就開(kāi)始溢出。
由于上述原因,需要精確的時(shí)基用于產(chǎn)生穩(wěn)定的轉(zhuǎn)換啟動(dòng)請(qǐng)求時(shí)序。MCU提供一系列板上時(shí)鐘或外部時(shí)鐘源作為系統(tǒng)時(shí)鐘選擇。系統(tǒng)設(shè)計(jì)人員必須仔細(xì)選擇具有足夠精度的時(shí)鐘源,以滿(mǎn)足其數(shù)據(jù)采集系統(tǒng)的需求。對(duì)于高速輸入源,需要非常精確的晶體振蕩器。另一方面,直流(DC)或慢速輸入可以更好地容忍時(shí)鐘系統(tǒng)錯(cuò)誤,但仍然需要在轉(zhuǎn)換之間保留足夠的穩(wěn)定時(shí)間。
突發(fā)模式特性
Silicon Labs MCU系列產(chǎn)品中兩個(gè)特別有用的特性是突發(fā)模式和標(biāo)記跟蹤模式。突發(fā)模式根據(jù)可編程的連續(xù)ADC轉(zhuǎn)換數(shù)量生成累積的或平均結(jié)果,所有觸發(fā)來(lái)自一個(gè)轉(zhuǎn)換請(qǐng)求。標(biāo)記跟蹤模式通過(guò)改變轉(zhuǎn)換啟動(dòng)請(qǐng)求操作來(lái)分擔(dān)MCU系統(tǒng)所需的跟蹤時(shí)間管理。通常,轉(zhuǎn)換啟動(dòng)標(biāo)記在跟蹤周期終點(diǎn)和轉(zhuǎn)換周期起點(diǎn)。但在標(biāo)記跟蹤模式中,轉(zhuǎn)換啟動(dòng)請(qǐng)求卻在跟蹤周期起點(diǎn)觸發(fā),然后持續(xù)一段時(shí)間,此時(shí)長(zhǎng)為基于預(yù)配置的SARADC時(shí)鐘周期的可編程時(shí)長(zhǎng),最后才開(kāi)始轉(zhuǎn)換。帶有標(biāo)記跟蹤的觸發(fā)模式可為低頻運(yùn)行的MCU在單MCU時(shí)鐘循環(huán)中獲得累積的ADC結(jié)果,因此減少系統(tǒng)循環(huán)數(shù)和降低功耗,如圖3所示。
圖3:ADC突發(fā)模式,在單個(gè)系統(tǒng)時(shí)鐘循環(huán)下實(shí)現(xiàn)4個(gè)數(shù)據(jù)累加。
ADC數(shù)據(jù)窗口
Silicon Labs 8位和32位混合信號(hào)MCU具有ADC輸出數(shù)據(jù)窗口比較器。ADC輸出數(shù)據(jù)與可編程的高低限制進(jìn)行比較,并可為ADC輸出數(shù)據(jù)在設(shè)定的門(mén)限值內(nèi)、外、高或低自動(dòng)生成可編程中斷。使用數(shù)據(jù)窗口比較器,設(shè)計(jì)人員能夠配置ADC來(lái)自動(dòng)檢查“水池滿(mǎn)”液面監(jiān)測(cè)器輸入,直到數(shù)據(jù)窗口比較器發(fā)出一個(gè)中斷信號(hào)給MCU程序?yàn)橹?。?dāng)觸發(fā)中斷時(shí),MCU可以中斷當(dāng)前執(zhí)行的任務(wù)并切換到嚴(yán)密控制水池系統(tǒng)的任務(wù)中。