第七講 ADC10_第1頁
第七講 ADC10_第2頁
第七講 ADC10_第3頁
第七講 ADC10_第4頁
第七講 ADC10_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第七講 ADC10ADC10模塊支持快速10位模數(shù)轉(zhuǎn)換。該模塊提供了一個10位SAR內(nèi)核、采樣選擇控制、基準(zhǔn)發(fā)生器和用于轉(zhuǎn)換結(jié)果自動處理的數(shù)據(jù)傳輸控制器(DTC),因而無須CPU的干預(yù)即可對ADC采樣進(jìn)行轉(zhuǎn)換和存儲。一、一、ADC10的結(jié)構(gòu)的結(jié)構(gòu) 10位ADC內(nèi)核ADC10內(nèi)核是一個10位的模/數(shù)轉(zhuǎn)換器,并能夠?qū)⒔Y(jié)果存放在轉(zhuǎn)換存儲器中。該內(nèi)核使用兩個可編程的參考電壓(VR+和VR-)定義轉(zhuǎn)換的最大值和最小值。當(dāng)輸入模擬電壓等于或者高于VR+時,ADC10輸出滿量程值03FFH,當(dāng)輸入電壓等于或小于VR-時,ADC10輸出0。輸入通道和參考電壓定義在轉(zhuǎn)換控制存儲器中。轉(zhuǎn)換結(jié)果可以是直接的二進(jìn)制或

2、者是補碼格式。當(dāng)使用二進(jìn)制時轉(zhuǎn)換公式是:ADC10CLK既是轉(zhuǎn)換時序,又是采樣時鐘。通過控制位ADC10SSELx來選擇ADC10的時鐘源,ADC10DIVx位可以將時鐘進(jìn)行1到8分頻。ADC10CLK的時鐘源有SMCLK、MCLK、ACLK和內(nèi)部振蕩器ADC10OSC。ADC10OSC是內(nèi)部生成的頻率范圍5MHz的時鐘,受芯片本身及供電電壓、溫度等因素的影響。ADC10內(nèi)核可通過兩個控制寄存器ADC10CTL0和ADC10CTL1來配置??刂莆籄DC10ON來控制內(nèi)核的開關(guān)。除少數(shù)例外,ADC10的控制位只有在ENC=0的條件下才能被修改。在任何轉(zhuǎn)換開始之前必須把ENC置位。在ADC10轉(zhuǎn)換

3、過程中,必須確保ADC10CLK有效直到轉(zhuǎn)換結(jié)束,否則轉(zhuǎn)換不能完成,其結(jié)果也是無效的。ADC10的設(shè)計上考慮了低功耗應(yīng)用,當(dāng)ADC10不進(jìn)行模數(shù)轉(zhuǎn)換時,內(nèi)核自動停止工作,當(dāng)模數(shù)轉(zhuǎn)化需要時又重新開始工作。另外ADC10OSC也會在不用時自動關(guān)閉,使用時自動打開。當(dāng)內(nèi)核和振蕩器不工作時,不消耗任何電流。 ADC10模擬多路器ADC10只有一個內(nèi)核,當(dāng)對多個模擬信號進(jìn)行采樣并進(jìn)行A/D轉(zhuǎn)換時,需要用到多路選擇器分時接通每一個模擬信號,完成一次采樣和轉(zhuǎn)換。ADC10配置有8路外部通道和4路內(nèi)部通道,通過A0A7實現(xiàn)外部8路模擬信號輸入,4路內(nèi)部通道可以將VeREF+、VREF-/VeREF-、(AVc

4、c-AVss)/2以及片內(nèi)溫度傳感器的輸出作為待轉(zhuǎn)換模擬輸入信號。將VeREF+、VREF-/VeREF-、(AVcc-AVss)/2以及片內(nèi)溫度傳感器的輸出作為ADC10的輸入信號,可以用于監(jiān)控有關(guān)ADC10的自檢、校驗和診斷功能以及芯片內(nèi)的溫度。 ADC10外部輸入Ax,VREF+和VREF-共用I/O端口,這些數(shù)字CMOS門電路在模擬信號通過時易產(chǎn)生寄生電流,禁止端口管腳的緩沖功能可以減少寄生電路并降低整體能耗。關(guān)閉這些I/O的輸入輸出寄存器可以使用控制位ADC10AEx。 參考電壓發(fā)生器ADC10模塊內(nèi)部有兩個可選擇的參考電壓,設(shè)置REFON=1時,內(nèi)部參考電壓可用。控制位REF2_5

