模擬數字轉換器的使用_第1頁
模擬數字轉換器的使用_第2頁
模擬數字轉換器的使用_第3頁
模擬數字轉換器的使用_第4頁
模擬數字轉換器的使用_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第9章 模擬/數字轉換器的使用 模擬信號采集與回放電路的設計目標通過本章的學習,應掌握以下知識 斜坡型(計數型)模擬/數字轉換器的工作原理 逐次逼近型模擬/數字轉換器(Successive-Approximation ADC,SAC)的工作原理 MSP430G2xx芯片內部的模擬/數字轉換模塊(ADC10) 模擬/數字轉換中的采樣保持過程 實際模擬/數字轉換關系的非理想 MSP430F2xx芯片內部的模擬/數字轉換模塊(ADC12)引言模擬/數字轉換器是對模擬信號進行數字化處理所需要的另外一種接口。使用模擬/數字轉換器能夠將幅度連續、時間連續的模擬信號,轉換為幅度離散、時間離散的數字信號,建立

2、起模擬信號數字化處理的基礎。相對基于運算放大器實現數字/模擬轉換器的工作原理,模擬/數字轉換器的工作原理比較復雜。雖然微控制器芯片對其外圍模塊的控制都是通過訪問相關寄存器來實現,但是了解具體電路的工作過程將能夠更加清晰地理解不同的寄存器配置條件下的工作特點,更好地使用這些外圍模塊。MSP430系列微控制器中包含模擬/數字轉換模塊具有多種類型,而且具有不同的技術指標。本章分別介紹包含在MSP430G2231芯片內部,具有10位分辨率的模擬/數字轉換模塊(ADC10);以及包含在MSP430F2619芯片內部,具有12位分辨率的模擬/數字轉換模塊(ADC12)。如果使用MSP430F2619微控制

3、器芯片,使用12位分辨率模擬/數字轉換模塊(ADC12)將能夠把信號產生器輸出的正弦信號轉換為對應的數字信號,使用上一章學習的數字/模擬轉換模塊(DAC12)將能夠把數字信號轉換為模擬信號。通過示波器觀察數字/模擬轉換模塊(DAC12)輸出的信號波形,這時將可以發現恢復的正弦信號波形是由許多小臺階所組成。提高信號產生器輸出正弦信號的頻率,將可以發現波形失真加大,直到波形變得雜亂無章;繼續提高信號產生器輸出正弦信號的頻率,將會發現在一些頻率點上,示波器又將出現一個完整的正弦信號波形。9.1 模擬/數字轉換器的工作原理MSP430系列微控制器中的模擬/數字轉換器涉及多種類型、且具有不同的技術指標。

4、例如MSP430G2231芯片具有10位分辨率的模擬/數字轉換模塊(ADC10),MSP430F2619芯片具有12位分辨率的模擬/數字轉換模塊(ADC12),有的芯片還具有24位分辨率的模擬/數字轉換模塊。本節介紹模擬/數字轉換器的基本工作過程,以便了解決定其性能的因素。圖9.1為MSP430G2231芯片和MSP430F2619芯片中的模擬/數字轉換模塊的工作原理圖。這種類型的模擬/數字轉換器把數字/模擬轉換器(DAC)作為其電路的組成部分。圖9.1 模擬/數字轉換器的工作原理圖完成模擬/數字轉換過程需要一個“啟動信號”來觸發轉換電路進行初始化。這個初始化使圖中的“計數器”輸出的“數字量”

5、為全零,使得圖中的“DAC”輸出模擬電壓VAX為0V,這樣模擬電壓VAX將小于輸入模擬電壓VA,因此圖中“比較器”將輸出高電平。當“比較器”輸出高電平,控制電路將在“時鐘信號”的驅動下不斷修正“計數器”輸出的“數字量”。最簡單的“數字量”修正方式為每來一個時鐘脈沖其內容加1。“計數器”輸出的“數字量”不斷進行地加1操作,使得模擬電壓VAX不斷地增加。模擬電壓VAX小于輸入模擬電壓VA時,“比較器”將輸出高電平;模擬電壓VAX大于輸入模擬電壓VA時,“比較器”將輸出低電平。一旦“比較器”輸出為低電平, “計數器”輸出的“數字量”將停止變化,同時控制電路輸出“轉換結束信號”。這時就可以讀取由“計數

6、器”輸出的“模擬/數字轉換結果”。如果“計數器”輸出 “數字量”的變化方式為每來一個時鐘脈沖其內容加1,直到DAC輸出的模擬電壓VAX大于輸入模擬電壓VA,這樣模擬電壓VAX的波形形狀為斜波,因此稱此類型模擬/數字轉換器為斜坡型模擬/數字轉換器,也稱為計數型模擬/數字轉換器。輸入模擬電壓VA的比較基準VAX是一個準模擬電壓,因為VAX是數字/模擬轉換器的輸出電壓。輸入模擬電壓VA能夠在從0V到滿量程之間取無數多個數值,數字/模擬轉換器的輸出電壓VAX只能取有限數量的離散值,這就意味著小范圍變化的輸入模擬電壓VA的轉換結果可能是相同的。內部“DAC”的分辨率決定了這種模擬/數字轉換器的分辨率。斜

