STM32中的 SAR ADC 簡介
1、模擬轉(zhuǎn)換器原理
模數(shù)轉(zhuǎn)換器,即ADC(Analog to Digital Converter),是一個將模擬信號轉(zhuǎn)換為數(shù)字信號的器件(電路),例如將溫度、濕度、壓力、位置(都是基于電阻,電容上面產(chǎn)生的電壓信號)等信息轉(zhuǎn)換為數(shù)字信號。但由于數(shù)字信號本身不具有實際意義,僅僅表示一個相對大小。因此所有ADC轉(zhuǎn)換過程中都需要一個參考模擬量(REF)作為轉(zhuǎn)換的標(biāo)準(zhǔn)。
而對于SAR ADC,即逐次逼近型ADC是一種直接ADC。由于其采樣速率中等,分辨率中等,且位數(shù)較多時使用元器件較少等原因(成本較低),所以被廣泛應(yīng)用于集成ADC中。例如集成在各種ARM內(nèi)核的MCU中。
2、AD轉(zhuǎn)換原理與步驟
A/D轉(zhuǎn)換的作用是將時間、幅值連續(xù)的模擬信號轉(zhuǎn)換為時間、幅值離散的數(shù)字信號。所以,A/D轉(zhuǎn)換一般要經(jīng)過采樣、保持、量化及編碼四個過程。
3、采樣和保持(Sampling and Holding)
采樣是指在時間上將模擬信號離散化,即是將時間上連續(xù)的信號轉(zhuǎn)為一系列等時間間隔的信號離散序列。其中離散信號脈沖的幅度取決于輸入模擬量。下圖列舉了一個模擬信號從采樣到保持的過程。
采樣需要滿足香農(nóng)定理: 采樣頻率大于模擬信號中最高頻率成分的兩倍時,采樣值才能不失真的反映原來模擬信號。
4、量化和編碼(Quantizing and Encoding)
量化是用有限個幅度值近似原來連續(xù)變化的幅度值,把模擬信號的連續(xù)幅度變?yōu)橛邢迶?shù)量的有一定間隔的離散值。而編碼則是按照一定的規(guī)律,把量化后的值用二進制數(shù)字表示。
下圖列舉了12bits ADC FSR為3V時的量化到編碼的過程
n:分辨率,用于對輸入進行量化的位數(shù)
FSR: Full-Scale Range,滿量程
LSB: Least Significant Bit,最低有效位
MSB: Most Significant Bit,最高有效位
5、分辨率
理論上,n位輸出的ADC能區(qū)分2^n個不同等級的模擬輸入電壓。如上圖所示,能分辨的最小輸入電壓步長LSB = FSR / 2^n = 732uV。
6、量化誤差
量化誤差是由于量化過程引入的誤差,通常是以輸出誤差的最大值形式標(biāo)出。表示ADC實際輸出的數(shù)字量和理論輸出數(shù)字量之間的誤差。使用“四舍五入法”時,ADC 轉(zhuǎn)換器的量化誤差是 ±? LSB。
7、轉(zhuǎn)換時間
轉(zhuǎn)換時間是指ADC從轉(zhuǎn)換控制信號觸發(fā)開始,到輸出端得到穩(wěn)定的數(shù)字信號所經(jīng)過的時間。該時間受ADC類型、ADC時鐘和外部輸入阻抗等因素影響。
8、STM32中的SAR ADC
STM32中的ADC是逐次逼近型ADC(Successive Approximation ADC),是逐個產(chǎn)生比較電壓Vref,并逐次與輸入電壓分別比較,以逐漸逼近的方式進行A/D轉(zhuǎn)換的。而其中的用來產(chǎn)生Vref的電路就是DAC電路。 因此一般DAC電路比較容易設(shè)計,而DAC在采樣速度和精度的權(quán)衡上會比較復(fù)雜。
SAR ADC的轉(zhuǎn)換原理是把輸入的模擬信號按規(guī)定的時間間隔采樣(采樣),并與一系列標(biāo)準(zhǔn)的數(shù)字信號相比較,數(shù)字信號逐次收斂,直至兩種信號相等為止(量化完成),最后輸出代表此信號的二進制數(shù)(編碼)。
9、SAR ADC結(jié)構(gòu)
結(jié)構(gòu)上主要包括采樣保持電路(S/H),比較器(COMPARATOR,COMP),SAR邏輯控制電路、時鐘(CLOCK)和時序(TIMING)控制電路及DAC電路。
10、S/H電路
為了達到快速的采樣,被采樣的脈沖寬度一般是很短的,在下一個采樣脈沖到來之前,要暫時保持所采得的樣值脈沖幅度,以便進行后續(xù)轉(zhuǎn)換。所以,在采樣電路之后和比較電路之間要加保持電路。它的原理是通過一個開關(guān)連接一個電容,通過給電容進行充電來保持模擬信號的幅值信息。
11、DAC電路
大多SAR ADC的DAC都使用電容式DAC來提供內(nèi)在的跟蹤/保持功能。電容式DAC是采用電荷再分配原理來產(chǎn)生模擬輸出電壓的。電容式DAC由N個具有二進制權(quán)重值的電容器陣列再加上一個“虛擬LSB”電容器組成。
首先通過Sa開關(guān)連接VIN,并將所有S1-S11的開關(guān)連接到VIN,給所有并聯(lián)的電容進行充電,這樣就將所有電容充滿,并且充電電壓為VIN。
然后通過將Sa開關(guān)連接到Vref,并且通過數(shù)字信號對應(yīng)到S1-S11的開關(guān)上,也就是關(guān)閉一些電容的開關(guān)連接到GND上,斷開電容,對地放電。
此時對于Vref上的電壓就會根據(jù)斷開電容的容量使得輸出電壓降低,從而將數(shù)字信號轉(zhuǎn)換成一個模擬信號。
電容器陣列容量總量要等于2C。
12、轉(zhuǎn)換步驟
轉(zhuǎn)換步驟數(shù)等于 ADC的分辨率,比如12bits ADC就有12個轉(zhuǎn)換步驟,每個 ADC 時鐘產(chǎn)生一個數(shù)據(jù)位。
13、采樣狀態(tài)
該狀態(tài)下,電容充電至電壓VIN。Sa切換至VIN,采樣期間Sb開關(guān)閉合。
14、保持狀態(tài)
該狀態(tài)下,輸入斷開,電容保持輸入電壓。Sb開關(guān)打開,然后S1-S11切換至接地,且Sa切換至VREF。
15、轉(zhuǎn)換(量化和編碼)狀態(tài)
該狀態(tài)下,每個 ADCCLK 執(zhí)行一個步驟,每一步完成后 ADC 輸出一位數(shù)。采用二分法進行逐次逼近到 ADC 的精度(位數(shù))。整個轉(zhuǎn)換過程如下圖所示。