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