7、坡型模擬/數字轉換器轉換時間不確定,輸入模擬電壓VA越大,完成轉換所需要的時間越長。如果輸入模擬電壓VA剛好低于滿刻度電壓將會出現最大轉換時間,即“計數器”輸出 “數字量”到最后一步才能結束轉換過程。對于一個N位分辨率的斜坡型模擬/數字轉換器,最大轉換時間可以由下式計算。tC(max)=(2N - 1)時鐘周期(9-1)對于一個10位分辨率的模擬/數字轉換器,如果時鐘信號的周期為1us,這時tC(max)=(210 - 1) 1 us = 1023 us斜坡型模擬/數字轉換器工作速度低,但是利用它非常容易說明模擬/數字轉換器的工作原理。MSP430G2231芯片和MSP430F2619芯片內部

8、采用逐次逼近型模擬/數字轉換器(Successive-Approximation ADC,SAC)來提高轉換速度。它的“計數器”輸出 “數字量”的修正采用逐位修改。圖9.2給出一個4位這種類型模擬/數字轉換器的原理圖和時序圖。圖9.2 逐次逼近型模擬/數字轉換器的工作原理圖在圖9.2中,設DAC的步長為1V,這樣輸入4位數據的權值分別為8V、4V、2V和1V;再假設輸入待轉換的模擬電壓VA=10.4V。在t0時刻轉換過程開始,寄存器輸出清零,即Q3 =Q2=Q1=Q0=0,表示為Q=0000。這使得VAX=0V,由于VAX VA,因此比較器輸出高電平。在t2時刻,控制信號使得寄存器的Q3置位,

9、這時Q=1000。這使得VAX=8V,由于VAX VA,這時比較器輸出將變為低電平。由于比較器輸出為低電平,在t5時刻,控制信號使得寄存器的Q2清零,這時Q=1000,這使得VAX=8V。在t6時刻,控制信號使得寄存器的Q1置位,這時Q=1010。這使得VAX=10V,由于VAX VA,因此比較器輸出為低電平。由于比較器輸出為低電平,在t9時刻,控制信號使得寄存器的Q0清零,這時Q=1010。這使得VAX=10V。到此時,轉換結束,轉換結果為1010。逐次逼近型模擬/數字轉換器的控制電路逐個將寄存器的每1位置位,并判斷該位是否應該置位。這樣它比起斜坡型模擬/數字轉換器每次僅加1的過程需要的時間

10、小得多,而且轉換時間固定,但是逐次逼近型模擬/數字轉換器內部控制電路要復雜得多。模擬/數字轉換器還有其它的類型。例如并行比較型在1個時鐘周期就可以完成轉換,但是電路更復雜;積分型的精度高,且抗干擾能力強,但是轉換速度慢; /調制型電路復雜,但是可以獲得高的精度,一些MSP430x2xx芯片包含這種類型的模擬/數字轉換器,在數據手冊中被稱為SD16,或者SD24,分別具有16,或者24位分辨率。9.2 模擬/數字轉換模塊(ADC10)9.2.1 模擬/數字轉換模塊(ADC10)MSP430G2231芯片內部包含10位模擬/數字轉換模塊(ADC10)。該模塊的工作原理屬于逐次逼近型模擬/數字轉換器

11、(SAC),具有10位分辨率和200ksps的轉換速率。模擬/數字轉換模塊(ADC10)的組成方框圖如圖9.3所示。圖9.3 模擬/數字轉換模塊(ADC10)的組成方框圖圖9.3所示的方框圖用于說明MSP430G2xx系列芯片的模擬/數字轉換模塊(ADC10)的工作,該系列不同型號的芯片可能會存在著一些差異。通過多個通道,多個準備轉換的模擬電壓能夠進入模擬/數字轉換模塊(ADC10)。圖中的模擬電壓輸入通道A0A7、A12A15分別可以與芯片的管腳相連接,模擬輸入電壓還包括芯片電源AVCC以及芯片內部溫度傳感器的輸出電壓。對于MSP430G2231芯片, A0A7分別對應芯片管腳P1.0P1.