5、V=1,內(nèi)部參考電壓是2.5V;REF2_5V=0,參考電壓1.5V。內(nèi)部參考電壓既可用在模塊內(nèi)部(REFOUT=0),也可以在器件具備管腳VREF+和VREF-的前提下,通過管腳VREF+輸出(REFOUT=1)。外部參考電壓可以分別通過管腳A4和A3給VR+和VR-使用。當(dāng)使用外部參考電壓或使用Vcc作為參考電壓時,內(nèi)部參考電壓可以關(guān)閉以節(jié)省能耗。外部正參考電壓VeREF+可以通過控制位SREF0=1、SREF1=1來進(jìn)行緩存設(shè)置,這樣在使用外部參考電壓時具有大的內(nèi)阻,從而降低了電流消耗。當(dāng)REFBURST=1時增加的電流消耗僅限于采樣和轉(zhuǎn)換過程。另外用在ADC12上外部儲能電容在ADC1

6、0上不再需要。ADC10內(nèi)部參考電壓發(fā)生器的設(shè)計上考慮了低功耗應(yīng)用,在使用中可以參考用戶說明的設(shè)置,將不使用的部分關(guān)閉掉以最大限度地節(jié)省能耗。 采樣與轉(zhuǎn)換時序采樣輸入信號SHI的上升沿觸發(fā)一次模/數(shù)轉(zhuǎn)換。控制位SHSx來設(shè)定SHI的源,這些源包括:ADC10SC位Timer_A輸出單元1Timer_A輸出單元0Timer_A輸出單元2SHI信號源的極性可以通過ISSH位的設(shè)置而翻轉(zhuǎn)??刂莆籗HTx的設(shè)定選擇采樣時間tsample分別為4、8、16、64個ADC10CLK周期。采樣定時器在設(shè)定采樣時間后置位SAMPCON,并與ADC10CLK同步,所以采樣時間應(yīng)該是tsample與tsync之和

7、。當(dāng)SAMPCON由高變低時觸發(fā)模/數(shù)轉(zhuǎn)換開始,模/數(shù)轉(zhuǎn)換需要13個ADC10CLK周期。 ADC10采樣時序 ADC10結(jié)構(gòu)框圖 二、二、ADC10轉(zhuǎn)換模式轉(zhuǎn)換模式ADC10有四種轉(zhuǎn)換模式,控制位CONSEQx設(shè)定不同工作模式,如下表示。 CONSEQx模式操作描述00單通道單次轉(zhuǎn)換一個模擬信號通道,只轉(zhuǎn)換一次01序列通道單次轉(zhuǎn)換多個模擬信號通道,每個通道轉(zhuǎn)換一次10單通道重復(fù)轉(zhuǎn)換一個模擬信號通道,重復(fù)模/數(shù)轉(zhuǎn)換11序列通道重復(fù)轉(zhuǎn)換多個模擬信號通道,順次重復(fù)模/數(shù)轉(zhuǎn)換 單通道單次轉(zhuǎn)換INCHx選擇單通道并采樣和轉(zhuǎn)換一次。模/數(shù)轉(zhuǎn)換結(jié)果寫到ADC10MEM中。如下圖示是單通道單次模式的流程圖。

8、當(dāng)ADC10SC觸發(fā)模/數(shù)轉(zhuǎn)換時,控制位ADC10SC可以成功觸發(fā)一次模/數(shù)轉(zhuǎn)換。當(dāng)使用其它觸發(fā)源時,ENC必須在每次模/數(shù)轉(zhuǎn)換之間進(jìn)行狀態(tài)切換。ADC10單通道單次轉(zhuǎn)換模式狀態(tài)圖 序列通道單次轉(zhuǎn)換多個通道順次被采樣和轉(zhuǎn)換一次。序列開始于選擇位INCHx并遞減到A0通道。每次模/數(shù)轉(zhuǎn)換的結(jié)果被寫入ADC10MEM中,當(dāng)A0通道轉(zhuǎn)換完成后停止工作。如下圖示是序列通道單次轉(zhuǎn)換流程圖。當(dāng)ADC10SC觸發(fā)該序列模/數(shù)轉(zhuǎn)換開始時,不需要ENC狀態(tài)切換;當(dāng)其它觸發(fā)源用于觸發(fā)序列轉(zhuǎn)換開始時,ENC必須在每一個序列之間切換狀態(tài)。 ADC10序列通道單次轉(zhuǎn)換模式狀態(tài)圖 單通道重復(fù)轉(zhuǎn)換由INCHx選定輸入通道后

