![第6章MSP430單片機(jī)的輸入輸出模塊_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/1349a2a2-5c4c-42bf-bc26-c7853c552d4a/1349a2a2-5c4c-42bf-bc26-c7853c552d4a1.gif)
![第6章MSP430單片機(jī)的輸入輸出模塊_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/1349a2a2-5c4c-42bf-bc26-c7853c552d4a/1349a2a2-5c4c-42bf-bc26-c7853c552d4a2.gif)
![第6章MSP430單片機(jī)的輸入輸出模塊_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/1349a2a2-5c4c-42bf-bc26-c7853c552d4a/1349a2a2-5c4c-42bf-bc26-c7853c552d4a3.gif)
![第6章MSP430單片機(jī)的輸入輸出模塊_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/1349a2a2-5c4c-42bf-bc26-c7853c552d4a/1349a2a2-5c4c-42bf-bc26-c7853c552d4a4.gif)
![第6章MSP430單片機(jī)的輸入輸出模塊_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/1349a2a2-5c4c-42bf-bc26-c7853c552d4a/1349a2a2-5c4c-42bf-bc26-c7853c552d4a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、合肥工業(yè)大學(xué)DSP及MSP430實驗室 MSP430單片機(jī)原理與應(yīng)用單片機(jī)原理與應(yīng)用 http:/ MSP430單片機(jī)的輸入輸出模塊 單片機(jī)中的輸入/輸出模塊是供信號輸入、輸出所用的模塊化單元。MSP430單片機(jī)的片內(nèi)輸入/輸出模塊非常豐富,典型的輸入/輸出模塊有:通用I/O端口、模數(shù)轉(zhuǎn)換模塊、比較器、定時器與段式液晶驅(qū)動模塊。本章重點講述各典型輸入/輸出模塊的結(jié)構(gòu)、原理及功能,并針對各個模塊給出簡單的應(yīng)用例程。通用通用IO端口端口(GPIO)6.1模數(shù)轉(zhuǎn)換模塊模數(shù)轉(zhuǎn)換模塊(ADC12)6.2比較器比較器B(Comp_B)6.3定時器定時器6.4LCD_C段式液晶驅(qū)動模塊段式液晶驅(qū)動模塊6.5
2、6.1 通用IO端口6.1.1 MSP430端口概述 通用I/O端口是MSP430單片機(jī)最重要也是最常用的外設(shè)模塊。通用I/O端口不僅可以直接用于輸入/輸出,而且可以為MSP430單片機(jī)應(yīng)用系統(tǒng)提供必要的邏輯控制信號。 MSP430F5xx/6xx系列單片機(jī)最多可以提供12個通用I/O端口(P1P11和PJ),大部分端口有8個引腳,少數(shù)端口引腳數(shù)少于8個。每個I/O引腳都可以被獨(dú)立地設(shè)置為輸入或者輸出引腳,并且每個I/O引腳都可以被獨(dú)立地讀取或者寫入,所有的端口寄存器都可以被獨(dú)立地置位或者清零。 P1和P2引腳具有中斷能力。從P1和P2端口的各個I/O引腳引入的中斷可以獨(dú)立地被使能,并且被設(shè)置
3、為上升沿或者下降沿觸發(fā)中斷。所有P1端口的I/O引腳的中斷都來源于同一個中斷向量P1IV。同理,P2端口的中斷源都來源于另一個中斷向量P2IV。 可以對每個獨(dú)立的端口進(jìn)行字節(jié)訪問,或者將兩個結(jié)合起來進(jìn)行字訪問。端口組合P1和P2、P3和P4、P5和P6、P7和P8可結(jié)合起來稱為PA、PB、PC和PD端口。當(dāng)進(jìn)行字操作寫入PA口時,所有的16位數(shù)據(jù)都被寫入這個端口;利用字節(jié)操作寫入PA端口低字節(jié)時,高字節(jié)保持不變;利用字節(jié)指令寫入PA端口的高字節(jié)時,低字節(jié)保持不變。其他端口也是一樣。當(dāng)寫入的數(shù)據(jù)長度小于端口的最大長度時,那些沒有用到的位保持不變。應(yīng)用這個規(guī)則來訪問所有端口,除了中斷向量寄存器P1
4、IV和P2IV,它們只能進(jìn)行字節(jié)操作。6.1 通用IO端口6.1.2 通用IO端口輸出特性 MSP430單片機(jī)在默認(rèn)輸出驅(qū)動(PxDS.y=0,即欠驅(qū)動強(qiáng)度)且單片機(jī)供電電壓VCC為3V條件下,端口低電平和高電平的輸出特性分別如圖6.1.1和圖6.1.2所示,其中,電流輸入為正,輸出為負(fù)。 圖6.1.1 低電平輸出特性(PxDS.y=0)圖6.1.2 高電平輸出特性(PxDS.y=0)6.1 通用IO端口6.1.2 通用IO端口輸出特性 當(dāng)PxDS.y控制位被配置為1時,即單片機(jī)端口被配置為強(qiáng)驅(qū)動模式。在強(qiáng)驅(qū)動模式下,端口的低電平和高電平輸出特性分別如圖6.1.5和圖6.1.6所示。 圖6.1
5、.5 低電平輸出特性(PxDS.y=1)圖6.1.6 高電平輸出特性(PxDS.y=1)6.1 通用IO端口6.1.3 端口P1和P2 端口P1和P2具有輸入/輸出、中斷和外部模塊功能,可以通過設(shè)置它們各自的9個控制寄存器來實現(xiàn)這些功能。下面所述Px代表P1和P2。 1輸入寄存器PxIN 輸入寄存器是CPU掃描I/O引腳信號的只讀寄存器,用戶不能對其寫入,只能通過讀取該寄存器的內(nèi)容獲取I/O端口的輸入信號,此時引腳的方向必須選定為輸入。輸入寄存器中某一位為0,表明該位輸入為低;某一位為1,表明該位輸入為高。 2輸出寄存器PxOUT 該寄存器為I/O端口的輸出緩沖寄存器。其內(nèi)容可以像操作內(nèi)存數(shù)據(jù)
6、一樣寫入,以達(dá)到改變I/O口輸出狀態(tài)的目的。在讀取時,輸出緩存的內(nèi)容與引腳方向定義無關(guān)。改變方向寄存器的內(nèi)容,輸出緩存的內(nèi)容不受影響。 0:輸出為低; 1:輸出為高。6.1 通用IO端口6.1.3 端口P1和P2 3方向寄存器PxDIR 相互獨(dú)立的8位分別定義了8個引腳的輸入/輸出方向。8位在PUC之后都被復(fù)位。使用輸入或輸出功能時,應(yīng)先定義端口的方向,輸入/輸出才能滿足設(shè)計者的要求。作為輸入時,只能讀;作為輸出時,可讀可寫。 0:輸入模式; 1:輸出模式。 4上拉/下拉電阻使能寄存器PxREN 該寄存器的每一位可以使能相應(yīng)I/O引腳的上拉/下拉電阻。該寄存器需和輸出寄存器配合使用,才能完成上
7、拉/下拉電阻的配置。 0:上拉/下拉電阻禁止; 1:上拉/下拉電阻使能。 5輸出驅(qū)動能力調(diào)節(jié)寄存器PxDSPxDS寄存器的每一位可使相關(guān)引腳選擇全驅(qū)動模式和次驅(qū)動模式(減弱驅(qū)動能力)。默認(rèn)的是次驅(qū)動模式。 0:次驅(qū)動模式; 1:全驅(qū)動模式。 6功能選擇寄存器PxSEL P1和P2端口還有其他片內(nèi)外設(shè)功能,為了減少引腳,將這些功能與芯片外的聯(lián)系通過復(fù)用P1和P2引腳的方式來實現(xiàn)。PxSEL用來選擇引腳的I/O端口功能與外圍模塊功能。 0:選擇引腳為普通I/O功能; 1:選擇引腳為外圍模塊功能。6.1 通用IO端口6.1.3 端口P1和P2 7中斷使能寄存器PxIE 該寄存器的8位與該端口的8個引
8、腳一一對應(yīng),其中每一位用以控制相應(yīng)引腳的中斷允許。 8中斷觸發(fā)邊沿選擇寄存器PxIES 如果允許Px口的某個引腳中斷,還需定義該引腳的中斷觸發(fā)沿。該寄存器的8位分別定義了Px口的8個引腳的中斷觸發(fā)沿。 9 中斷標(biāo)志寄存器PxIFG 該寄存器有8個標(biāo)志位,它們含有相應(yīng)引腳是否有待處理中斷的信息,即相應(yīng)引腳是否有中斷請求。如果Px的某個引腳允許中斷,同時選擇上升沿,則當(dāng)該引腳發(fā)生由低電平向高電平跳變時,PxIFG的相應(yīng)位就會置位,表明該引腳上有中斷事件發(fā)生。6.1 通用IO端口6.1.4 端口P3P11 這些端口沒有中斷能力,其余功能與P1、P2端口一樣,能實現(xiàn)輸入/輸出功能和外圍模塊功能。每個端
9、口有6個寄存器供用戶使用,用戶可通過這6個寄存器對它們進(jìn)行訪問和控制。每個端口的6個寄存器分別為:輸入寄存器(PxIN)、輸出寄存器(PxOUT)、方向選擇寄存器(PxDIR)、輸出驅(qū)動能力調(diào)節(jié)寄存器(PxDS)、上拉/下拉電阻使能寄存器(PxREN)和功能選擇寄存器(PxSEL)。具體用法同P1和P2端口。6.1 通用IO端口6.1.5 端口的應(yīng)用 端口是單片機(jī)中最經(jīng)常使用的外設(shè)資源。一般在程序的初始化階段對端口進(jìn)行配置。配置時,先配置功能選擇寄存器PxSEL,若為I/O端口功能,則繼續(xù)配置方向寄存器PxDIR;若為輸入,則繼續(xù)配置中斷使能寄存器PxIE;若允許中斷,則繼續(xù)配置中斷觸發(fā)沿選擇
10、寄存器PxIES。 需要注意的是,P1和P2端口的中斷為多源中斷,即P1端口的8位共用一個中斷向量P1IV,P2端口的8位也共用一個中斷向量P2IV。當(dāng)Px端口上的8個引腳中的任何一個引腳有中斷觸發(fā)時,都會進(jìn)入同一個中斷服務(wù)程序。在中斷服務(wù)程序中,首先應(yīng)該通過PxIFG判斷是哪一個引腳觸發(fā)的中斷,再執(zhí)行相應(yīng)的程序,最后還要用軟件清除相應(yīng)的PxIFG標(biāo)志位。6.1 通用IO端口【例6.1.1】 在MSP430單片機(jī)系統(tǒng)中,P1.5、P1.6、P1.7發(fā)生中斷后執(zhí)行不同的代碼。#pragma vector=PORT1_VECTOR / P1口中斷源_ _interrupt void Port_1(
11、void) / 聲明一個中斷服務(wù)程序,名為Port_1() if(P1IFG&BIT5) / 判斷P1中斷標(biāo)志第5位 / 在這里寫P1.5中斷服務(wù)程序 if(P1IFG&BIT5) / 判斷P1中斷標(biāo)志第6位 / 在這里寫P1.6中斷服務(wù)程序 if(P1IFG&BIT5) / 判斷P1中斷標(biāo)志第7位 / 在這里寫P1.7中斷服務(wù)程序 P1IFG=0; / 清除P1所有中斷標(biāo)志位6.1 通用IO端口【例6.1.2】 利用軟件循環(huán)查詢P1.4引腳的輸入狀態(tài),若P1.4輸入為高電平,則使P1.0輸出高電平;若P1.4輸入為低電平,則使P1.0輸出低電平。該程序采用查詢的方式檢
12、測按鍵是否被按下。為調(diào)試方便,P1.0引腳可接LED。#include void main(void) WDTCTL = WDTPW + WDTHOLD; / 關(guān)閉看門狗 P1DIR |= BIT0; / 設(shè)P1.0為輸出方向 while (1) / 循環(huán)查詢P1.4引腳輸入狀態(tài) if (P1IN & BIT4) P1OUT |= BIT0; / 如果P1.4輸入為高,則使P1.0輸出高 else P1OUT &= BIT0; / 否則,使P1.0輸出低電平 6.1 通用IO端口【例6.1.3】 利用按鍵外部中斷方式,實現(xiàn)反轉(zhuǎn)P1.0引腳輸出狀態(tài)。P1.4選擇GPIO功能,內(nèi)部
13、上拉電阻使能,且使能中斷。當(dāng)P1.4引腳上產(chǎn)生下降沿時,觸發(fā)P1端口外部中斷,在中斷服務(wù)程序中,反轉(zhuǎn)P1.0端口輸出狀態(tài)。按鍵外部中斷實時性較高,用途非常廣泛,可以處理對響應(yīng)時間要求比較苛刻的事件,在【例6.1.2】程序中,若主循環(huán)一次的時間比較長,P1.4引腳置位時間比較短,則有可能在一個主循環(huán)周期內(nèi)漏掉一次或多次P1.4引腳置位事件。因此在這種情況下,若采用【例6.1.2】端口查詢的方式,可能就無法滿足設(shè)計的要求,應(yīng)該采用按鍵外部中斷的方式實現(xiàn)。#include void main(void) WDTCTL = WDTPW + WDTHOLD; / 關(guān)閉看門狗 P1DIR |= BIT0;
14、 / 設(shè)置P1.0引腳為輸出 P1REN |= BIT4; P1OUT |= BIT4; / 以上兩句組合功能為使能P1.4引腳上拉電阻 P1IES |= BIT4; / P1.4中斷下降沿觸發(fā) P1IFG &= BIT4; / 清除P1.4中斷標(biāo)志位 P1IE |= BIT4; / P1.4中斷使能 _ _bis_SR_register(LPM4_bits + GIE); / 進(jìn)入LPM4,并使能全局中斷#pragma vector=PORT1_VECTOR_ _interrupt void Port_1(void) P1OUT = BIT0; / 反轉(zhuǎn)P1.0端口輸出狀態(tài) P1IF
15、G &= BIT4; / 清除P1.4中斷標(biāo)志位6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)6.2.1 模數(shù)轉(zhuǎn)換概述 在MSP430單片機(jī)的實時控制和智能儀表等實際應(yīng)用系統(tǒng)中,常常會遇到連續(xù)變化的物理量,如溫度、流量、壓力和速度等。利用傳感器把這些物理量檢測出來,轉(zhuǎn)換為模擬電信號,再經(jīng)過模數(shù)轉(zhuǎn)換模塊(ADC)轉(zhuǎn)換成數(shù)字量,模擬量才能夠被MSP430單片機(jī)處理和控制。 1模數(shù)轉(zhuǎn)換基本過程 首先連續(xù)時間輸入信號x(t)輸入ADC的采樣保持器中,ADC每隔Ts(采樣周期)讀出一次x(t)的采樣值,對此采樣值進(jìn)行量化。量化的過程是將此信號轉(zhuǎn)換成離散時間、離散幅度的多電平信號。從數(shù)學(xué)角度理解,量化是把一個
16、連續(xù)幅度值的無限數(shù)集合映射到一個離散幅度值的有限數(shù)集合。在進(jìn)行ADC轉(zhuǎn)換時,必須把采樣電壓表示為某個規(guī)定的最小數(shù)量單位的整數(shù)倍,所取的最小數(shù)量單位叫做量化單位,用表示。顯然,數(shù)字信號最低有效位(LSB)的1所代表的數(shù)量大小就等于。把量化的結(jié)果用代碼表示出來,這個過程稱為編碼。這些代碼就是ADC轉(zhuǎn)換的輸出結(jié)果。6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)2ADC的位數(shù)ADC的位數(shù)為ADC模塊采樣轉(zhuǎn)換后輸出代碼的位數(shù)。例如,一個12位的ADC模塊,采樣轉(zhuǎn)換后的代碼即為12位,表示數(shù)值的取值范圍為04095。3分辨率分辨率表示輸出數(shù)字量變化的一個相鄰數(shù)碼所需輸入模擬電壓的變化量。它定義為轉(zhuǎn)換器的滿刻度電壓與2
17、n的比值,其中n為ADC的位數(shù)。因此,分辨率與ADC的位數(shù)有關(guān)。例如,一個8位ADC模塊的分辨率為滿刻度電壓的1/256。如果滿刻度輸入電壓為5V,該ADC模塊的分辨率即為5V/256=20mV。分辨率代表了ADC模塊對輸入信號的分辨能力,一般來說,ADC模塊位數(shù)越高,數(shù)據(jù)采集的精度就越高。4量化誤差量化誤差是由于用有限數(shù)字對模擬數(shù)值進(jìn)行離散取值(量化)而引起的誤差。因此,量化誤差理論上為一個單位分辨率,即1/2LSB。量化誤差是無法消除的,但是,通過提高分辨率可以減少量化誤差。6.2 模數(shù)轉(zhuǎn)換模塊(ADC12) 5采樣周期 采樣周期是每兩次采樣之間的時間間隔。采樣周期包括采樣保持時間和轉(zhuǎn)換時
18、間。采樣保持時間是指ADC模塊完成一次采樣和保持的時間,轉(zhuǎn)換時間是指ADC模塊完成一次模數(shù)轉(zhuǎn)換所需要的時間。在MSP430單片機(jī)的ADC12模塊中,采樣保持時間可通過控制寄存器進(jìn)行設(shè)置,而轉(zhuǎn)換時間一般需要13個ADCCLK的時間。 6采樣頻率 采樣頻率,也稱為采樣速率或者采樣率,定義為每秒從連續(xù)信號中提取并組成離散信號的采樣個數(shù),單位為赫茲(Hz)。采樣頻率的倒數(shù)是采樣周期。為了確定對一個模擬信號的采樣頻率,在此簡單介紹采樣定理。采樣定理又稱香農(nóng)采樣定理或者奈奎斯特采樣定理,即在進(jìn)行模數(shù)信號的轉(zhuǎn)換過程中,當(dāng)采樣頻率fs.max大于信號中最高頻率分量fmax的2倍時(fs.max2fmax),采
19、樣之后的數(shù)字信號能保留原始信號中的信息。在一般應(yīng)用中,采樣頻率應(yīng)為被采樣信號中最高頻率的510倍。6.2 模數(shù)轉(zhuǎn)換模塊(ADC12) 7采樣保持電路 采樣保持電路(S/H或者SH)是模數(shù)轉(zhuǎn)換系統(tǒng)中的一種重要電路,其作用是采集模擬輸入電壓在某一時刻的瞬時值,并在模數(shù)轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換期間保持輸出電壓不變,以供模數(shù)轉(zhuǎn)換。該電路存在的原因在于模數(shù)轉(zhuǎn)換需要一定時間,在轉(zhuǎn)換過程中,如果送給ADC的模擬量發(fā)生變化,就不能保證采樣的精度。為了簡單起見,在此只分析單端輸入ADC的采樣保持電路,如圖6.2.1所示。圖6.2.1 采樣保持電路示意圖 采樣保持電路有兩種工作狀態(tài):采樣狀態(tài)和保持狀態(tài)。當(dāng)控制開關(guān)S閉合時,
20、輸出跟隨輸入變化,稱為采樣狀態(tài);當(dāng)控制開關(guān)S斷開時,由保持電容C維持該電路的輸出不變,稱為保持狀態(tài)。6.2 模數(shù)轉(zhuǎn)換模塊(ADC12) 8 多通道同步采樣和分時復(fù)用 大多數(shù)單片機(jī)都集成了8個以上的ADC通道,這些單片機(jī)內(nèi)部的ADC模塊大多都是多通道分時復(fù)用的結(jié)構(gòu),其內(nèi)部其實只有一個ADC內(nèi)核,依靠增加模擬開關(guān)的方法輪流使用ADC內(nèi)核,所以可以有多個ADC的輸入通道。MSP430單片機(jī)也采用這種結(jié)構(gòu),如圖6.2.2所示。 同步采樣ADC實際就是多個完整獨(dú)立的ADC。如圖6.2.3所示為三通道同步采樣ADC的示意圖。每一組通道都有各自獨(dú)立的采樣保持電路和ADC內(nèi)核,3個ADC模塊共用控制電路和輸入
21、/輸出接口。圖6.2.2 MSP430單片機(jī)集成的ADC12模塊局部 圖6.2.3 三通道同步采樣ADC示意圖 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)6.2.2 MSP430單片機(jī)ADC12模塊介紹ADC12模塊的特性有: 高達(dá)200ksps的最大轉(zhuǎn)換率; 無數(shù)據(jù)丟失的單調(diào)的12位轉(zhuǎn)換器; 采樣周期可由軟件或定時器編程控制的采樣保持功能; 軟件或定時器啟動轉(zhuǎn)換; 可通過軟件選擇片內(nèi)參考電壓(MSP430F54xx:1.5V或2.5V,其他芯片:1.5V、2.0V或2.5V,注意此處只限MSP430F5xx/6xx系列單片機(jī)); 可通過軟件選擇內(nèi)部或外部參考電壓; 高達(dá)12路可單獨(dú)配置的外部輸入通道
22、; 可為內(nèi)部溫度傳感器、AVCC和外部參考電壓分配轉(zhuǎn)換通道; 正或負(fù)參考電壓通道可獨(dú)立選擇; 轉(zhuǎn)換時鐘源可選; 具有單通道單次、單通道多次、序列通道單次和序列通道多次的轉(zhuǎn)換模式; ADC內(nèi)核和參考電壓都可獨(dú)立關(guān)閉; 具有18路快速響應(yīng)的ADC中斷; 具有16個轉(zhuǎn)換結(jié)果存儲寄存器。6.2 模數(shù)轉(zhuǎn)換模塊(ADC12) ADC12模塊的結(jié)構(gòu)框圖如圖6.2.4所示。ADC12模塊支持快速的12位模數(shù)轉(zhuǎn)換。該模塊具有一個12位的逐次逼近(SAR)內(nèi)核、模擬輸入多路復(fù)用器、參考電壓發(fā)生器、采樣及轉(zhuǎn)換所需的時序控制電路和16個轉(zhuǎn)換結(jié)果緩沖及控制寄存器。轉(zhuǎn)換結(jié)果緩沖及控制寄存器允許在沒有CPU干預(yù)的情況下,進(jìn)
23、行多達(dá)16路ADC采樣、轉(zhuǎn)換和保存。圖6.2.4 ADC12模塊結(jié)構(gòu)框圖6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)6.2.3 MSP430單片機(jī)ADC12模塊操作1ADC12的轉(zhuǎn)換模式ADC12模塊有4種轉(zhuǎn)換模式,可以通過CONSEQx控制位進(jìn)行選擇,具體轉(zhuǎn)換模式說明如表6.2.1所示。ADC12CONSEQx轉(zhuǎn)換模式操作說明00單通道單次轉(zhuǎn)換一個單通道轉(zhuǎn)換一次01序列通道單次轉(zhuǎn)換一個序列多個通道轉(zhuǎn)換一次10單通道多次轉(zhuǎn)換一個單通道重復(fù)轉(zhuǎn)換11序列通道多次轉(zhuǎn)換一個序列多個通道重復(fù)轉(zhuǎn)換表6.2.1 各種轉(zhuǎn)換模式說明列表6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)(1)單通道單次轉(zhuǎn)換模式該模式對單一通道實現(xiàn)單次轉(zhuǎn)換
24、。模數(shù)轉(zhuǎn)換結(jié)果被寫入由CSTARTADDx位定義的存儲寄存器ADC12MEMx中。單通道單次轉(zhuǎn)換的流程圖如圖6.2.6所示。當(dāng)用戶利用軟件使ADC12SC啟動轉(zhuǎn)換時,下一次轉(zhuǎn)換可以通過簡單地設(shè)置ADC12SC位來啟動。當(dāng)有其他任何觸發(fā)源用于轉(zhuǎn)換時,ADC12ENC位必須在等待觸發(fā)信號之前置位(上升沿)。其他的采樣輸入信號將在ADC12ENC復(fù)位并置位之前被忽略。【例6.2.1】 單通道單次轉(zhuǎn)換舉例。分析:本實例采用單通道單次轉(zhuǎn)換模式,參考電壓對選擇:VR+=AVCC、VR-=AVSS,ADC12采樣參考時鐘源選擇內(nèi)部默認(rèn)參考時鐘ADC12OSC。在主函數(shù)中,ADC12在采樣轉(zhuǎn)換的過程中,MSP
25、430單片機(jī)進(jìn)入低功耗模式以降低功耗,當(dāng)采樣轉(zhuǎn)換完成,會自動進(jìn)入ADC12中斷服務(wù)程序,喚醒CPU并讀取采樣轉(zhuǎn)換結(jié)果。最終實現(xiàn)當(dāng)輸入模擬電壓信號大于0.5倍AVCC時,使P1.0引腳輸出高電平;否則,使P1.0引腳輸出低電平。下面給出實例程序: #include void main(void) WDTCTL = WDTPW + WDTHOLD; / 關(guān)閉看門狗 ADC12CTL0 = ADC12SHT02 + ADC12ON; / 選擇采樣周期,打開ADC12模塊 ADC12CTL1 = ADC12SHP; / 使用采樣定時器作為采樣觸發(fā)信號 ADC12IE = 0 x01; / 使能ADC采
26、樣中斷 ADC12CTL0 |= ADC12ENC; / 置位ADC12ENC控制位 P6SEL |= 0 x01; / 將P6.0引腳設(shè)為ADC輸入功能 P1DIR |= 0 x01; / 將P1.0引腳設(shè)為輸出功能 while (1) ADC12CTL0 |= ADC12SC; / 啟動采樣轉(zhuǎn)換_ _bis_SR_register(LPM0_bits + GIE);/ 進(jìn)入LPM0并啟用全局中斷 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)#pragma vector = ADC12_VECTOR_ _interrupt void ADC12_ISR(void) switch(_ _even_in_
27、range(ADC12IV,34) case 0: break; / Vector 0: 無中斷 case 2: break; / Vector 2: ADC溢出中斷 case 4: break; / Vector 4: ADC轉(zhuǎn)換時間溢出中斷 case 6: / Vector 6: ADC12IFG0 if (ADC12MEM0 = 0 x7ff) / ADC12MEM = A0 0.5AVcc? P1OUT |= BIT0; / P1.0 = 1 else P1OUT &= BIT0; / P1.0 = 0 _ _bic_SR_register_on_exit(LPM0_bits)
28、; / 退出低功耗模式0 case 8: break; / Vector 8: ADC12IFG1 case 34: break; / Vector 34: ADC12IFG14 default: break; 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)(2)序列通道單次轉(zhuǎn)換模式該模式對序列通道做單次轉(zhuǎn)換。ADC12轉(zhuǎn)換結(jié)果將順序?qū)懭胗蒀STARTADDx位定義的以A D C M E M x 開 始 的 轉(zhuǎn) 換 存 儲 器 中 。 當(dāng) 由ADC12MCTLx寄存器中ADC12EOS位定義的最后一個通道轉(zhuǎn)換完成之后,整個序列通道轉(zhuǎn)換完成。序列通道單次轉(zhuǎn)換的流程圖如圖6.2.7所示。當(dāng)使用ADC12SC位
29、啟動轉(zhuǎn)換時,下一次轉(zhuǎn)換可以通過簡單地設(shè)置ADC12SC位來啟動。當(dāng)有其他任何觸發(fā)源用于開始轉(zhuǎn)換,ADC12ENC位必須在等待觸發(fā)信號前置位(上升沿)。其他的采樣輸入信號將在ADC12ENC復(fù)位并置位之前被忽略。圖6.2.7 序列通道單次轉(zhuǎn)換流程圖6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)【例6.2.2】 序列通道單次轉(zhuǎn)換舉例。分析:本實例采用序列通道單次轉(zhuǎn)換模式,選擇的采樣序列通道為A0、A1、A2和A3。每個通道都選擇AVCC和AVSS作為參考電壓,采樣結(jié)果被順序存儲在ADC12MEM0、ADC12MEM1、ADC12MEM2和ADC12MEM3中,本實例程序最終將采樣結(jié)果存儲在results數(shù)組中
30、。下面給出實例程序代碼:#include volatile unsigned int results4; / 用于存儲轉(zhuǎn)換結(jié)果void main(void) WDTCTL = WDTPW+WDTHOLD; / 關(guān)閉看門狗 P6SEL = 0 x0F; / 使能采樣轉(zhuǎn)換通道 ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_2; / 打開ADC12,設(shè)置采樣時間間隔 ADC12CTL1 = ADC12SHP+ADC12CONSEQ_1; / 選擇采樣定時器作為采樣觸發(fā)信號,采樣模式選擇序列通道單次轉(zhuǎn)換模式 ADC12MCTL0 = ADC12INCH_0; / ref
31、+=AVcc, channel = A0 ADC12MCTL1 = ADC12INCH_1; / ref+=AVcc, channel = A1 ADC12MCTL2 = ADC12INCH_2; / ref+=AVcc, channel = A2 ADC12MCTL3 = ADC12INCH_3+ADC12EOS; / ref+=AVcc,channel=A3,停止采樣 ADC12IE = 0 x08; / 使能ADC12IFG.3采樣中斷標(biāo)志位 ADC12CTL0 |= ADC12ENC; / 使能轉(zhuǎn)換 while(1) ADC12CTL0 |= ADC12SC; / 啟動采樣轉(zhuǎn)換 _ _
32、bis_SR_register(LPM4_bits + GIE); / 進(jìn)入LPM4并使能全局中斷 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)#pragma vector=ADC12_VECTOR_ _interrupt void ADC12ISR (void) switch(_ _even_in_range(ADC12IV,34) case 0: break; / Vector 0: 無中斷 case 2: break; / Vector 2: ADC溢出中斷 case 4: break; / Vector 4: ADC轉(zhuǎn)換時間溢出中斷 case 6: break; / Vector 6: ADC1
33、2IFG0 case 8: break; / Vector 8: ADC12IFG1 case 10: break; / Vector 10: ADC12IFG2 case 12: / Vector 12: ADC12IFG3 results0 = ADC12MEM0; / 讀取轉(zhuǎn)換結(jié)果,自動清除中斷標(biāo)志位 results1 = ADC12MEM1; / 讀取轉(zhuǎn)換結(jié)果,自動清除中斷標(biāo)志位 results2 = ADC12MEM2; / 讀取轉(zhuǎn)換結(jié)果,自動清除中斷標(biāo)志位 results3 = ADC12MEM3; / 讀取轉(zhuǎn)換結(jié)果,自動清除中斷標(biāo)志位 _ _bic_SR_register_on_
34、exit(LPM4_bits);/ 退出LPM4 case 14: break; / Vector 14: ADC12IFG4 default: break; 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)(3)單通道多次轉(zhuǎn)換模式單通道多次轉(zhuǎn)換模式是在選定的通道上進(jìn)行多 次 轉(zhuǎn) 換 。 A D C 轉(zhuǎn) 換 的 結(jié) 果 被 存 入 由CSTARTADDx位定義的ADC12MEMx寄存器中。在這種轉(zhuǎn)換模式下,當(dāng)每次轉(zhuǎn)換完成后CPU必須讀取ADC12MEMx寄存器的值,否則在下一次轉(zhuǎn)換中,ADC12MEMx寄存器的值會被覆蓋。單通道多次轉(zhuǎn)換模式的流程圖如圖6.2.8所示。在此模式下,若復(fù)位ADC12ENC位,則
35、在當(dāng)前轉(zhuǎn)換完成 之 后 , 轉(zhuǎn) 換 將 立 即 停 止 。 同 時 設(shè) 置CONSEQx=0和ADC12ENC=0,也可以立即停止當(dāng)前的轉(zhuǎn)換,但是,轉(zhuǎn)換結(jié)果是不可靠的。圖6.2.8 單通道多次轉(zhuǎn)換模式流程圖6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)【例6.2.3】 單通道多次轉(zhuǎn)換舉例。分析:本實例采用單通道多次轉(zhuǎn)換模式,選擇的采樣通道為A0,參考電壓選擇AVCC和AVSS。在內(nèi)存中開辟出8個16位內(nèi)存空間results,將多次采樣轉(zhuǎn)換結(jié)果循環(huán)存儲在results數(shù)組中。實例程序代碼如下:#include #define Num_of_Results 8volatile unsigned int res
36、ultsNum_of_Results;/ 開辟8個16位內(nèi)存空間void main(void) WDTCTL = WDTPW+WDTHOLD; / 關(guān)閉看門狗 P6SEL |= 0 x01; / 使能A0采樣通道 ADC12CTL0 = ADC12ON+ADC12SHT0_8+ADC12MSC; / 打開ADC12,設(shè)置采樣間隔 / 設(shè)置多次采樣轉(zhuǎn)換 ADC12CTL1 = ADC12SHP+ADC12CONSEQ_2; / 選擇采樣定時器作為采樣觸發(fā)信號,采樣模式選擇單通道多次轉(zhuǎn)換模式 ADC12IE = 0 x01; / 使能ADC12IFG.0中斷 ADC12CTL0 |= ADC12E
37、NC; / 使能轉(zhuǎn)換 ADC12CTL0 |= ADC12SC; / 啟動轉(zhuǎn)換 _ _bis_SR_register(LPM4_bits + GIE); / 進(jìn)入LPM4并使能全局中斷 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)#pragma vector=ADC12_VECTOR_ _interrupt void ADC12ISR (void) static unsigned char index = 0; switch(_ _even_in_range(ADC12IV,34) case 0: break; / Vector 0: 無中斷 case 2: break; / Vector 2: ADC
38、溢出中斷 case 4: break; / Vector 4: ADC轉(zhuǎn)換時間溢出中斷 case 6: / Vector 6: ADC12IFG0 resultsindex = ADC12MEM0; / 讀取轉(zhuǎn)換結(jié)果 index+; / 計數(shù)器自動加1 if (index = 8) index = 0; case 8: break; / Vector 8: ADC12IFG1 default: break; 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)(4)序列通道多次轉(zhuǎn)換模式序列通道多次轉(zhuǎn)換模式用來進(jìn)行多通道的連續(xù)轉(zhuǎn)換。ADC12轉(zhuǎn)換結(jié)果將順序?qū)懭胗蒀STARTADDx位定義的以ADCMEMx開始的存
39、儲器中。當(dāng)由ADC12MCTLx寄存器中ADC12EOS位定義的最后一個通道轉(zhuǎn)換完成之后,一次序列通道轉(zhuǎn)換完成,觸發(fā)信號會觸發(fā)下一次序列通道轉(zhuǎn)換。序列通道多次轉(zhuǎn)換模式的流程圖如圖6.2.9所示。圖6.2.9 序列通道多次轉(zhuǎn)換流程圖6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)【例6.2.4】 序列通道多次轉(zhuǎn)換舉例。分析:本實例采用序列通道多次轉(zhuǎn)換模式,選擇的采樣序列通道為A0、A1、A2和A3。每個通道都選擇AVCC和AVSS作為參考電壓,采樣結(jié)果被自動順序存儲在ADC12MEM0、ADC12MEM1、ADC12MEM2和ADC12MEM3中。在本實例中,最終將A0、A1、A2和A3通道的采樣結(jié)果分別存儲
40、在A0results、A1results、A2results、A3results數(shù)組中。下面給出實例程序代碼:#include #define Num_of_Results 8volatile unsigned int A0resultsNum_of_Results;volatile unsigned int A1resultsNum_of_Results;volatile unsigned int A2resultsNum_of_Results;volatile unsigned int A3resultsNum_of_Results;void main(void) WDTCTL = WDT
41、PW+WDTHOLD; / 關(guān)閉看門狗 P6SEL = 0 x0F; / 使能ADC輸入通道 ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_8; / 打開ADC12, 設(shè)置采樣間隔/ 設(shè)置多次采樣轉(zhuǎn)換 ADC12CTL1 = ADC12SHP+ADC12CONSEQ_3; / 選擇采樣定時器作為采樣觸發(fā)信號,采樣模式選擇單通道多次轉(zhuǎn)換模式 ADC12MCTL0 = ADC12INCH_0; / ref+=AVcc, channel = A0 ADC12MCTL1 = ADC12INCH_1; / ref+=AVcc, channel = A1 ADC12MCTL
42、2 = ADC12INCH_2; / ref+=AVcc, channel = A26.2 模數(shù)轉(zhuǎn)換模塊(ADC12) ADC12MCTL3 = ADC12INCH_3+ADC12EOS; / ref+=AVcc,channel=A3,停止采樣 ADC12IE = 0 x08; / 使能ADC12IFG.3中斷 ADC12CTL0 |= ADC12ENC; / 使能轉(zhuǎn)換 ADC12CTL0 |= ADC12SC; / 開始采樣轉(zhuǎn)換 _ _bis_SR_register(LPM0_bits + GIE); / 進(jìn)入LPM0并啟用中斷 #pragma vector=ADC12_VECTOR_ _i
43、nterrupt void ADC12ISR (void) static unsigned int index = 0; switch(_ _even_in_range(ADC12IV,34) case 12: / Vector 12: ADC12IFG3 A0resultsindex = ADC12MEM0; / 讀取A0采樣結(jié)果,并自動清除中斷標(biāo)志位 A1resultsindex = ADC12MEM1; / 讀取A1采樣結(jié)果,并自動清除中斷標(biāo)志位 A2resultsindex = ADC12MEM2; / 讀取A2采樣結(jié)果,并自動清除中斷標(biāo)志位 A3resultsindex = ADC1
44、2MEM3; / 讀取A3采樣結(jié)果,并自動清除中斷標(biāo)志位 index+; / 計數(shù)器自動加1 if (index = 8) (index = 0);default: break; 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12) 2采樣和轉(zhuǎn)換 當(dāng)采樣觸發(fā)信號SHI出現(xiàn)上升沿時將啟動模數(shù)轉(zhuǎn)換。SHI信號源可以通過SHSx位進(jìn)行定義,有4種選擇:ADC12SC、Timer_A.OUT1、Timer_B.OUT0、Timer_B.OUT1。ADC12支持8位、10位及12位分辨率模式,可以通過ADC12RES控制位進(jìn)行選擇,模數(shù)轉(zhuǎn)換分別需要9、11及13個ADC12CLK周期。采樣輸入信號的極性用ISSH控制位來
45、選擇。采樣轉(zhuǎn)換信號SAMPCON可以來自于采樣輸入信號SHI或采樣定時器,能夠控制采樣的周期及轉(zhuǎn)換的開始。當(dāng)SAMPCON信號為高電平時采樣被激活,SAMPCON的下降沿將觸發(fā)模數(shù)轉(zhuǎn)換。ADC12SHP定義了兩種不同的采樣時序方法:擴(kuò)展采樣時序模式和脈沖采樣時序模式。6.2 模數(shù)轉(zhuǎn)換模塊(ADC12) 3轉(zhuǎn)換存儲器 典型的模數(shù)操作通常用中斷請求的方式來通知ADC轉(zhuǎn)換的結(jié)束,并需要在下一次ADC執(zhí)行前將轉(zhuǎn)換結(jié)果轉(zhuǎn)存到另一位置。ADC12中的16個轉(zhuǎn)換存儲緩沖寄存器(ADC12MEMx)使得ADC可以進(jìn)行多次轉(zhuǎn)換而不需要軟件干預(yù),這一點提高了系統(tǒng)性能,也減少了軟件開銷。ADC12模塊的每個ADC1
46、2MEMx緩沖寄存器都可通過相關(guān)的ADC12MCTLx控制寄存器來配置,為轉(zhuǎn)換存儲提供了很大的靈活性。SREFx控制位定義了參考電壓,INCHx控制位選擇輸入通道。當(dāng)使用序列通道轉(zhuǎn)換模式時,ADC12EOS控制位定義了轉(zhuǎn)換序列的結(jié)束。6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)4使用片內(nèi)集成溫度傳感器如果需要使用MSP430單片機(jī)片內(nèi)的溫度傳感器,用戶可以選擇模擬輸入通道INCHx=1010。與選擇外部輸入通道一樣,需要進(jìn)行其他寄存器的配置,包括參考電壓選擇、轉(zhuǎn)換存儲寄存器選擇等。溫度傳感器典型的轉(zhuǎn)換函數(shù)如圖6.2.12所示,該轉(zhuǎn)換函數(shù)僅僅作為一個示例,實際的參數(shù)可以參考具體芯片的數(shù)據(jù)手冊。當(dāng)使用溫度傳
47、感器時,采樣周期必須大于30ms。溫度傳感器的偏移誤差比較大,在大多數(shù)實際應(yīng)用中需要進(jìn)行校準(zhǔn)。選擇溫度傳感器會自動地開啟片上參考電壓發(fā)生器作為溫度傳感器的電源。但是,它不會使能VREF+輸出或者影響作為模數(shù)轉(zhuǎn)換的參考電壓設(shè)置,溫度傳感器的參考電壓設(shè)置與其他通道相同。6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)圖6.2.12 片內(nèi)集成溫度傳感器溫度轉(zhuǎn)換函數(shù)寄存器名稱縮寫類型訪問方式偏移地址初始狀態(tài)ADC12控制寄存器0ADC12CTL0讀/寫字訪問00h0000hADC12控制寄存器1ADC12CTL1讀/寫字訪問02h0000hADC12控制寄存器2ADC12CTL2讀/寫字訪問04h0020hADC1
48、2中斷標(biāo)志寄存器ADC12IFG讀/寫字訪問0Ah0000hADC12中斷使能寄存器ADC12IE讀字訪問0Ch0000hADC12中斷向量寄存器ADC12IV讀字訪問0Eh0000hADC12緩沖寄存器ADC12MEM015讀/寫字訪問20h3Dh未定義ADC12存儲控制寄存器ADC12MCTL015讀/寫字節(jié)訪問10h1Fh未定義6.2.4 ADC12模塊寄存器ADC12模塊寄存器如表6.2.2所列,用戶可通過實際需要靈活配置ADC12的各功能模塊。表6.2.2 ADC12模塊寄存器列表(基址為0700h)6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)6.2.5 ADC12應(yīng)用舉例【例6.2.5】 利
49、用內(nèi)部2.5V電壓和AVSS作為轉(zhuǎn)換參考電壓。分析:本實例演示如何使用ADC12內(nèi)部生成電壓作為模數(shù)轉(zhuǎn)換參考電壓。采用單通道單次采樣模式,選擇A0通道作為輸入通道,參考電壓組合選擇內(nèi)部2.5V和AVSS,轉(zhuǎn)換結(jié)果存儲在ADC12MEM0緩沖寄存器中,實例程序代碼如下:#include void main(void) volatile unsigned int i; WDTCTL = WDTPW+WDTHOLD; / 關(guān)閉看門狗 P6SEL |= 0 x01; / 使能A0輸入通道 REFCTL0 &= REFMSTR; / 復(fù)位REFMSTR控制位以控制ADC12參考電壓控制寄存器 A
50、DC12CTL0 = ADC12ON+ADC12SHT02+ADC12REFON+ADC12REF2_5V; / 打開ADC12,設(shè)置采樣間隔,打開參考電壓產(chǎn)生器,并設(shè)置參考電壓為2.5V ADC12CTL1 = ADC12SHP; / 采樣保持觸發(fā)信號選擇采樣定時器 ADC12MCTL0 = ADC12SREF_1; / Vr+=Vref+ ,Vr-=AVss for ( i=0; i0 x30; i+); / 延遲以使參考電壓產(chǎn)生穩(wěn)定 ADC12CTL0 |= ADC12ENC; / 使能轉(zhuǎn)換 while (1) ADC12CTL0 |= ADC12SC; / 開始轉(zhuǎn)換while (!(A
51、DC12IFG & BIT0);_ _no_operation(); / 可在此處設(shè)置端點查看ADC12MEM0緩沖寄存器 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)【例6.2.6】 利用外部輸入電壓作為轉(zhuǎn)換參考電壓。分析:本實例演示如何使用ADC12外部輸入電壓作為模數(shù)轉(zhuǎn)換參考電壓。采用單通道單次采樣模式,選擇A0通道作為輸入通道,參考電壓組合選擇P5.0引腳輸入的正參考電壓VeREF+和AVSS。轉(zhuǎn)換結(jié)果存儲在ADC12MEM0緩沖寄存器中,實例程序代碼如下:#include void main(void) WDTCTL = WDTPW+WDTHOLD; / 關(guān)閉看門狗 P6SEL |=
52、0 x01; / 使能A0通道 ADC12CTL0 = ADC12ON+ADC12SHT0_2; / 打開ADC12模塊,設(shè)置采樣間隔 ADC12CTL1 = ADC12SHP; / 采樣保持觸發(fā)信號選擇采樣定時器 ADC12MCTL0 = ADC12SREF_2; / Vr+ = VeREF+(外部), Vr-=AVss ADC12CTL0 |= ADC12ENC; / 使能轉(zhuǎn)換 while (1) ADC12CTL0 |= ADC12SC; / 開始轉(zhuǎn)換 while (!(ADC12IFG & BIT0);_ _no_operation(); / 可在此處設(shè)置斷點查看ADC12ME
53、M0緩沖寄存器 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)【例6.2.7】 利用A10通道采樣內(nèi)部溫度傳感器,并將采樣的數(shù)值轉(zhuǎn)化為攝氏和華氏溫度。分析:本實例利用A10通道采樣內(nèi)部溫度傳感器,采樣參考電壓選擇內(nèi)部1.5V和AVSS,選擇單通道單次采樣模式,采樣結(jié)果存儲在ADC12MEM0緩沖寄存器中,實例程序代碼如下:#include long temp;volatile long IntDegF;volatile long IntDegC;void main(void) WDTCTL = WDTPW + WDTHOLD; / 關(guān)閉看門狗定時器 REFCTL0 &= REFMSTR; / 復(fù)位
54、REFMSTR控制位以控制ADC12參考電壓控制寄存器 ADC12CTL0 = ADC12SHT0_8 + ADC12REFON + ADC12ON; / 打開ADC12,設(shè)置采樣間隔,打開內(nèi)部參考電壓產(chǎn)生器,參考電壓設(shè)置為1.5V ADC12CTL1 = ADC12SHP; / 采樣保持觸發(fā)信號選擇采樣定時器 ADC12MCTL0 = ADC12SREF_1 + ADC12INCH_10; / A10通道作為輸入,采樣溫度 ADC12IE = 0 x001; / 使能ADC12IFG0中斷 _ _delay_cycles(75); / 延時75us以使參考電壓穩(wěn)定 ADC12CTL0 |=
55、ADC12ENC; / 使能轉(zhuǎn)換 while(1)6.2 模數(shù)轉(zhuǎn)換模塊(ADC12) ADC12CTL0 |= ADC12SC; / 開始采樣轉(zhuǎn)換 _ _bis_SR_register(LPM4_bits + GIE); / 進(jìn)入LPM4,并使能全局中斷 IntDegC = (temp - 1855) * 667) / 4096; / 采樣結(jié)果轉(zhuǎn)化為攝氏溫度 IntDegF = (temp - 1748) * 1200) / 4096;/ 采樣結(jié)果轉(zhuǎn)化為華氏溫度 _ _no_operation(); / 可在此處設(shè)置端點查看變量 #pragma vector=ADC12_VECTOR_ _in
56、terrupt void ADC12ISR (void) switch(_ _even_in_range(ADC12IV,34) case 6: / Vector 6: ADC12IFG0 temp = ADC12MEM0; / 讀取采樣存儲結(jié)果,自動清除中斷標(biāo)志位 _ _bic_SR_register_on_exit(LPM4_bits); / 退出低功耗模式 break; default: break; 6.2 模數(shù)轉(zhuǎn)換模塊(ADC12)6.3 比較器B(Comp_B)6.3.1 比較器B介紹比較器B模塊包含多達(dá)16個通道的比較功能,具有以下特性: 反相和同相端輸入多路復(fù)用器; 比較器輸出
57、可編程RC濾波器; 輸出提供給定時器A捕獲輸入; 端口輸入緩沖區(qū)程序控制; 中斷能力; 可選參考電壓發(fā)生器、電壓滯后發(fā)生器; 外部參考電壓輸入; 超低功耗比較器模式; 中斷驅(qū)動測量系統(tǒng)支持低功耗運(yùn)行。比較器B的結(jié)構(gòu)框圖如圖6.3.1所示。圖6.3.1 比較器B結(jié)構(gòu)框圖6.3 比較器B(Comp_B) 1模擬輸入開關(guān) 模擬輸入開關(guān)通過CBIPSEL和SBIMSEL控制位控制模擬信號的輸入,每個輸入通道都是相對獨(dú)立的,且都可以引入比較器B的“+”輸入端或“-”輸入端。通過CBSHORT控制位可以將比較器B的模擬信號輸入短路。比較器B的輸入端也可通過CBRSEL和CBEX控制位的配合引入內(nèi)部基準(zhǔn)電壓
58、生成器產(chǎn)生的參考電壓。 通過相應(yīng)寄存器的配置,比較器B可進(jìn)行如下模擬電壓信號的比較: 兩個外部輸入電壓信號的比較; 每個外部輸入電壓信號與內(nèi)部基準(zhǔn)電壓的比較。6.3 比較器B(Comp_B)2參考電壓發(fā)生器比較器B的參考電壓發(fā)生器的結(jié)構(gòu)框圖如圖6.3.2所示。參考電壓發(fā)生器通過接入梯形電阻電路或內(nèi)部共享電壓來達(dá)到產(chǎn)生不同參考電壓VREF的目的。如圖6.3.2所示,CBRSx控制位可選擇參考電壓的來源。若CBRSx為10,內(nèi)部梯形電阻電路電壓來自內(nèi)部共享電壓,內(nèi)部共享電壓可通過CBREFLx控制位產(chǎn)生1.5V、2.0V或2.5V電壓。若CBRSx為01,內(nèi)部梯形電阻電路電壓來自VCC,可通過CB
59、ON實現(xiàn)參考電源的開關(guān)。若CBRSx為00或11,內(nèi)部梯形電阻電路無電源可用,被禁止。若CBRSx為11,參考電壓來自內(nèi)部共享電壓。當(dāng)CBRSx不為11時,當(dāng)CBMRVS為0且CBOUT為1時,參考電壓來自VREF1;當(dāng)CBMRVS和CBOUT均為0時,參考電壓來自VREF0。當(dāng)梯形電阻電路可用時,可通過CBREF1和CBREF0控制位對參考電壓源進(jìn)行分壓,分壓倍數(shù)可為1/5、2/5、3/5、4/5、1/4、3/4、1/3、2/3、1/2和1。CBMRVS控制位實現(xiàn) 對 控 制 VR E F電 壓 的 來 源 信 號 的 控 制 。 若CBMRVS控制位為0,CBOUT控制VREF電壓信號的來
60、源;若CBMRVS控制位為1,CBMRVL控制位控制VREF電壓信號的來源。圖6.3.2 比較器B參考電壓發(fā)生器結(jié)構(gòu)框圖6.3 比較器B(Comp_B)3內(nèi)部濾波器比較器B的輸出可以選擇使用或不使用內(nèi)部RC濾波器。當(dāng)CBF控制位設(shè)為1時,比較器輸出信號經(jīng)過RC濾波,反之,不使用RC濾波。如果在比較器的輸入端,模擬電壓的電壓差很小,那么比較器的輸出會產(chǎn)生振蕩。如圖6.3.3所示,當(dāng)比較器“+”輸入端的電壓減少并越過“-”輸入端參考比較電壓時,若比較器輸出沒有經(jīng)過內(nèi)部濾波器的過濾,在電壓穿越的時刻,比較器輸出將會產(chǎn)生較大的振蕩;若比較器輸出經(jīng)過內(nèi)部濾波器的過濾,在電壓穿越的時刻,比較器的輸出振蕩較小。圖6.3.3 使用和未使用內(nèi)部濾波器的輸出波形比較示意圖6.3 比較器B(Comp_
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度電商團(tuán)隊數(shù)據(jù)安全合作協(xié)議
- 2025年度旅游產(chǎn)品銷售服務(wù)合同經(jīng)典范本
- 2025年度裝配式建筑砌磚施工技術(shù)協(xié)議
- 2025年度股東合作協(xié)議合同:XX教育科技企業(yè)股東合作協(xié)議及資源共享
- 2025年度綠色能源投資合作合同評審報告單模板
- 二零二五年度土地承包經(jīng)營權(quán)流轉(zhuǎn)項目風(fēng)險評估協(xié)議
- 2025年度物流行業(yè)人才培養(yǎng)長期合作協(xié)議
- 二零二五年度離婚補(bǔ)充協(xié)議:婚姻解除后共同財產(chǎn)分割及子女撫養(yǎng)安排
- 二零二五年度汽車經(jīng)銷商培訓(xùn)及市場推廣協(xié)議
- 2025年度電視劇導(dǎo)演聘用合同書(魔幻玄幻)
- 詩詞寫作入門課件
- 2023年上海青浦區(qū)區(qū)管企業(yè)統(tǒng)一招考聘用筆試題庫含答案解析
- 2023年高一物理期末考試卷(人教版)
- 2023版押品考試題庫必考點含答案
- 植物之歌觀后感
- 空氣能熱泵安裝示意圖
- 建筑工程施工質(zhì)量驗收規(guī)范檢驗批填寫全套表格示范填寫與說明
- 2020年中秋國慶假日文化旅游市場安全生產(chǎn)檢查表
- 辦公家具項目實施方案、供貨方案
- 七年級英語下冊閱讀理解10篇
- 節(jié)后開工收心會
評論
0/150
提交評論