ARM系列文章合集如下:
《從0學arm合集》
前言
在嵌入式開發中,ADC應用比較頻繁,本文主要講解ADC的基本原理以及如何編寫基於ARM的裸機程序和基於Linux的驅動程序。
ARM架構:Cortex-A9Linux內核:3.14
在講述ADC之前,我們需要先了解什麼是模擬信號和數位訊號。
模擬信號
主要是與離散的數位訊號相對的連續的信號。模擬信號分布於自然界的各個角落,如每天溫度的變化,而數位訊號是人為的抽象出來的在時間上不連續的信號。電學上的模擬信號是主要是指幅度和相位都連續的電信號,此信號可以被模擬電路進行各種運算,如放大,相加,相乘等。
模擬信號是指用連續變化的物理量表示的信息,其信號的幅度,或頻率,或相位隨時間作連續變化,如目前廣播的聲音信號,或圖像信號等。
如下圖所示從上到下一次是正弦波、 調幅波、 阻尼震蕩波、 指數衰減波 。
數位訊號
數位訊號指幅度的取值是離散的,幅值表示被限制在有限個數值之內。二進位碼就是一種數位訊號。二進位碼受噪聲的影響小,易於有數字電路進行處理,所以得到了廣泛的應用。
數位訊號:高清數位電視,MP3,JPG,PNG文件等等。
優點:
1. 抗幹擾能力強、無噪聲積累
在模擬通信中,為了提高信噪比,需要在信號傳輸過程中及時對衰減的傳輸信號進行放大,信號在傳輸過程中不可避免地疊加上的噪聲也被同時放大。
隨著傳輸距離的增加,噪聲累積越來越多,以致使傳輸質量嚴重惡化。
對於數字通信,由於數位訊號的幅值為有限個離散值(通常取兩個幅值),在傳輸過程中雖然也受到噪聲的幹擾,但當信噪比惡化到一定程度時,
即在適當的距離採用判決再生的方法,再生成沒有噪聲幹擾的和原發送端一樣的數位訊號,所以可實現長距離高質量的傳輸。
2. 便於加密處理
信息傳輸的安全性和保密性越來越重要,數字通信的加密處理的比模擬通信容易得多,以話音信號為例,經過數字變換後的信號可用簡單的數字邏輯運算進行加密、解密處理。
3. 便於存儲、處理和交換
數字通信的信號形式和計算機所用信號一致,都是二進位代碼,因此便於與計算機聯網,也便於用計算機對數位訊號進行存儲、處理和交換,
可使通信網的管理、維護實現自動化、智能化。
4. 設備便於集成化、微型
數字通信採用時分多路復用,不需要體積較大的濾波器。設備中大部分電路是數字電路,可用大規模和超大規模集成電路實現,因此體積小、功耗低。
5. 便於構成綜合數字網和綜合業務數字網
採用數字傳輸方式,可以通過程控數字交換設備進行數字交換,以實現傳輸和交換的綜合。
另外,電話業務和各種非話業務都可以實現數位化,構成綜合業務數字網。
6. 佔用信道頻帶較寬
一路模擬電話的頻帶為4kHz帶寬,一路數字電話約佔64kHz,這是模擬通信目前仍有生命力的主要原因。隨著寬頻帶信道(光纜、數字微波)的大量利用(一對光纜可開通幾千路電話)以及數位訊號處理技術的發展(可將一路數字電話的數碼率由64kb/s壓縮到32kb/s甚至更低的數碼率),數字電話的帶寬問題已不是主要問題了。
常用的數位訊號編碼有不歸零(NRZ)編碼、 曼徹斯特(Manchester)編碼和差分曼徹斯特(Differential Manchester)編碼。
數位訊號與模擬信號的轉化
模擬信號和數位訊號之間可以相互轉換:模擬信號一般通過PCM脈碼調製(Pulse Code Modulation)方法量化為數位訊號,
即讓模擬信號的不同幅度分別對應不同的二進位值,例如採用8位編碼可將模擬信號量化為2^8=256個量級,實用中常採取24位或30位編碼;
數位訊號一般通過對載波進行移相(Phase Shift)的方法轉換為模擬信號。計算機、計算機區域網與城域網中均使用二進位數位訊號,
目前在計算機廣域網中實際傳送的則既有二進位數位訊號,也有由數位訊號轉換而得的模擬信號。但是更具應用發展前景的是數位訊號。
PCM脈衝編碼調製
脈衝編碼調製就是把一個時間連續,取值連續的模擬信號變換成時間離散,取值離散的數位訊號後在信道中傳輸。
脈衝編碼調製就是對模擬信號先抽樣,再對樣值幅度量化, 編碼的過程。
抽樣:
就是對模擬信號進行周期性掃描,把時間上連續的信號變成時間上離散的信號。
該模擬信號經過抽樣後還應當包含原信號中所有信息,也就是說能無失真的恢復原模擬信號。
量化:
就是把經過抽樣得到的瞬時值將其幅度離散,即用一組規定的電平,把瞬時抽樣值用最接近的電平值來表示,通常是用二進位表示。
編碼:
就是用一組二進位碼組來表示每一個有固定電平的量化值。然而,實際上量化是在編碼過程中同時完成的,故編碼過程也稱為模/數變換,可記作A/D。
ADC
ADC,Analog-to-Digital Converter的縮寫,指模/數轉換器或者模數轉換器。是指將連續變化的模擬信號轉換為離散的數位訊號的器件。真實世界的模擬信號,例如溫度、壓力、聲音或者圖像等,需要轉換成更容易儲存、處理和發射的數字形式。模/數轉換器可以實現這個功能,在各種不同的產品中都可以找到它的身影。
ADC最早用於對無線信號向數位訊號轉換。如電視信號,長短播電臺發接收等。
與之相對應的DAC,Digital-to-Analog Converter,它是ADC模數轉換的逆向過程。
現在市場上的電子產品都集成了傳感器,傳感器要採集數據,他的內部結構裡就一定要用到ADC,常見的傳感器如下:
溫溼度:溫度傳感器,DHT11
聲音:音頻晶片進行錄音,WM8906
圖像:索尼IMX386/IMX283傳感器
Exynos4412 A/D轉換器
三星的Exynos4412模塊結構圖如下所示:
Adc控制器集成在exynos4412 soc中,控制器內部有一根中斷線連接到中斷控制器combiner,然後路由到GIC(Generic Interrupt Controller),滑動變阻器連接到adc控制器的通道3。
ADC控制器
參考《Exynos 4412 SCP》 的datasheet。ADC控制器是10位或12位CMOS再循環式模擬數字轉換器,它具有10個通道輸入,並可將模擬量轉換至10位或12位二進位數。5Mhz A/D 轉換時鐘,最大1Msps的轉換速度。A/D轉換具備片上採樣保持功能,同時也支持待機工作模式。
ADC接口包括如下特性。
10bit/12bit輸出位可選。微分誤差 1.0LSB。
積分誤差 2.0LSB。
最大轉換速率5Msps.
功耗少,電壓輸入1.8V。
電壓輸入範圍 0~1.8V。
支持偏上樣本保持功能。
通用轉換模式。
模塊圖
4412 A/D轉換器的控制器接口框圖如下:
原理我們並不需要關注,知道即可。