9、,采樣和模/數(shù)轉(zhuǎn)換連續(xù)重復(fù)進(jìn)行。每一次ADC轉(zhuǎn)換結(jié)果被寫入ADC10MEM中。如下圖示是單通道重復(fù)轉(zhuǎn)換流程圖。 ADC10單通道重復(fù)轉(zhuǎn)換模式狀態(tài)圖 序列通道重復(fù)轉(zhuǎn)換多個模擬通道被順次采樣和轉(zhuǎn)換后重復(fù)前面的過程。通道序列從INCHx開始遞減到通道A0。每一個ADC轉(zhuǎn)換結(jié)果被寫入ADC10MEM中。序列在通道A0完成轉(zhuǎn)換后,有觸發(fā)信號重新下一輪序列轉(zhuǎn)換開始。此模式的轉(zhuǎn)換流程圖如下所示。ADC10序列通道重復(fù)轉(zhuǎn)換模式狀態(tài)圖 使用控制位MSC在多次重復(fù)采樣/轉(zhuǎn)換時,可以使用控制位MSC將轉(zhuǎn)換過程盡可能快地自動連續(xù)起來。具體設(shè)置如下表所示。有效條件MSC值具體操作內(nèi)容CONSEQx00每次轉(zhuǎn)換需要SHI

10、信號的上升沿觸發(fā)采樣定時器1僅首次轉(zhuǎn)換由SHI信號的上升沿觸發(fā)采樣定時器,而后采樣轉(zhuǎn)換將在前一次轉(zhuǎn)換完成后立即進(jìn)行 停止ADC10的方法如何停止ADC10取決于在哪種轉(zhuǎn)換模式下,以下是推薦使用的方法,用來停止單次轉(zhuǎn)換和序列轉(zhuǎn)換: 在單通道單次轉(zhuǎn)換模式下,復(fù)位ENC能夠立刻停止模/數(shù)轉(zhuǎn)換,但是結(jié)果是不可信的。若要獲得正確的轉(zhuǎn)換結(jié)果,可以查詢ADC10BUSY位,直到該位復(fù)位后再清除ENC,這樣得到的轉(zhuǎn)換結(jié)果是可信的。在單通道重復(fù)轉(zhuǎn)換模式下,復(fù)位ENC將在當(dāng)前模/數(shù)轉(zhuǎn)換完成后ADC10停止工作。在一個序列或者重復(fù)序列工作模式下,復(fù)位ENC將使得ADC10在當(dāng)前序列完成后停止工作。任何模式下,如果設(shè)

11、定CONSEQx=0并復(fù)位ENC,則ADC10模塊停止工作。得到轉(zhuǎn)換數(shù)據(jù)是不可信的。三、三、ADC10數(shù)據(jù)傳輸控制器數(shù)據(jù)傳輸控制器ADC10模塊有一個數(shù)據(jù)傳輸控制器(DTC),DTC自動傳輸模/數(shù)轉(zhuǎn)換結(jié)果從ADC10MEM到片上其他內(nèi)存單元。通過設(shè)定ADC10DTC1寄存器為非0值便使能了DTC。當(dāng)DTC工作時,每次ADC10模塊完成一次模/數(shù)轉(zhuǎn)換并將結(jié)果寫入ADC10MEM中,就將觸發(fā)一次數(shù)據(jù)傳輸。在傳輸預(yù)定義數(shù)量數(shù)據(jù)完成之中,不允許有其他軟件干預(yù)。每一次DTC傳輸需要一個CPU周期(MCLK)。在數(shù)據(jù)傳送期間,為避免任何總線干擾,CPU除執(zhí)行傳輸必須的那個機器周期外則時鐘處于停止?fàn)顟B(tài)。在A

12、DC10模塊處于工作狀態(tài)時,無法初始化DTC傳輸。所以在配置DTC時需要保證沒有處于模/數(shù)轉(zhuǎn)換中或者隊列轉(zhuǎn)換中。; ADC10 activity testBIC.W #ENC,&ADC10CTL0 ;busy_test BIT.W #BUSY,&ADC10CTL1 ;JNZ busy_test;MOV.W #xxx,&ADC10SA ;SafeMOV.B #xx,&ADC10DTC1 ; continue setupC語言表達(dá): ADC10CTL0 &= ENC; while (ADC10CTL1 & BUSY); / Wait if ADC10 core is active1、單塊傳輸模式

13、如果ADC10TB 被復(fù)位,那么單塊傳輸模式將會被選用。對于一個數(shù)據(jù)塊,ADC10DTC1 中的n 值定義了傳輸?shù)目倲?shù)量??梢岳?6 位寄存器ADC10SA 在MSP430 任何地址范圍內(nèi)定義塊的起始地址。塊結(jié)束地址為ADC10SA+2n-2。 內(nèi)部地址指針最初為ADC10SA,內(nèi)部傳輸計數(shù)器等于n。內(nèi)部指針和計數(shù)器對軟件是不可見的。DTC 傳輸ADC10MEM 的字值到地址指針ADC10SA。每次DTC傳輸后,內(nèi)部地址指針增加2 同時內(nèi)部傳遞計數(shù)器減1。 DTC 隨著ADC10MEM 的每次裝載連續(xù)傳遞,直到內(nèi)部傳遞計數(shù)器變?yōu)?。直到一個值被寫入ADC10SA,DTC 才會停止其他的數(shù)據(jù)傳

14、遞。當(dāng)在一個數(shù)據(jù)塊模式中使用DTC 時,ADC10IFG 標(biāo)志僅會在一個完整的塊被傳輸后才會被設(shè)置。2、雙塊傳輸模式如果ADC10TB 被設(shè)置,那么雙塊傳輸模式將會被選用。對于一個塊,ADC10DTC1 中的n 值定義了傳輸?shù)臄?shù)量。可以利用16 位寄存器ADC10SA 在MSP430 任何地址范圍內(nèi)定義第一個塊的地址范圍。第一個塊結(jié)束地址為ADC10SA+2n-2。第二個塊的地址范圍被定義為SA+2n 到SA+4n-2。內(nèi)部地址指針最初為ADC10SA,內(nèi)部傳遞計數(shù)器等于n。內(nèi)部指針和計數(shù)器對軟件是不可見的。DTC 傳遞ADC10MEM 的字值到地址指針ADC10SA。每次DTC傳遞后,內(nèi)部地

15、址指針增加2 同時內(nèi)部傳遞計數(shù)器減1。 DTC 隨著ADC10MEM 的每次裝載連續(xù)傳遞,直到內(nèi)部傳遞計數(shù)器變?yōu)?。在這時,塊一已裝滿,ADC10IFG 標(biāo)志ADC10B1 位都被設(shè)置用戶可以通過測試ADC10B1 位來判斷塊一是否已裝滿。DTC 繼續(xù)傳遞塊2。內(nèi)部傳遞計數(shù)器自動重裝n 在下次裝載ADC10MEM 時,DTC 開始傳遞轉(zhuǎn)換結(jié)果到塊2。完成n 次傳遞后,塊2 被裝滿。ADC10IFG 標(biāo)志被設(shè)置和ADC10B1 位被清除。用戶軟件可以通過測試ADC10B1 位是否清除來判斷塊2是否裝滿。3、連續(xù)傳輸 如果ADC10CT 被設(shè)置,那么連續(xù)傳輸模式將會被選用。當(dāng)塊一(一個塊傳輸模式)

16、或塊二(兩個塊模式)完成傳遞后,DTC 不停止。內(nèi)部地址指針和數(shù)據(jù)傳遞計數(shù)器分別被設(shè)置等于ADC10SA 和n 時。塊一開始后,進(jìn)行連續(xù)傳遞。如果ADC10CT 位被復(fù)位,在當(dāng)前的數(shù)據(jù)完整的傳輸進(jìn)塊一(一個塊模式)或塊二(兩個塊模式)后,DTC 傳遞停止。4、DTC 傳輸周期時間傳輸周期時間 對于每個ADC10MEM 傳遞,DTC 需要一或二個MCLK 周期來實現(xiàn)同步,一個周期用于實際的傳遞(CPU暫停時)和一個周期的等待時間。因為DTC 使用MCLK,DTC 的周期時間取決于MSP430 的工作模式和時鐘系統(tǒng)設(shè)置。 如果MCLK 處在活動狀態(tài),但CPU 停止時,DTC 使用MCLK 時鐘源進(jìn)

17、行每次的傳遞,無需重新使能CPU 。如果MCLK 時鐘源關(guān)閉,只有在一次傳遞過程中,DTC 才暫時重新起始來自DCOCLK 的MCLK。CPU 仍然關(guān)閉,在DTC 傳遞后,MCLK 又重新關(guān)閉。四、四、ADC10中斷系統(tǒng)中斷系統(tǒng)ADC10模塊有一個中斷向量,中斷系統(tǒng)如上圖示。當(dāng)DTC不使用時(ADC10DTC1=0),每次模/數(shù)轉(zhuǎn)換完成將結(jié)果寫入ADC10MEM時ADC10IFG被置位;當(dāng)DTC使用時,每次數(shù)據(jù)傳輸完畢或者內(nèi)部傳輸計數(shù)器為0時,ADC10IFG被置位。在ADC10IE和GIE都使能的前提下,ADC10IFG將生成中斷請求。在中斷請求被響應(yīng)后中斷標(biāo)志位ADC10IFG自動復(fù)位,或

18、者可以軟件清除中斷標(biāo)志位。 五、五、ADC10程序?qū)嵗绦驅(qū)嵗?include msp430g2553.hvoid main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; / ADC10ON, /interrupt enabled ADC10CTL1 = INCH_1; / input A1 ADC10AE0 |= 0 x02; / PA.1 ADC option select P1DIR |= 0 x01; / Set P1.0 to output directio

19、n 例一例一 for (;) ADC10CTL0 |= ENC + ADC10SC; / Sampling and conversion start _bis_SR_register(CPUOFF + GIE); / LPM0, ADC10_ISR will force exit if (ADC10MEM 0 x1FF) P1OUT &= 0 x01; / Clear P1.0 LED off else P1OUT |= 0 x01; / Set P1.0 LED on / ADC10 interrupt service routine#pragma vector=ADC10_VECTOR_i

20、nterrupt void ADC10_ISR(void) _bic_SR_register_on_exit(CPUOFF); / Clear CPUOFF bit from 0(SR)本例中采用A1通道的單次采樣,默認(rèn)參考電壓AVcc。使用軟件設(shè)置ADC10SC啟動采樣和轉(zhuǎn)換,轉(zhuǎn)換完成后ADC10SC自動清除復(fù)位。通過設(shè)定ADC10SHTx控制采樣和轉(zhuǎn)換時間是16ADC10CLKs。在主程序循環(huán)中,使用MSP430的低功耗模式LPM0,等待模/數(shù)轉(zhuǎn)換完成,觸發(fā)ADC10中斷,在中斷中退出LPM0,返回主程序判斷A1通道的采樣值,依據(jù)采樣值的大小設(shè)定P1.0。 #include msp430g

21、2553.hvoid main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT ADC10CTL1 = ADC10DF + INCH_1; / Conversion code singed format, input A1 ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; / ADC10ON, interrupt /enabled ADC10AE0 |= 0 x02; / P1.0 ADC option select P1DIR |= 0 x01; / Set P1.0 to output direction for

22、(;) ADC10CTL0 |= ENC + ADC10SC; / Sampling and conversion start _bis_SR_register(CPUOFF + GIE); / LPM0, ADC10_ISR will force exit if (int)ADC10MEM 0) P1OUT &= 0 x01; / Clear P1.0 LED off else P1OUT |= 0 x01; / Set P1.0 LED on / ADC10 interrupt service routine#pragma vector=ADC10_VECTOR_interrupt voi

23、d ADC10_ISR (void) _bic_SR_register_on_exit(CPUOFF); / Clear CPUOFF bit from 0(SR)例二例二這個例子中與上例不同的是采用的是帶符號數(shù)表征ADC10的轉(zhuǎn)換值。 #include msp430g2553.hvoid main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT ADC10CTL1 = INCH_11; / AVcc/2 ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON; P1DIR |= 0 x01; / Set P1.

24、0 to output direction for (;) ADC10CTL0 |= ENC + ADC10SC; / Sampling and conversion start while (ADC10CTL1 & ADC10BUSY); / ADC10BUSY? if (ADC10MEM 0.65? P1OUT |= 0 x01; / Set P1.0 LED on else P1OUT &= 0 x01; / Clear P1.0 LED off 例三例三本例中使用A11通道,測量的是AVcc/2,參考電平選擇內(nèi)部參考電平VREF的1.5V。從而將該測量成為測定電池電壓的應(yīng)用。程序中使用了查詢ADC10BUSY,以判斷模/數(shù)轉(zhuǎn)換是否完成。 #include msp430g2553.hvoid main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT ADC10CTL1 = CONSEQ_2 + INCH_1; / Repeat single channel, A1 ADC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論