AVR單片機(學習ing)—(九)、ATMEGA16的模數(shù)轉換器—01
九、ATMEGA16的模數(shù)轉換器
九—(01)、ATMEGA16的模數(shù)轉換器的介紹
1、介紹
1)特點:
? 10 位 精度
? 0.5 LSB 的非線性度
? ± 2 LSB 的絕對精度
? 65 - 260 μs 的轉換時間
? 最高分辨率時采樣率高達15 kSPS
? 8 路復用的單端輸入通道
? 7 路差分輸入通道
? 2 路可選增益為10x 與200x 的差分輸入通道
? 可選的左對齊ADC 讀數(shù)
? 0 - VCC 的 ADC 輸入電壓范圍
? 可選的2.56V ADC 參考電壓
? 連續(xù)轉換或單次轉換模式
? 通過自動觸發(fā)中斷源啟動ADC 轉換
? ADC 轉換結束中斷
? 基于睡眠模式的噪聲抑制器
Note: 1. 在PDIP封裝下的差分輸入通道器件未經(jīng)測試。只保證器件在TQFP 與MLF封裝下正常
工作。
2)介紹和框圖
ATmega16有一個10位的逐次逼近型ADC。ADC與一個8通道的模擬多路復用器連接,能
對來自端口A 的8 路單端輸入電壓進行采樣。單端電壓輸入以0V (GND) 為基準。
器件還支持16 路差分電壓輸入組合。兩路差分輸入(ADC1、ADC0 與ADC3、ADC2)
有可編程增益級,在A/D 轉換前給差分輸入電壓提供0dB(1x)、20dB(10x) 或46dB(200x)
的放大級。七路差分模擬輸入通道共享一個通用負端(ADC1), 而其他任何ADC 輸入可做
為正輸入端。如果使用1x 或10x 增益,可得到8 位分辨率。如果使用200x 增益,可得
到7 位分辨率。
ADC 包括一個采樣保持電路,以確保在轉換過程中輸入到ADC 的電壓保持恒定。ADC 的
框圖如 Figure 98 所示。
ADC 由AVCC 引腳單獨提供電源。AVCC 與VCC 之間的偏差不能超過± 0.3V
標稱值為2.56V 的基準電壓,以及AVCC,都位于器件之內(nèi)?;鶞孰妷嚎梢酝ㄟ^在AREF
引腳上加一個電容進行解耦,以更好地抑制噪聲。
2、ADC的工作過程
ADC 通過逐次逼近的方法將輸入的模擬電壓轉換成一個10 位的數(shù)字量。最小值代表
GND,最大值代表AREF引腳上的電壓再減去1 LSB。通過寫ADMUX寄存器的REFSn位
可以把AVCC 或內(nèi)部2.56V 的參考電壓連接到AREF 引腳。在AREF 上外加電容可以對
片內(nèi)參考電壓進行解耦以提高噪聲抑制性能。
模擬輸入通道與差分增益可以通過寫ADMUX 寄存器的MUX 位來選擇。任何ADC 輸入
引腳,像GND 及固定能隙參考電壓,都可以作為ADC 的單端輸入。ADC 輸入引腳可選
做差分增益放大器的正或負輸入。
如果選擇差分通道,通過選擇被選輸入信號對的增益因子得到電壓差分放大級。然后放大
值成為ADC 的模擬輸入。如果使用單端通道,將繞過增益放大器。
通過設置ADCSRA 寄存器的ADEN 即可啟動ADC。只有當ADEN 置位時參考電壓及輸
入通道選擇才生效。ADEN 清零時ADC 并不耗電,因此建議在進入節(jié)能睡眠模式之前關
閉ADC。
ADC轉換結果為10位,存放于ADC數(shù)據(jù)寄存器ADCH及ADCL中。默認情況下轉換結果為
右對齊,但可通過設置ADMUX 寄存器的ADLAR 變?yōu)樽髮R。
如果要求轉換結果左對齊,且最高只需8 位的轉換精度,那么只要讀取ADCH 就足夠了。
否則要先讀ADCL,再讀ADCH,以保證數(shù)據(jù)寄存器中的內(nèi)容是同一次轉換的結果。一旦
讀出ADCL, ADC 對數(shù)據(jù)寄存器的尋址就被阻止了。也就是說,讀取ADCL 之后,即使
在讀ADCH 之前又有一次ADC 轉換結束,數(shù)據(jù)寄存器的數(shù)據(jù)也不會更新,從而保證了轉
換結果不丟失。ADCH 被讀出后, ADC 即可再次訪問ADCH 及ADCL 寄存器。
ADC轉換結束可以觸發(fā)中斷。即使由于轉換發(fā)生在讀取ADCH與ADCL之間而造成ADC無
法訪問數(shù)據(jù)寄存器,并因此丟失了轉換數(shù)據(jù),中斷仍將觸發(fā)。
3、啟動一次轉換
向 ADC 啟動轉換位ADSC 位寫"1” 可以啟動單次轉換。在轉換過程中此位保持為高,直
到轉換結束,然后被硬件清零。如果在轉換過程中選擇了另一個通道,那么ADC 會在改
變通道前完成這一次轉換。
ADC轉換有不同的觸發(fā)源。設置ADCSRA寄存器的ADC自動觸發(fā)允許位ADATE可以使能
自動觸發(fā)。設置ADCSRB 寄存器的ADC 觸發(fā)選擇位ADTS 可以選擇觸發(fā)源( 見觸發(fā)源
列表中對ADTS 的描述)。當所選的觸發(fā)信號產(chǎn)生上跳沿時, ADC 預分頻器復位并開始
轉換。這提供了一個在固定時間間隔下啟動轉換的方法。轉換結束后即使觸發(fā)信號仍然存
在,也不會啟動一次新的轉換。如果在轉換過程中觸發(fā)信號中又產(chǎn)生了一個上跳沿,這個
上跳沿將被忽略。即使特定的中斷被禁止或全局中斷使能位為0,中斷標志仍將置位。這
樣可以在不產(chǎn)生中斷的情況下觸發(fā)一次轉換。但是為了在下次中斷事件發(fā)生時觸發(fā)新的
轉換,必須將中斷標志清零。
使用ADC 中斷標志作為觸發(fā)源,可以在正在進行的轉換結束后即開始下一次ADC 轉換。
之后ADC 便工作在連續(xù)轉換模式,持續(xù)地進行采樣并對ADC 數(shù)據(jù)寄存器進行更新。第
一次轉換通過向ADCSRA 寄存器的ADSC 寫1 來啟動。在此模式下,后續(xù)的ADC 轉換
不依賴于ADC 中斷標志ADIF 是否置位。
如果使能了自動觸發(fā),置位ADCSRA 寄存器的ADSC 將啟動單次轉換。ADSC 標志還
可用來檢測轉換是否在進行之中。不論轉換是如何啟動的,在轉換進行過程中ADSC 一
直為1。
4、預分頻及ADC 轉換時序
在默認條件下,逐次逼近電路需要一個從50 kHz到200 kHz的輸入時鐘以獲得最大精度。
如果所需的轉換精度低于10 比特,那么輸入時鐘頻率可以高于200 kHz,以達到更高的
采樣率。
ADC 模塊包括一個預分頻器,它可以由任何超過100 kHz 的CPU 時鐘來產(chǎn)生可接受的
ADC 時鐘。預分頻器通過ADCSRA 寄存器的ADPS 進行設置。置位ADCSRA 寄存器的
ADEN 將使能ADC,預分頻器開始計數(shù)。只要ADEN 為1,預分頻器就持續(xù)計數(shù),直到
ADEN 清零。
ADCSRA寄存器的ADSC置位后,單端轉換在下一個ADC時鐘周期的上升沿開始啟動。差
分轉換時序見P197“ 差分增益信道” 。
正常轉換需要13 個ADC 時鐘周期。為了初始化模擬電路,ADC 使能(ADCSRA 寄存器
的ADEN 置位) 后的第一次轉換需要25 個ADC 時鐘周期。
在普通的ADC 轉換過程中,采樣保持在轉換啟動之后的1.5 個ADC 時鐘開始;而第一次
ADC轉換的采樣保持則發(fā)生在轉換啟動之后的13.5 個ADC時鐘。轉換結束后,ADC結果
被送入ADC 數(shù)據(jù)寄存器,且ADIF 標志置位。ADSC 同時清零( 單次轉換模式)。之后軟
件可以再次置位ADSC 標志,從而在ADC 的第一個上升沿啟動一次新的轉換。
使用自動觸發(fā)時,觸發(fā)事件發(fā)生將復位預分頻器。這保證了觸發(fā)事件和轉換啟動之間的延
時是固定的。在此模式下,采樣保持在觸發(fā)信號上升沿之后的2 個ADC 時鐘發(fā)生。為了
實現(xiàn)同步邏輯需要額外的3 個CPU 時鐘周期。如果使用差分模式,加上不是由ADC 轉
換結束實現(xiàn)的自動觸發(fā),每次轉換需要25 個ADC 時鐘周期。因為每次轉換結束后都要
關閉ADC 然后又啟動它。
在連續(xù)轉換模式下,當ADSC 為1 時,只要轉換一結束,下一次轉換馬上開始。轉換時
間請見 Table 81。
5、差分增益信道
當使用差分增益通道,需要考慮轉換的確定特征。
差分轉換與內(nèi)部時鐘CKADC2 同步等于ADC 時鐘的一半。同步是當ADC 接口在CKADC2
邊沿出現(xiàn)采樣與保持時自動實現(xiàn)的。當CKADC2 為低時,通過用戶啟動轉換( 即,所有的
單次轉換與第一次連續(xù)轉換) 將與單端轉換使用的時間( 接著的預分頻后的13 個 ADC 時
鐘周期)。當 CKADC2 為高時,由于同步機制,將會使用14 個 ADC 時鐘周期。在連續(xù)轉
換模式時,一次轉換結束后立即啟動新的轉換,而由于CKADC2 此時為高,所有的自動啟
動( 即除第一次外) 將使用14 個 ADC 時鐘周期。
在所有的增益設置中,當帶寬為4 kHz 時增益級最優(yōu)。更高的頻率可能會造成非線性放
大。當輸入信號包含高于增益級帶寬的頻率時,應在輸入前加入低通濾波器。注意,ADC
時鐘頻率不受增益級帶寬限制。比如,不管通道帶寬是多少, ADC 時鐘周期為6 μs,允
許通道采樣率為12 kSPS。
如果使用差分增益通道且通過自動觸發(fā)啟動轉換,在轉換時ADC 必須關閉。當使用自動
觸發(fā)時, ADC 預分頻器在轉換啟動前復位。由于在轉換前的增益級依靠穩(wěn)定的ADC 時
鐘,該轉換無效。在每次轉換( 在寄存器 ADCSRA 的ADEN 位中 寫 “0” 接著為“1”),通
過禁用然后重使能ADC,只執(zhí)行擴展轉換。擴展轉換結果有效。
6、改變通道和基準源
ADMUX寄存器中的MUXn及REFS1:0通過臨時寄存器實現(xiàn)了單緩沖。CPU可對此臨時寄
存器進行隨機訪問。這保證了在轉換過程中通道和基準源的切換發(fā)生于安全的時刻。在轉
換啟動之前通道及基準源的選擇可隨時進行。一旦轉換開始就不允許再選擇通道和基準
源了,從而保證ADC 有充足的采樣時間。在轉換完成(ADCSRA 寄存器的ADIF 置位) 之
前的最后一個時鐘周期,通道和基準源的選擇又可以重新開始。轉換的開始時刻為ADSC
置位后的下一個時鐘的上升沿。因此,建議用戶在置位ADSC 之后的一個ADC 時鐘周期
里,不要操作ADMUX 以選擇新的通道及基準源。
使用自動觸發(fā)時,觸發(fā)事件發(fā)生的時間是不確定的。為了控制新設置對轉換的影響,在更
新ADMUX 寄存器時一定要特別小心。
若ADATE及ADEN都置位,則中斷事件可以在任意時刻發(fā)生。如果在此期間改變ADMUX
寄存器的內(nèi)容,那么用戶就無法判別下一次轉換是基于舊的設置還是最新的設置。在以下
時刻可以安全地對ADMUX 進行更新:
1. ADATE 或ADEN 為 0
2. 在轉換過程中,但是在觸發(fā)事件發(fā)生后至少一個ADC 時鐘周期
3. 轉換結束之后,但是在作為觸發(fā)源的中斷標志清零之前
如果在上面提到的任一種情況下更新ADMUX,那么新設置將在下一次ADC 時生效。
當改變差分通道時要特別注意。一旦選定差分通道,增益級要用125 μs 來穩(wěn)定該值。因
此在選定新通道后的125 μs 內(nèi)不應啟動轉換?;蛏釛壴摃r間段內(nèi)的轉換結果。