12、7,A12A15沒有對應的芯片管腳。所有的輸入模擬電壓通過多路選擇開關共用一個模擬/數字轉換器,因此1次只能完成1路模擬電壓的轉換,不過具有多個模擬電壓輸入管腳可以為電路板的設計提供方便。在信號“INCHx”的控制下,多路選擇開關選擇1個通道的模擬電壓進行采樣。信號“CONSEQx”能夠實現對所有模擬輸入電壓的進一步的控制,控制內容包括完成一個通道輸入電壓的一次轉換、按照通道的順序完成數個通道輸入電壓的一次轉換、一個通道輸入電壓的重復轉換以及按照通道的順序完成數個通道輸入電壓的重復轉換。通過多路選擇開關的模擬電壓將進入采樣-保持電路“Sample and Hold”,這里將幅度連續、時間連續的

13、模擬電壓轉換為幅度連續、時間離散的信號。采樣-保持電路“Sample and Hold”和模擬/數字轉換器“10-bit SAR”共用一個時鐘信號。時鐘信號源可以是模擬/數字轉換模塊(ADC10)內部時鐘信號源“ADC10OSC”,也可以是MSP430芯片的系統時鐘信號ACLK、MCLK或者SMCLK。4種時鐘信號源的選擇通過信號“ADC10SSELx”實現。內部時鐘信號源ADC10OSC屬于RC振蕩器,工作頻率約6MHz,具體工作頻率參考芯片的技術手冊,也可以通過輸出管腳ADC10CLK進行測量。時鐘信號還能夠利用分頻電路“Divider /1/8”,在信號“ADC10DIVx”控制下,實現

14、直接通過,或者從2到8的分頻。采樣觸發信號為圖中信號“SHI”的上升邊沿。觸發源可以是ADC10控制寄存器0(ADC10CTL0)的位ADC10SC、定時器A(TimerA)的捕捉/比較模塊1(CCR1)的輸出、定時器A(TimerA)的捕捉/比較模塊0(CCR0)的輸出,或者定時器A(TimerA)的捕捉/比較模塊2(CCR2)的輸出。信號“SHSx”完成采樣觸發信號的選擇。信號“ENC”使能選擇的采樣觸發信號,即使能模擬/數字轉換模塊(ADC10)的工作。信號“ISSH”能夠實現采樣觸發信號的上升沿觸發,或者下降沿觸發。信號“SHI”的上升邊沿觸發采樣計數器“Sample Timer”的計

15、數工作。在信號“ADC10SHTx”的控制下,這個計數器實現對時鐘ADC10CLK,范圍為4、8、16或者64的計數過程。在計數過程中,信號“SAMPCON”保持高電平;完成計數后,該信號為低電平。信號“SAMPCON”處于高電平狀態,采樣-保持電路“Sample and Hold”對輸入的模擬電壓進行采樣;信號“SAMPCON”處于低電平狀態,采樣-保持電路“Sample and Hold”維持采樣電壓的數值。采樣-保持過程的等效電路如圖9.4所示。圖9.4 采樣-保持過程的等效電路圖圖中的VS和RS為準備進行模擬/數字轉換的模擬信號等效電路,Vpin為施加到MSP430芯片管腳的模擬電壓值

16、。Rmux為包括多路開關導通電阻在內的芯片內部電阻,Csample為采樣電容。采樣時,“采樣-保持開關”置“采樣”位置,模擬電壓向采樣電容Csample充電;采樣結束以后,“采樣-保持開關”置“保持”位置,由于運算放大器具有非常高的輸入電阻,因此采樣電容Csample上的電壓在后面的工作期間可以維持不變。即使不考慮信號源內阻RS的影響,芯片內部電阻Rmux(數據手冊給出它的最大值為2k),采樣電容Csample(數據手冊給出它的最大值為27pF)組成的RC電路中電容的充電需要一定的時間。信號“SAMPCON”持續時間的可控制為用戶在轉換結果的精確與轉換速率之間提供了選擇的可能。采樣過程結束以后

17、,即信號“SAMPCON”變為低電平,模擬/數字轉換器“10-bit SAR”的轉換過程將啟動。這個過程需要13個時鐘ADC10CLK周期的固定時間。時鐘ADC10CLK存在一個最高頻率,這需要參考芯片的數據手冊。“Divider /1/8”分頻電路可以用來降低時鐘源的輸出頻率。模擬/數字轉換器“10-bit SAR”屬于逐次逼近型模擬/數字轉換器(SAC),它的工作原理圖如圖9.2所示。轉換獲得的數字量來源于待轉換的模擬電壓與一個數字/模擬轉換器輸出電壓進行比較的結果,模擬/數字轉換器“10-bit SAR”上的連接端“VR+”和“VR-”為這個數字/模擬轉換器的參考電壓輸入端。參考電壓接線

