嵌入式硬體之ADC/DAC

嵌入式硬體之ADC/DAC

寫在前面

這幾天在做一個寒假練項目,其中涉及到了音頻的處理,ADC、DAC再次進入到了我的視野,並引起了我新的思考。

1、初次相識

記得去年七月份,本科畢業剛離校,就到研究生學校這邊打雜,導師讓我參與了一個小項目,那個控制器電路中有一個讓我印象很深的的電路——ADC取樣電路

這個電路目的很簡單,就是讀出P35的AD取樣值,藉此來估算VDD的大小,進行監測。

它的模擬訊號就是電阻兩端的電壓,數字訊號是通過P35讀取到的數值,再根據相應的計算公式,就可以得出VDD的大小。

這裡是對模擬訊號——電壓的數模轉換。

其實對於AD轉換來講,大家從小都在接觸,比如家家戶戶都有的水銀溫度計

利用水銀的熱漲冷縮原理,把人的體溫以具體的數值顯示出來。

再比如手機,大家用其播放音樂時,就是把比特流轉化成電壓訊號,再通過揚聲器播放出來。

再比如打電話時,不管是你這邊聽到聲音,又或者你的聲音被另一方聽到,其中都離不開ADC、DAC。

2、為什麼要有ADC/DAC?

萬事萬物的產生都是自有其道理,都有一種內在驅動力在驅動,那麼是什麼促成了ADC/DAC的出現呢?

大家都知道在我們的日常生活中有一種訊號叫——模擬訊號。比如上面提到的:溫度、電壓、電流、聲音等。

模擬訊號雖然很容易被人類接收,但有很多的缺點,比如很容易被各種「雜訊」影響,又比如很難去存儲和傳輸

而數字訊號正好與其相反,不僅能大程度上隔絕外部的干擾,又便於存儲。

所以把模擬訊號轉化為數字訊號是為了更好的去處理和存儲

3、ADC模數轉換器

ADC——Analog to Digital Converter

只要是轉換,就會有損耗,在ADC轉換期間,有些模擬訊號不可避免的會丟失。

舉例來說0~5V的電壓訊號,你可以取這個範圍的任意一個數值,你可以取到無數個數據,也就是說從理論上來講,模擬訊號的解析度是無限大的。所以訊號的丟失不可避免。

3.1模數轉換流程

首先對模擬訊號以特定的速率取樣;取樣之後,對其進行量化;量化後,對其進行二進位編碼。

所以你會看到,在晶片技術手冊上常有的一句話:我們的處理器ADC是幾位幾位的。

這裡的解析度用位數來表示,位數越多解析度越高,以2的n次方倍。

舉例來講,0~1V的電壓範圍,如果是3位的ADC,那麼1除以2的3次方等於0.125V,這就是這個ADC所能達到的精度。

上面那個0.125就表示ADC所能感受到的模擬訊號輸入的最小變化。

電壓值每變化0.125V的數值,如上圖橙色那條線,就會上升一個台階,以此對應一個二進位的數值

以上便是ADC工作的流程:取樣、量化、編碼。

4、DAC數模轉換器

DAC——Digital to Analog Converter

通過數字比特流來產生模擬訊號。

因此對模擬訊號重構的精確度取決於DAC的解析度,12位的要好於3位的。

解析度、基準電壓和重構的時間是DAC的重要參數。

5、如何使用ADC/DAC?

如何使用ADC/DAC?其實很簡單。

因為現在大多的處理器都會內置相應的片上ADC/DAC,而且都是通過外部匯流排與處理器相連的,故外部介面也比較簡單,直接連接即可。如下圖所示。

再配置好相關的暫存器使能,按照晶片技術手冊的要求進行軟體設計。

Tags: