嵌入式硬體之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,而且都是通過外部總線與處理器相連的,故外部介面也比較簡單,直接連接即可,如下圖所示,
再配置好相關的暫存器使能,按照芯片技術手冊的要求進行軟體設計,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/418992.html
標籤:其他