18、端“VR-”可以在模擬地“AVSS”與參考電源地“VREF- / VeREF-”之間選擇。參考電壓接線端“VR+”可以在模擬電源“AVCC”、內部參考電源“VREF+”、外部參考電源“VeREF +”以及經過緩沖電路以后的外部參考電源之間進行選擇。信號“SREFx”實現上述各種選擇。模擬/數字轉換模塊(ADC10)內部包含參考電壓源“1.5V or 2.5V Reference”。參考電壓源可以提供2種參考電壓,1.5V或者2.5V,輸出電壓的選擇通過信號“2_5V”實現。信號“REFON”用來控制這個內部參考電壓源工作與否,在不使用這個參考電壓源的情況下,停止它的工作可以降低芯片的功耗。信號

19、“REFBURST”能夠使得參考源僅在模擬/數字轉換過程中激活。這個參考電壓也可以通過管腳送出芯片,供其它器件使用。模擬/數字轉換器“10-bit SAR”將模擬電壓轉換為數字量,輸出具有2種格式,普通2進制格式,或者2進制補碼格式。式(9-2)為采用普通2進制格式時的輸出數字量與輸入模擬電壓的關系式。NADC = 1023(VIN - VR-)/(VR+ - VR-)(9-2)數字量的滿刻度值為0x3ff。信號“ADC10ON”用來打開,或者停止模擬/數字轉換器“10-bit SAR”的工作。信號“BUSY”用來顯示模擬/數字轉換的進行過程是否結束。模擬/數字轉換結果被存儲在寄存器“ADC1

20、0MEM”。模塊“Data Transfer Controller”用來自動地將模擬/數字轉換結果存儲在MSP430芯片的存儲器之中。當完成相關的設置以后,轉換結果的存儲不需要CPU的干預,這樣可以提高數據傳輸速率,間接地加快了對模擬電壓的采樣速率。模擬/數字轉換模塊也提供中斷能力。當完成模擬/數字轉換過程,相應的中斷標志將置位。即使不使用這個中斷功用,利用這個標志也可以判斷數字/模擬轉換過程是否完成。MSP430系列微控制器的開發軟件中,模擬/數字轉換模塊的中斷矢量名稱為“ADC10_VECTOR”。9.2.2 模擬/數字轉換模塊(ADC10)的寄存器模擬/數字轉換模塊(ADC10)的寄存器

21、分為3類。第一類為控制模擬/數字轉換工作的寄存器,包括ADC10輸入使能寄存器0和1,ADC10AE0和ADC10AE1,ADC10控制寄存器0和1,ADC10CTL0和ADC10CTL1;第二類為存儲模擬/數字轉換結果的寄存器,ADC10MEM;第三類涉及模擬/數字轉換結果的傳輸,包括ADC10數據傳輸控制寄存器0和1,ADC10DTC0和ADC10DTC1,數據傳輸起始地址寄存器,ADC10SA。本小節只討論模擬/數字轉換模塊(ADC10)的寄存器前兩類中每一位的功能,這些功能已經足夠滿足通常的需要。第三類寄存器涉及如何將模擬/數字轉換的結果直接存儲到數據存儲器,不需要通過CPU以加快數據

22、的采樣率。作為一本入門級書籍,為了突出重點,同時減少篇幅,這里不涉及這部分內容。有興趣的讀者可以參考TI公司提供的“MSP430x2xx Family Users Guide”的相關內容。 ADC10輸入使能寄存器0(ADC10AE0)位70位名稱ADC10AE0x操作方式rw復位值00000000ADC10AE0x:Bit7Bit0,模擬輸入管腳使能位。0 不使能1 使能BIT0對應模擬電壓輸入管腳A0,BIT1對應模擬電壓輸入管腳A1,其它依次類推。 ADC10輸入使能寄存器1(ADC10AE1)位7430位名稱ADC10AE1xReserved操作方式rwrw復位值00000000ADC

23、10AE1x:Bit7Bit4,模擬輸入管腳使能位。0 不使能1 使能BIT4對應模擬電壓輸入管腳A12,BIT5對應模擬電壓輸入管腳A13,BIT6對應模擬電壓輸入管腳A14,BIT7對應模擬電壓輸入管腳A15。Reserved:Bit3Bit0,當前沒有使用,保留。MSP430G2231芯片由于沒有對應的管腳,因此不存在這個寄存器(ADC10AE1)。 ADC10控制寄存器0(ADC10CTL0)位151312,111098位名稱SREFxADC10SHTxADC10SRREFOUTREFBURST操作方式rwrwrwrwrw復位值00000000位76543210位名稱MSCREF2_5

24、VREFONADC10ONADC10IEADC10IFGENCADC10SC操作方式rwrwrwrwrwrwrwrw復位值00000000注意:ADC10控制寄存器0(ADC10CTL0)中有陰影位的調整必須在該寄存器的位ENC狀態為0的情況下才能進行。SREFx:參考電源選擇控制位Bit15Bit14Bit13SREF2SREF1SREF0 0 0 0VR+ = VCCVR- = VSS 0 0 1VR+ = VREF+VR- = VSS0 1 0VR+ = VeREF+VR- = VSS0 1 1VR+ = 緩沖VeREF+VR- = VSS1 0 0VR+ = VCCVR- = VREF

