AVR單片機(jī)(學(xué)習(xí)ing)—(九)、ATMEGA16的模數(shù)轉(zhuǎn)換器—01
1、介紹
本文引用地址:http://m.butianyuan.cn/article/201611/322094.htm1)特點(diǎn):
• 10 位 精度
• 0.5 LSB 的非線性度
• ± 2 LSB 的絕對(duì)精度
• 65 - 260 μs 的轉(zhuǎn)換時(shí)間
• 最高分辨率時(shí)采樣率高達(dá)15 kSPS
• 8 路復(fù)用的單端輸入通道
• 7 路差分輸入通道
• 2 路可選增益為10x 與200x 的差分輸入通道
• 可選的左對(duì)齊ADC 讀數(shù)
• 0 - VCC 的 ADC 輸入電壓范圍
• 可選的2.56V ADC 參考電壓
• 連續(xù)轉(zhuǎn)換或單次轉(zhuǎn)換模式
• 通過自動(dòng)觸發(fā)中斷源啟動(dòng)ADC 轉(zhuǎn)換
• ADC 轉(zhuǎn)換結(jié)束中斷
• 基于睡眠模式的噪聲抑制器
Note: 1. 在PDIP封裝下的差分輸入通道器件未經(jīng)測(cè)試。只保證器件在TQFP 與MLF封裝下正常
工作。
2)介紹和框圖
ATmega16有一個(gè)10位的逐次逼近型ADC。ADC與一個(gè)8通道的模擬多路復(fù)用器連接,能
對(duì)來自端口A 的8 路單端輸入電壓進(jìn)行采樣。單端電壓輸入以0V (GND) 為基準(zhǔn)。
器件還支持16 路差分電壓輸入組合。兩路差分輸入(ADC1、ADC0 與ADC3、ADC2)
有可編程增益級(jí),在A/D 轉(zhuǎn)換前給差分輸入電壓提供0dB(1x)、20dB(10x) 或46dB(200x)
的放大級(jí)。七路差分模擬輸入通道共享一個(gè)通用負(fù)端(ADC1), 而其他任何ADC 輸入可做
為正輸入端。如果使用1x 或10x 增益,可得到8 位分辨率。如果使用200x 增益,可得
到7 位分辨率。
ADC 包括一個(gè)采樣保持電路,以確保在轉(zhuǎn)換過程中輸入到ADC 的電壓保持恒定。ADC 的
框圖如 Figure 98 所示。
ADC 由AVCC 引腳單獨(dú)提供電源。AVCC 與VCC 之間的偏差不能超過± 0.3V
標(biāo)稱值為2.56V 的基準(zhǔn)電壓,以及AVCC,都位于器件之內(nèi)?;鶞?zhǔn)電壓可以通過在AREF
引腳上加一個(gè)電容進(jìn)行解耦,以更好地抑制噪聲。
2、ADC的工作過程
ADC 通過逐次逼近的方法將輸入的模擬電壓轉(zhuǎn)換成一個(gè)10 位的數(shù)字量。最小值代表
GND,最大值代表AREF引腳上的電壓再減去1 LSB。通過寫ADMUX寄存器的REFSn位
可以把AVCC 或內(nèi)部2.56V 的參考電壓連接到AREF 引腳。在AREF 上外加電容可以對(duì)
片內(nèi)參考電壓進(jìn)行解耦以提高噪聲抑制性能。
模擬輸入通道與差分增益可以通過寫ADMUX 寄存器的MUX 位來選擇。任何ADC 輸入
引腳,像GND 及固定能隙參考電壓,都可以作為ADC 的單端輸入。ADC 輸入引腳可選
做差分增益放大器的正或負(fù)輸入。
如果選擇差分通道,通過選擇被選輸入信號(hào)對(duì)的增益因子得到電壓差分放大級(jí)。然后放大
值成為ADC 的模擬輸入。如果使用單端通道,將繞過增益放大器。
通過設(shè)置ADCSRA 寄存器的ADEN 即可啟動(dòng)ADC。只有當(dāng)ADEN 置位時(shí)參考電壓及輸
入通道選擇才生效。ADEN 清零時(shí)ADC 并不耗電,因此建議在進(jìn)入節(jié)能睡眠模式之前關(guān)
閉ADC。
ADC轉(zhuǎn)換結(jié)果為10位,存放于ADC數(shù)據(jù)寄存器ADCH及ADCL中。默認(rèn)情況下轉(zhuǎn)換結(jié)果為
右對(duì)齊,但可通過設(shè)置ADMUX 寄存器的ADLAR 變?yōu)樽髮?duì)齊。
如果要求轉(zhuǎn)換結(jié)果左對(duì)齊,且最高只需8 位的轉(zhuǎn)換精度,那么只要讀取ADCH 就足夠了。
否則要先讀ADCL,再讀ADCH,以保證數(shù)據(jù)寄存器中的內(nèi)容是同一次轉(zhuǎn)換的結(jié)果。一旦
讀出ADCL, ADC 對(duì)數(shù)據(jù)寄存器的尋址就被阻止了。也就是說,讀取ADCL 之后,即使
在讀ADCH 之前又有一次ADC 轉(zhuǎn)換結(jié)束,數(shù)據(jù)寄存器的數(shù)據(jù)也不會(huì)更新,從而保證了轉(zhuǎn)
換結(jié)果不丟失。ADCH 被讀出后, ADC 即可再次訪問ADCH 及ADCL 寄存器。
ADC轉(zhuǎn)換結(jié)束可以觸發(fā)中斷。即使由于轉(zhuǎn)換發(fā)生在讀取ADCH與ADCL之間而造成ADC無
法訪問數(shù)據(jù)寄存器,并因此丟失了轉(zhuǎn)換數(shù)據(jù),中斷仍將觸發(fā)。
3、啟動(dòng)一次轉(zhuǎn)換
向 ADC 啟動(dòng)轉(zhuǎn)換位ADSC 位寫"1” 可以啟動(dòng)單次轉(zhuǎn)換。在轉(zhuǎn)換過程中此位保持為高,直
到轉(zhuǎn)換結(jié)束,然后被硬件清零。如果在轉(zhuǎn)換過程中選擇了另一個(gè)通道,那么ADC 會(huì)在改
變通道前完成這一次轉(zhuǎn)換。
ADC轉(zhuǎn)換有不同的觸發(fā)源。設(shè)置ADCSRA寄存器的ADC自動(dòng)觸發(fā)允許位ADATE可以使能
自動(dòng)觸發(fā)。設(shè)置ADCSRB 寄存器的ADC 觸發(fā)選擇位ADTS 可以選擇觸發(fā)源( 見觸發(fā)源
列表中對(duì)ADTS 的描述)。當(dāng)所選的觸發(fā)信號(hào)產(chǎn)生上跳沿時(shí), ADC 預(yù)分頻器復(fù)位并開始
轉(zhuǎn)換。這提供了一個(gè)在固定時(shí)間間隔下啟動(dòng)轉(zhuǎn)換的方法。轉(zhuǎn)換結(jié)束后即使觸發(fā)信號(hào)仍然存
在,也不會(huì)啟動(dòng)一次新的轉(zhuǎn)換。如果在轉(zhuǎn)換過程中觸發(fā)信號(hào)中又產(chǎn)生了一個(gè)上跳沿,這個(gè)
上跳沿將被忽略。即使特定的中斷被禁止或全局中斷使能位為0,中斷標(biāo)志仍將置位。這
樣可以在不產(chǎn)生中斷的情況下觸發(fā)一次轉(zhuǎn)換。但是為了在下次中斷事件發(fā)生時(shí)觸發(fā)新的
轉(zhuǎn)換,必須將中斷標(biāo)志清零。
使用ADC 中斷標(biāo)志作為觸發(fā)源,可以在正在進(jìn)行的轉(zhuǎn)換結(jié)束后即開始下一次ADC 轉(zhuǎn)換。
之后ADC 便工作在連續(xù)轉(zhuǎn)換模式,持續(xù)地進(jìn)行采樣并對(duì)ADC 數(shù)據(jù)寄存器進(jìn)行更新。第
一次轉(zhuǎn)換通過向ADCSRA 寄存器的ADSC 寫1 來啟動(dòng)。在此模式下,后續(xù)的ADC 轉(zhuǎn)換
不依賴于ADC 中斷標(biāo)志ADIF 是否置位。
如果使能了自動(dòng)觸發(fā),置位ADCSRA 寄存器的ADSC 將啟動(dòng)單次轉(zhuǎn)換。ADSC 標(biāo)志還
可用來檢測(cè)轉(zhuǎn)換是否在進(jìn)行之中。不論轉(zhuǎn)換是如何啟動(dòng)的,在轉(zhuǎn)換進(jìn)行過程中ADSC 一
直為1。
評(píng)論