25、- / VeREF-1 0 1VR+ = VREF+VR- = VREF- / VeREF-1 1 0VR+ = VeREF+VR- = VREF- / VeREF-1 1 1VR+ = 緩沖VeREF+VR- = VREF- / VeREF-ADC10SHx:采樣-保持時間選擇控制位Bit14Bit13ADC10SHT 1ADC10SHT0 0 04個ADC10CLK持續時間 0 18個ADC10CLK持續時間 1 016個ADC10CLK持續時間 1 164個ADC10CLK持續時間ADC10SR:采樣速率選擇控制位0最高200ksps1最高50kspsREFOUT:參考源輸出控制位0關閉

26、1打開REFBURST:參考源間斷輸出控制位0參考源緩沖電路連續工作1參考源緩沖電路僅在模擬/數字轉換的過程時工作MSC:進行多次模擬/數字轉換控制位0每次模擬/數字轉換需要觸發1僅第1次模擬/數字轉換需要觸發該位的功能僅在順序通道,或者重復模擬/數字轉換模式下才有效。REF2_5V:內部參考源輸出電壓選擇控制位01.5V12.5VREFON:參考源工作控制位0關閉1打開ADC10ON:模擬/數字轉換模塊(ADC10)工作控制位0關閉1打開ADC10IE:模擬/數字轉換模塊(ADC10)中斷使能控制位0不使能1使能ADC10IFG:模擬/數字轉換模塊(ADC10)中斷標志0無中斷申請1有中斷申

27、請當完成模擬/數字轉換模塊(ADC10)中斷服務程序,該位可以自動清零,也可以由用戶軟件清零。ENC:模擬/數字轉換模塊(ADC10)轉換使能控制位0不使能1使能ADC10控制寄存器0(ADC10CTL0)和ADC10控制寄存器1(ADC10CTL1)中有陰影的位的調整必須在位ENC狀態為0的情況下才能進行。ADC10SC:模擬/數字轉換模塊(ADC10)轉換啟動控制位0不啟動1啟動用戶軟件置位該位將啟動模擬/數字轉換模塊(ADC10)的工作。該位可以自動清零,也可以由用戶軟件清零。 ADC10控制寄存器1(ADC10CTL1)位151211,1098位名稱INCHxSHSxADC10DFIS

28、SH操作方式rwrwrwrw復位值00000000位754,32,10位名稱ADC10DIVxADC10SSELxCONSEQxADC10BUSY操作方式rwrwrwr復位值00000000注意:ADC10控制寄存器1(ADC10CTL1)中有陰影位的調整必須在ADC10控制寄存器0(ADC10CTL0)的位ENC狀態為0的情況下才能進行。INCHx:模擬電壓輸入通道選擇控制位Bit15Bit14Bit13Bit12INCH3INCH2INCH1INCH0 0 0 0 0A0 0 0 0 1A10 0 1 0A20 0 1 1A30 1 0 0A40 1 0 1A50 1 1 0A60 1 1

29、 1A71 0 0 0VeREF+ 1 0 0 1VREF- / VeREF-1 0 1 0芯片內部溫度傳感器1 0 1 1(VCC-VSS)/ 21 1 0 0(VCC-VSS)/ 2 或者A121 1 0 1(VCC-VSS)/ 2 或者A131 1 1 0(VCC-VSS)/ 2 或者A141 1 1 1(VCC-VSS)/ 2 或者A15SHSx:采樣-保持電路觸發信號選擇控制位Bit11Bit10SHS1SHS0 0 0ADC10CTL0的位ADC10SC置位 0 1定時器A(TimerA)的捕捉/比較模塊1(CCR1)輸出 1 0定時器A(TimerA)的捕捉/比較模塊0(CCR0

30、)輸出 1 1定時器A(TimerA)的捕捉/比較模塊2(CCR2)輸出ADC10DF:模擬/數據轉換器輸出數據格式控制位0普通2進制數據格式12進制補碼數據格式ISSH:采樣-保持電路觸發信號反相控制位0不反相1反相ADC10DIVx:模擬/數字轉換電路時鐘分頻選擇控制位Bit7Bit6Bit5ADC10DIV2ADC10DIV1ADC10DIV0 0 0 010 0 120 1 030 1 141 0 051 0 161 1 071 1 18ADC10SSELx:模擬/數字轉換電路時鐘信號源選擇控制位Bit4Bit3ADC10SSEL1ADC10SSEL0 0 0ADC10OSC 0 1A

31、CLK 1 0MCLK 1 1SMCLKCONSEQx:轉換順序模式選擇控制位Bit11 Bit10CONSEQ1CONSEQ0 0 0單通道,單次 0 1順序通道,單次 1 0單通道,重復 1 1順序通道,重復ADC10BUSY:模擬/數字轉換模塊(ADC10)忙標志,該位置位表示轉換正在進行中0不工作1正在工作9.3 模擬/數字轉換模塊(ADC10)檢查程序程序示例9.1可以用來檢查模擬/數字轉換模塊(ADC10)的工作情況。這里通過管腳P1.0(A0)引入被轉換的模擬電壓。注意,這個模擬電壓的范圍為0到參考電壓之間。這個模擬電壓可以利用1個具有3個接線端的電位器來產生。電位器的兩個固定接

32、線端將分別與MSP430芯片的電源端和接地端相連接,可變電阻端輸出模擬電壓。電位器的阻值推薦值為10k,使用三用表監視輸入模擬電壓數值。程序示例9.1/ 程序名稱:adc10_examine/ 程序功能:模擬/數字轉換模塊 ADC10 檢測程序/ 使用芯片:MSP430G2231-14 N/ 模擬電壓輸入管腳:P1.0 / A0(Pin2)/ 模擬/數字轉換的結果使用數碼管顯示#include / 包含名稱定義和對應地址或數據的頭函數void delay_1s(void); / 聲明 1s 延遲函數void seg7_1ms(unsigned char seg7_data);/ 聲明驅動 1

33、位數碼管的驅動函數void seg7_3ms(unsigned char seg7_data2, unsigned char seg7_data1, unsigned char seg7_data0);/ 聲明驅動 3 位數碼管的驅動函數const unsigned char decoder_seg718 / 聲明顯示代碼=0xee,0x82,0xdc,0xd6,0xb2,0x76,0x7e,0xc2,0xfe,0xf6,0xde,0x3e,0x6c,0x9e,0x7c,0x78,0x00,0xff;/ 共陰極數碼管顯示代碼void adc10_begin(void); / 聲明 ADC10

34、配置函數void main(void) / 主函數 unsigned int data_adc10; / 聲明模擬 / 數字轉換結果存儲變量 unsigned char data_seg7_2, data_seg7_1, data_seg7_0;/ 聲明每一位數據顯示變量 WDTCTL=WDTPW+WDTHOLD; / 關閉看門狗 P1SEL&=0x3f; / 設置P1.7和P1.6管腳為數字輸入/輸出管腳 P1DIR|=0xc0; / 設置 P1.7 和 P1.6 管腳為輸出管腳 adc10_begin( ); / ADC10 配置 while(1) / 重復執行 ADC10CTL0|=AD

35、C10SC; / ADC 轉換軟件啟動控制位使能 while(ADC10CTL1&0x01)=1); / 等模擬 / 數字轉換結束 data_adc10=ADC10MEM; / 讀取轉換結果 data_seg7_0=data_adc10&0x000f; data_seg7_1=(data_adc10&0x00f0)4; data_seg7_2=(data_adc10&0x0300)8; seg7_3ms(data_seg7_2, data_seg7_1, data_seg7_0); delay_1s ( ); / 延時 void adc10_begin(void) / ADC10 配置函數/

36、配置 ADC10 模塊模擬電壓輸入管腳 P1SEL|=BIT0; / 設置 P1.0 管腳為外圍模塊輸入 / 輸出管腳 P1DIR&=BIT0; / 設置 P1.0 管腳為輸入管腳 / ADC10 模塊相關寄存器配置 ADC10CTL0&=ENC; / 調整 ADC10CTLx,位 ENC 必須清零 ADC10AE0|=BIT0; / 使能 A0 通道轉換 ADC10CTL0|=SREF_1; / 參考電壓選擇:VR+ = VREF+VR- = VSS ADC10CTL0|=ADC10SHT_0; / 采樣-保持時間選擇:4 ADC10CLK ADC10CTL0|=ADC10SR; / 采樣速

37、率選擇:50ksps ADC10CTL0|=REFOUT; / 參考電源輸出打開 ADC10CTL0&=REFBURST; / 參考電源連續工作 ADC10CTL0&=MSC; / 每次轉換都需要觸發 ADC10CTL0|=REF2_5V; / 內部參考電壓選擇:2.5V ADC10CTL0|=REFON; / 內部參考電源打開 ADC10CTL0|=ADC10ON; / ADC10 模塊打開 ADC10CTL0&=ADC10IE; / 不使能 ADC10 模塊中斷 ADC10CTL1|=INCH_0; / 模擬電壓輸入通道選擇:A0 ADC10CTL1|=SHS_0; / 采樣觸發信號選擇:

38、ADC10SC/ADC10CTL0 ADC10CTL1&=ADC10DF; / ADC10 模塊輸出數據格式選擇:線性二進制 ADC10CTL1&=ISSH; / 采樣-保持電路觸發信號不反相 ADC10CTL1|=ADC10DIV_0; / ADC10CLK 時鐘源分頻選擇:1 ADC10CTL1|=ADC10SSEL_2; / ADC10CLK 時鐘源選擇:MCLK ADC10CTL1|=CONSEQ_0; / 轉換模式選擇:單通道,單次 ADC10CTL0|=ENC; / ADC10 模塊使能在程序示例9.1中,模擬/數字轉換模塊(ADC10)的配置使用函數void adc10_begi

39、n(void) / ADC10 配置函數來實現。使用函數可以簡化主函數的結構。這個函數內部對涉及的3個寄存器的每種功能分別進行配置,這樣既能加深對相關內容的理解,也方便將這部分內容用于其它地方。類似于前面出現的程序示例,程序示例9.1只聲明了需要使用的函數,除過模擬/數字轉換模塊(ADC10)的配置函數,其它函數的原型并沒有寫出。主函數在完成所有配置工作以后,重復進行對A0模擬電壓輸入通道(P1.0)輸入的模擬電壓完成模擬/數字轉換、顯示轉換結果。模擬/數字轉換工作的啟動通過置位ADC10控制寄存器0(ADC10CTL0)的位ADC10SC來實現。完成模擬/數字轉換工作的啟動以后,位ADC10

40、SC能夠自動清零,因此程序中不需要完成該位清零的語句。模擬信號的采樣以及到數字量的轉換需要一段時間,循環語句while(ADC10CTL1&0x01)=1); / 等模擬 / 數字轉換結束通過檢測ADC10控制寄存器1(ADC10CTL1)位BUSY的狀態來判斷模擬/數字轉換工作是否完成。在包括采樣、模擬/數字轉換的整個過程中,位BUSY置位,因此程序重復執行這條語句,等待過程的結束。轉換過程完成以后,位BUSY自動清零,循環語句結束執行。當模擬/數字轉換工作完成以后,從模擬/數字轉換模塊(ADC10)的轉換結果寄存器ADC10MEM就能夠自動獲得轉換結果。使用程序示例9.1,MSP430G2

41、231芯片模擬/數字轉換模塊(ADC10)的測量結果如表9.1所示。表9.1 模擬/數字轉換模塊(ADC10)的測量結果輸入模擬電壓(V)理想轉換結果實際轉換結果0.000x0000x0000.100x0280x02f0.200x0510x0551.500x2650x25e1.600x28e0x2871.700x2b70x2b02.300x3ad0x3a12.400x3d60x3c92.500x3ff0x3f1理想轉換結果由三用表測量得芯片管腳P1.0的模擬電壓值,通過下式計算獲得NADC = 1023VIN / 2.5(9-3)當輸入模擬電壓大于2.5V,轉換結果將保持0x3ff數值不變。測

42、量結果顯示,實際轉換結果與理想數值之間存在誤差。模擬/數字轉換特性不是線性,當輸入模擬電壓較小時,實際轉換結果大于理想轉換結果;當輸入模擬電壓較大時,實際轉換結果小于理想轉換結果。9.4 模擬/數字轉換模塊(ADC12)9.4.1 模擬/數字轉換模塊(ADC12)MSP430F2619芯片內部包含模擬/數字轉換模塊(ADC12)。該模塊的工作原理也屬于逐次逼近型模擬/數字轉換器(SAC),也具有200ksps的轉換速率,但是它具有12位分辨率。模擬/數字轉換模塊(ADC12)的組成方框圖如圖9.5所示。圖9.5 模擬/數字轉換模塊(ADC12)的組成方框圖由于都是采用逐次逼近型模擬/數字轉換器

43、(SAC),模擬/數字轉換模塊(ADC12)與模擬/數字轉換模塊(ADC10)的組成基本相同,但是仍然存在一些差別。圖中的模擬電壓輸入通道A0A7分別可以與芯片的管腳相連接,模擬輸入電壓還包括芯片電源AVCC以及芯片內部溫度傳感器的輸出電壓。通道A12A15現在不存在,對應的多路選擇器觸點直接與芯片接地(GND)相連接。在信號“INCHx”的控制下,多路選擇開關選擇1個通道的模擬電壓進行采樣。雖然沒有畫在一起,信號“CONSEQx”仍然用來實現單次單通道、單次順序通道、重復單通道和重復順序通道這樣的通道轉換模式的選擇。采樣-保持電路“Sample and Hold”和模擬/數字轉換器“12-b

44、it SAR”仍然共用一個時鐘信號“ADC12CLK”。時鐘信號源同樣還是模擬/數字轉換模塊內部時鐘信號源“ADC10OSC”、MSP430芯片的系統時鐘信號ACLK、MCLK或者SMCLK,并通過信號“ADC12SSELx”實現信號源的選擇。為滿足對時鐘頻率數值的要求,被選中的時鐘信號利用分頻電路“Divider /1/8”,在信號“ADC12DIVx”控制下,實現直接通過,或者從2到8的分頻。采樣觸發信號源有一些改變,仍然使用ADC12控制寄存器0(ADC12CTL0)的位ADC12SC,或者定時器A(TimerA)的捕捉/比較模塊1(CCR1)的輸出,更換使用了定時器B(TimerB)的

45、捕捉/比較模塊0(CCR0)的輸出,或者定時器B(TimerB)的捕捉/比較模塊2(CCR2)的輸出。信號“SHSx”完成采樣觸發信號的選擇。信號“ENC”使能選擇的采樣觸發信號,即使能模擬/數字轉換模塊(ADC12)的工作。信號“ISSH”能夠實現采樣觸發信號的同相輸出,或者反相輸出。信號“SHI”的上升邊沿用來觸發計數器“Sample Timer”的計數工作,在規定范圍內進行計數的過程中,它輸出高電平信號;計數結束后,它則輸出一個低電平信號。輸出為高電平時,模擬信號被采樣;輸出為低電平時,采樣信號被保持,這個期間完成模擬電壓到數字量的轉換。信號“SHI”也可以直接控制采樣過程,同樣在這個信

46、號處于高電平期間進行采樣。直接使用信號“SHI”控制采樣過程使得程序設計者能夠通過控制信號“SHI”高電平持續時間來控制采樣時間,信號“SHI”的下降沿將觸發轉換過程,轉換過程自動使用時鐘信號“ADC12CLK”。采樣計數器“Sample Timer”以信號“ADC12CLK”為計數時鐘,在信號“SHTx”的控制下,實現范圍為41024的計數過程。采用更長時間的計數過程是由于現在的滿量程電壓分辨率從1/1023上升到1/4095,采樣電容需要被充電到更接近實際的模擬電壓數值,因此需要更多的時間。模擬/數字轉換模塊(ADC12)內部也包含參考電壓源“1.5V or 2.5V Reference”

47、。這個參考電壓源的使用與模擬/數字轉換模塊(ADC10)內部參考電壓源的使用方法相同,但是這里推薦在參考電源輸出管腳VREF+和模擬地管腳AVSS之間添加一個10uF和一個0.1uF的并聯電容,因為現在由于分辨率提高使得電路對干擾更加敏感。模擬/數字轉換器“12-bit SAR”將模擬電壓轉換為數字量。模擬/數字轉換模塊(ADC12)提供了16個緩沖存儲器ADC12MEM0ADC12MEM15,它們分別具有各自的控制寄存器ADC10CTLx,由此能夠配置緩沖存儲器存儲的轉換結果。模擬/數字轉換模塊(ADC12)的中斷矢量,ADC12_VECTOR,為該模塊的18個中斷信號源所共同使用。這些中斷

48、信號源就包括向任何一個緩沖存儲器,ADC12MEM0ADC12MEM15,寫入數據所產生的中斷信號。為利用一個中斷矢量服務眾多的中斷信號源,模塊具有一個專門的寄存器,中斷矢量寄存器(ADC12IV)。9.4.2 模擬/數字轉換模塊(ADC12)的寄存器模擬/數字轉換模塊(ADC12)的寄存器也分為3類。第一類為控制模擬/數字轉換工作的寄存器,包括ADC12控制寄存器0和1,ADC10CTL2和ADC12CTL1;第二類為存儲模擬/數字轉換結果的寄存器和對應的控制寄存器,ADC12MEMx和ADC12MCTLx,這里的x的取值范圍為015;第三類涉及中斷的寄存器,包括ADC12中斷使能寄存器,A

49、DC12IE,中斷標志寄存器,ADC12IFG,中斷矢量寄存器,ADC12IV,。 ADC12控制寄存器0(ADC12CTL0)位1512118位名稱SHT1xSHT0x操作方式rwrw復位值00000000位76543210位名稱MSCREF2_5VREFONADC12ONADC12OVIEADC12TOVIEENCADC10SC操作方式rwrwrwrwrwrwrwrw復位值00000000注意:ADC12控制寄存器0(ADC12CTL0)中有陰影的位的調整必須在該寄存器的位ENC狀態為0的情況下才能進行。SHT1x和SHT0x用來選擇采樣時間,單位為ADC12CLK的周期。其中SHT1x用來控制緩沖存儲器ADC12MEM8ADC12MEM15對應的模擬電壓對應的采樣時間;SHT0x用來控制緩沖存儲器ADC12MEM0ADC12MEM7對應的模擬電壓對應的采樣時間。SHT1x和SHT0x的取值對應的采樣時間如表9.2所示。表9.2 SHT1x和SHT0x的取值對應的采樣時間SHT1x和SHT0xADC12CLKSHT1x和SHT0xADC12CLK0000

溫馨提示

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

評論

0/150

提交評論