S3C2410GPIO及AD轉(zhuǎn)換教學(xué)講解課件_第1頁(yè)
S3C2410GPIO及AD轉(zhuǎn)換教學(xué)講解課件_第2頁(yè)
S3C2410GPIO及AD轉(zhuǎn)換教學(xué)講解課件_第3頁(yè)
S3C2410GPIO及AD轉(zhuǎn)換教學(xué)講解課件_第4頁(yè)
S3C2410GPIO及AD轉(zhuǎn)換教學(xué)講解課件_第5頁(yè)
已閱讀5頁(yè),還剩81頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章嵌入式系統(tǒng)輸入/輸出設(shè)備接口第5章嵌入式系統(tǒng)輸入/輸出設(shè)備接口5.1GPIO(通用輸入/輸出接口)5.1GPIO(通用輸入/輸出接口)5.1.1GPIO原理與結(jié)構(gòu)GPIO(GeneralPurposeI/O,通用輸入/輸出接口)也稱為并行I/O(parallelI/O),是最基本的I/O形式,由一組輸入引腳、輸出引腳或輸入/輸出引腳組成,CPU對(duì)它們能夠進(jìn)行存取操作。有些GPIO引腳能夠通過(guò)軟件編程改變輸入/輸出方向。一個(gè)雙向GPIO端口(D0)的簡(jiǎn)化功能邏輯圖如圖5.1.1所示,圖中PORT為數(shù)據(jù)寄存器和DDR(DataDirectionRegister)為數(shù)據(jù)方向寄存器。5.1.1GPIO原理與結(jié)構(gòu)GPIO(GeneralP圖5.1.1雙向GPIO功能邏輯圖圖5.1.1雙向GPIO功能邏輯圖DDR設(shè)置端口的方向。如果DDR的輸出為1,則GPIO端口為輸出形式;如果DDR的輸出為零,則GPIO端口為輸入形式。寫(xiě)入WR—DDR信號(hào)能夠改變DDR的輸出狀態(tài)。DDR在微控制器地址空間中是一個(gè)映射單元。這種情況下,如果需要改變DDR,則需要將恰當(dāng)?shù)闹抵糜跀?shù)據(jù)總線的第0位(即D0),同時(shí)激活WR—DDR信號(hào)。讀DDR,就能得到DDR的狀態(tài),同時(shí)激活RD—DDR信號(hào)。如果設(shè)置PORT引腳端為輸出,則PORT寄存器控制著該引腳端狀態(tài)。如果將PORT引腳端設(shè)置為輸入,則此輸入引腳端的狀態(tài)由引腳端上的邏輯電路層來(lái)實(shí)現(xiàn)對(duì)它的控制。對(duì)PORT寄存器的寫(xiě)操作,需要激活WR—PORT信號(hào)。PORT寄存器也映射到微控制器的地址空間。需指出,即使當(dāng)端口設(shè)置為輸入時(shí),如果對(duì)PORT寄存器進(jìn)行寫(xiě)操作,并不會(huì)對(duì)該引腳產(chǎn)生影響。但從PORT寄存器的讀出,不管端口是什么方向,總會(huì)影響該引腳端的狀態(tài)。DDR設(shè)置端口的方向。如果DDR的輸出為1,則GPIO端口為5.1.2S3C2410A輸入/輸出端口編程實(shí)例S3C2410A共有117個(gè)多功能復(fù)用輸入/輸出端口(I/O口),分為端口A~端口H共8組。為了滿足不同系統(tǒng)設(shè)計(jì)的需要,每個(gè)I/O口可以很容易地通過(guò)軟件對(duì)進(jìn)行配置。每個(gè)引腳的功能必須在啟動(dòng)主程序之前進(jìn)行定義。如果一個(gè)引腳沒(méi)有使用復(fù)用功能,那么它可以配置為I/O口。注意:端口A除了作為功能口外,只能夠作為輸出口使用。在S3C2410A中,大多數(shù)的引腳端都是復(fù)用的,所以對(duì)于每一個(gè)引腳端都需要定義其功能。為了使用I/O口,首先需要定義引腳的功能。每個(gè)引腳端的功能通過(guò)端口控制寄存器(PnCON)來(lái)定義(配置)。與配置I/O口相關(guān)的寄存器包括:端口控制寄存器(GPACON~GPHCON)、端口數(shù)據(jù)寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、雜項(xiàng)控制寄存器以及外部中斷控制寄存器(EXTINTN)等。S3C2410A的I/O口配置情況請(qǐng)參考第3章如表3.4.1~3.4.7所列。5.1.2S3C2410A輸入/輸出端口編程實(shí)例S3C2下面介紹一個(gè)通過(guò)G口的控制發(fā)光二極管LED1和LED2輪流閃爍I/O口編程實(shí)例[徐英慧]。對(duì)I/O口的操作是通過(guò)對(duì)相關(guān)各個(gè)寄存器的讀/寫(xiě)實(shí)現(xiàn)的。要對(duì)寄存器進(jìn)行讀/寫(xiě)操作,首先要對(duì)寄存器進(jìn)行定義。有關(guān)I/O口相關(guān)寄存器的宏定義代碼如下://PortA控制寄存器#definerGPACON(*(volatileunsigned*)0x56000000)//PortA數(shù)據(jù)寄存器#definerGPADAT(*(volati1eunsigned*)0x56000004)//PortB控制寄存器#definerGPBCON(*(volatileunsigned*)0x56000010)//PortB數(shù)據(jù)寄存器#definerGPBDAT(*(volatileunsigned*)0x56000014)//PortB上拉電阻禁止寄存器

#definerGPBUP(*(volatileunsigned*)0x56000018)下面介紹一個(gè)通過(guò)G口的控制發(fā)光二極管LED1和LED2輪流閃//PortC控制寄存器#definerGPCCON(*(volatileunsigned*)0x56000020)//PortC數(shù)據(jù)寄存器#definerGPCDAT(*(volatileunsigned*)0x56000024)//PortC上拉電阻禁止寄存器#definerGPCUP(*(volatileunsigned*)0x56000028)//PortD控制寄存器#definerGPDCON(*(volatileunsigned*)0x56000030)//PortD數(shù)據(jù)寄存器#definerGPDDAT(*(volatileunsigned*)0x56000034)//PortD上拉電阻禁止寄存器#definerGPDUP(*(volatileunsigned*)0x56000038)//PortC控制寄存器//PortE控制寄存器#definerGPECON(*(volatileunsigned*)0x56000040)//PortE數(shù)據(jù)寄存器#definerGPEDAT(*(volatileunsigned*)0x56000044)//PortE上拉電阻禁止寄存器#definerGPEUP(*(volatileunsigned*)0x56000048)//PortF控制寄存器#definerGPFCON(*(volatileunsigned*)0x56000050)//PortF數(shù)據(jù)寄存器#definerGPFDAT(*(volatileunsigned*)0x56000054)//PortF上拉電阻禁止寄存器#definerGPFUP(*(volatileunsigned*)0x56000058)//PortE控制寄存器//PortG控制寄存器#definerGPGCON(*(volati1eunsigned*)0x56000060)//PortG數(shù)據(jù)寄存器#definerGPGDAT(*(volatileunsigned*)0x56000064)//PortG上拉電阻禁止寄存器#definerGPGUP(*(volatileunsigned*)0x56000068)//PortH控制寄存器#definerGPHCON(*(volatileunsigned*)0x56000070)//PortH數(shù)據(jù)寄存器#definerGPHDAT(*(volatileunsigned*)0x56000074)//PortH上拉電阻禁止寄存器#definerGPHUP(*(volatileunsigned*)0x56000078)//PortG控制寄存器要想實(shí)現(xiàn)對(duì)G口的配置,只要在地址0x56000060中給32位的每一位賦值就可以了。如果G口的某個(gè)引腳被配置為輸出引腳,在PDATG對(duì)應(yīng)的地址位寫(xiě)入1時(shí),該引腳輸出高電平;寫(xiě)入0時(shí)該引腳輸出低電平。如果該引腳被配置為功能引腳,則該引腳作為相應(yīng)的功能引腳使用。下面是實(shí)現(xiàn)LED1和LED2輪流閃爍的程序代碼。要想實(shí)現(xiàn)對(duì)G口的配置,只要在地址0x56000060中給3voidMain(void){intflag,i;TargetInit();//進(jìn)行硬件初始化操作,包括對(duì)I/O口的初始化操作for(;;){if(flag==0){for(i=0;i<1000000;i++);//延時(shí)rGPGCON=rGPGCON&0xfff0ffff|0x00050000;//配置第8、第

//9位為輸出引腳rGPGDAT=rGPGDAT&0xeff|0x200;//第8位輸出為低電平//第9位輸出高電平for(i=0;i<10000000;i++);//延時(shí)flag=1;}voidMain(void){else{for(i=0;i<1000000;i++);//延時(shí)rGPGCON=rGPGCON&0xfff0ffff(0x00050000;//配置第8、//第9位為輸出引腳rGPGDAT=rGPGDAT&Oxdff|0x100;//第8位輸出為高電平//第9位輸出低電平for(i=0;i<1000000;i++);//延時(shí)flag=0;}}}else{5.2A/D轉(zhuǎn)換器接口5.2A/D轉(zhuǎn)換器接口5.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理A/D轉(zhuǎn)換器(模/數(shù)轉(zhuǎn)換器)完成電模擬量到數(shù)字量的轉(zhuǎn)換。實(shí)現(xiàn)A/D轉(zhuǎn)換的方法很多,常用的方法有計(jì)數(shù)法、雙積分法和逐次逼近法等。1.計(jì)數(shù)式A/D轉(zhuǎn)換器原理計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)如圖5.2.1所示。其中,Vi是模擬輸入電壓,VO是D/A轉(zhuǎn)換器的輸出電壓,C是控制計(jì)數(shù)端,當(dāng)C=1(高電平)時(shí),計(jì)數(shù)器開(kāi)始計(jì)數(shù),C=0(低電平)時(shí),則停止計(jì)數(shù)。D7~D0是數(shù)字量輸出,數(shù)字輸出量同時(shí)驅(qū)動(dòng)一個(gè)D/A轉(zhuǎn)換器。5.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理A/D轉(zhuǎn)換器(圖5.2.1計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)圖5.2.1計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)計(jì)數(shù)式A/D轉(zhuǎn)換器的轉(zhuǎn)換過(guò)程如下:①首先/CLR(開(kāi)始轉(zhuǎn)換信號(hào))有效(由高電平變成低電平),使計(jì)數(shù)器復(fù)位,計(jì)數(shù)器輸出數(shù)字信號(hào)為,這個(gè)的輸出送至8位D/A轉(zhuǎn)換器,8位D/A轉(zhuǎn)換器也輸出0V模擬信號(hào)。②當(dāng)/CLR恢復(fù)為高電平時(shí).計(jì)數(shù)器準(zhǔn)備計(jì)數(shù)。此時(shí),在比較器輸入端上待轉(zhuǎn)換的模擬輸入電壓Vi大于VO(0V),比較器輸出高電平,使計(jì)數(shù)控制信號(hào)C為1。這樣,計(jì)數(shù)器開(kāi)始計(jì)數(shù)。③從此計(jì)數(shù)器的輸出不斷增加,D/A轉(zhuǎn)換器輸入端得到的數(shù)字量也不斷增加,致使輸出電壓VO不斷上升。在VO<Vi時(shí),比較器的輸出總是保持高電平,計(jì)數(shù)器不斷地計(jì)數(shù)。④當(dāng)VO上升到某值時(shí),出現(xiàn)VO>Vi的情況時(shí),此時(shí),比較器的輸出為低電平,使計(jì)數(shù)控制信號(hào)C為0,計(jì)數(shù)器停止計(jì)數(shù)。這時(shí)候數(shù)字輸出量D7~D0就是與模擬電壓等效的數(shù)字量。計(jì)數(shù)控制信號(hào)由高變低的負(fù)跳變也是A/D轉(zhuǎn)換的結(jié)束信號(hào),表示已完成一次A/D轉(zhuǎn)換。計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)簡(jiǎn)單,但轉(zhuǎn)換速度較慢。計(jì)數(shù)式A/D轉(zhuǎn)換器的轉(zhuǎn)換過(guò)程如下:2.雙積分式A/D轉(zhuǎn)換器原理雙積分式A/D轉(zhuǎn)換器對(duì)輸入模擬電壓和參考電壓進(jìn)行兩次積分,將電壓變換成與其成正比的時(shí)間間隔,利用時(shí)鐘脈沖和計(jì)數(shù)器測(cè)出其時(shí)間間隔,完成A/D轉(zhuǎn)換。雙積分式A/D轉(zhuǎn)換器主要包括積分器、比較器、計(jì)數(shù)器和標(biāo)準(zhǔn)電壓源等部件,其電路結(jié)構(gòu)圖如圖5.2.2(a)所示。雙積分式A/D轉(zhuǎn)換器的轉(zhuǎn)換過(guò)程如下:首先對(duì)輸入待測(cè)的模擬電壓Vi進(jìn)行固定時(shí)間的積分;然后轉(zhuǎn)換到標(biāo)準(zhǔn)電壓VR進(jìn)行固定斜率的反向積分(定值積分),如圖5.2.2(b)所示。反向積分進(jìn)行到一定時(shí)間,便返回起始值。從圖5.2.2(b)中可看出對(duì)標(biāo)準(zhǔn)電壓VR進(jìn)行反向積分的時(shí)間T2正比于輸入模擬電壓,輸入模擬電壓越大,反向積分回到起始值的時(shí)間T越長(zhǎng),有Vi=(T2/T1)VR。用標(biāo)準(zhǔn)時(shí)鐘脈沖測(cè)定反向積分時(shí)間(如計(jì)數(shù)器),就可以得到對(duì)應(yīng)于輸入模擬電壓的數(shù)字量,實(shí)現(xiàn)A/D轉(zhuǎn)換。雙積分式A/D轉(zhuǎn)換器具有很強(qiáng)的抗工頻干擾能力,轉(zhuǎn)換精度高,但速度較慢。2.雙積分式A/D轉(zhuǎn)換器原理圖5.2.2(a)雙積分式A/D轉(zhuǎn)換器電路結(jié)構(gòu)圖

雙積分式A/D轉(zhuǎn)換圖圖5.2.2(a)雙積分式A/D轉(zhuǎn)換器電路結(jié)構(gòu)圖雙積分式圖5.2.2

(b)積分輸出波形

圖5.2.2(b)積分輸出波形3.逐次逼近式A/D轉(zhuǎn)換器原理逐次逼近式A/D轉(zhuǎn)換器電路結(jié)構(gòu)如圖5.2.3所示,其工作過(guò)程可與天平稱重物類比,圖中的電壓比較器相當(dāng)于天平,被測(cè)電壓Ux相當(dāng)于重物,基準(zhǔn)電壓Ur相當(dāng)于電壓法碼。該方案具有各種規(guī)格的按8421編碼的二進(jìn)制電壓法碼Ur,根據(jù)Ux<Ur和Ux>Ur,比較器有不同的輸出以打開(kāi)或關(guān)閉逐次逼近寄存器的各位。輸出從大到小的基準(zhǔn)電壓法碼,與被測(cè)電壓Ux比較,并逐漸減小其差值,使之逼近平衡。當(dāng)Ux=Ur時(shí),比較器輸出為零,相當(dāng)于天平平衡,最后以數(shù)字顯示的平衡值即為被測(cè)電壓值。逐次逼近式A/D轉(zhuǎn)換器轉(zhuǎn)換速度快,轉(zhuǎn)換精度較高,對(duì)N位A/D轉(zhuǎn)換只需N個(gè)時(shí)鐘脈沖即可完成,可用于測(cè)量微秒級(jí)的過(guò)渡過(guò)程的變化,是在計(jì)算機(jī)系統(tǒng)中采用最多的一種A/D轉(zhuǎn)換方法。3.逐次逼近式A/D轉(zhuǎn)換器原理圖5.2.3逐次逼近式A/D轉(zhuǎn)換器電路結(jié)構(gòu)圖5.2.3逐次逼近式A/D轉(zhuǎn)換器電路結(jié)構(gòu)4.A/D轉(zhuǎn)換器的主要指標(biāo)(1)分辨率(Resolution)分辨率用來(lái)反映A/D轉(zhuǎn)換器對(duì)輸入電壓微小變化的響應(yīng)能力,通常用數(shù)字輸出最低位(LSB)所對(duì)應(yīng)的模擬輸入的電平值表示。n位A/D轉(zhuǎn)換能反應(yīng)1/2n滿量程的模擬輸入電平。分辨率直接與轉(zhuǎn)換器的位數(shù)有關(guān),一般也可簡(jiǎn)單地用數(shù)字量的位數(shù)來(lái)表示分辨率,即n位二進(jìn)制數(shù),最低位所具有的權(quán)值,就是它的分辨率。值得注意的是,分辨率與精度是兩個(gè)不同的概念,不要把兩者相混淆。即使分辨率很高,也可能由于溫度漂移、線性度等原因,而使其精度不夠高。(2)精度(Accuracy)精度有絕對(duì)精度(AbsoluteAccuracy)和相對(duì)精度(RelativeAccuracy)兩種表示方法。①絕對(duì)精度:在一個(gè)轉(zhuǎn)換器中,對(duì)應(yīng)于一個(gè)數(shù)字量的實(shí)際模擬輸入電壓和理想的模擬輸入電壓之差并非是一個(gè)常數(shù)。把它們之間的差的最大值,定義為“絕對(duì)誤差”。通常以數(shù)字量的最小有效位(LSB)的分4.A/D轉(zhuǎn)換器的主要指標(biāo)數(shù)值來(lái)表示絕對(duì)精度,如±1LSB。絕對(duì)誤差包括量化精度和其他所有精度。②相對(duì)精度是指整個(gè)轉(zhuǎn)換范圍內(nèi),任一數(shù)字量所對(duì)應(yīng)的模擬輸入量的實(shí)際值與理論值之差,用模擬電壓滿量程的百分比表示。例如,滿量程為l0V,10位A/D芯片,若其絕對(duì)精度為±1/2LSB,則其最小有效位的量化單位為9.77mV,其絕對(duì)精度為4.88mV,其相對(duì)精度為0.048%。③轉(zhuǎn)換時(shí)間(ConversionTime)轉(zhuǎn)換時(shí)間是指完成一次A/D轉(zhuǎn)換所需的時(shí)間,即由發(fā)出啟動(dòng)轉(zhuǎn)換命令信號(hào)到轉(zhuǎn)換結(jié)束信號(hào)開(kāi)始有效的時(shí)間間隔。轉(zhuǎn)換時(shí)間的倒數(shù)稱為轉(zhuǎn)換速率。例如AD570的轉(zhuǎn)換時(shí)間為25us,其轉(zhuǎn)換速率為40kHz。④量程量程是指所能轉(zhuǎn)換的模擬輸入電壓范圍,分單極性、雙極性兩種類型。例如,單極性的量程為0~+5V,0~+10V,0~+20V;雙極性的量程為-5~+5V,-10~+l0V。數(shù)值來(lái)表示絕對(duì)精度,如±1LSB。絕對(duì)誤差包括量化精5.2.2S3C2410A的A/D轉(zhuǎn)換器1.S3C2410AA/D轉(zhuǎn)換器和觸摸屏接口電路S3C2410A包含一個(gè)8通道的A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)見(jiàn)圖5.2.4,該電路可以將模擬輸入信號(hào)轉(zhuǎn)換成10位數(shù)字編碼(10位分辨率),差分線性誤差為1.0LSB,積分線性誤差為2.0LSB。在A/D轉(zhuǎn)換時(shí)鐘頻率為2.5MHz時(shí),其最大轉(zhuǎn)換率為500KSPS(KiloSamplesPerSecond,千采樣點(diǎn)每秒),輸入電壓范圍是0~3.3V。A/D轉(zhuǎn)換器支持片上操作、采樣保持功能和掉電模式。S3C2410A的A/D轉(zhuǎn)換器和觸摸屏接口電路如圖5.2.4所示5.2.2S3C2410A的A/D轉(zhuǎn)換器1.S3C241圖5.2.4S3C2410A的A/D轉(zhuǎn)換器和觸摸屏接口電路

圖5.2.4S3C2410A的A/D轉(zhuǎn)換器和觸摸屏接口電2.與S3C2410AA/D轉(zhuǎn)換器相關(guān)的寄存器使用S3C2410A的A/D轉(zhuǎn)換器進(jìn)行模擬信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)換,需要配置以下相關(guān)的寄存器。(1)ADC控制寄存器(ADCCON)ADC控制寄存器(ADCCON)是一個(gè)16位的可讀/寫(xiě)的寄存器,地址為0x58000000,復(fù)位值為0x3FC4。ADCCON位的功能描述如表5.2.1所列。2.與S3C2410AA/D轉(zhuǎn)換器相關(guān)的寄存器表5.2.1ADC控制寄存器(ADCCON)的位功能

ADCCON符號(hào)位描述初始狀態(tài)ECFLG[15]A/D轉(zhuǎn)換狀態(tài)標(biāo)志(只讀)。0:A/D轉(zhuǎn)換中;1:A/D轉(zhuǎn)換結(jié)束0PRSCEN[14]A/D轉(zhuǎn)換器前置分頻器使能控制。0:禁止;1:使能0PRSCVL[13:6]A/D轉(zhuǎn)換器前置分頻器數(shù)值設(shè)置,數(shù)值取值范圍:1~255。注意:當(dāng)前置分頻器數(shù)值為N時(shí),分頻數(shù)值為N+1。0xFFSEL_MUX[5:3]模擬輸入通道選擇。

000:AIN0;001:AIN1;010:AIN2;011:AIN3;100:AIN4;101:AIN5;110:AIN6;111:AIN70表5.2.1ADC控制寄存器(ADCCON)的位功能ASTDBM[2]備用(Standby)模式選擇。

0:正常模式;1:備用模式1READ_START[1]利用讀操作來(lái)啟動(dòng)A/D轉(zhuǎn)換。

0:不使能讀操作啟動(dòng);1:使能讀操作啟動(dòng)0ENABLE_START[0]A/D轉(zhuǎn)換通過(guò)將該位置1來(lái)啟動(dòng),如果READ_START有效(READ_START置1),則該位無(wú)效。

0:不操作;1:?jiǎn)?dòng)A/D轉(zhuǎn)換,A/D轉(zhuǎn)換開(kāi)始后該位自動(dòng)清零0STDBM[2]備用(Standby)模式選擇。1READ_(2)ADC觸摸屏控制寄存器(ADCTSC)ADC觸摸屏控制寄存器(ADCTSC)是一個(gè)可讀/寫(xiě)的寄存器,地址為0x58000004,復(fù)位值為0x058。ADCTSC的位功能描述如表5.2.2所列。在正常A/D轉(zhuǎn)換時(shí),AUTO_PST和XY_PST都置成0即可,其他各位與觸摸屏有關(guān),不需要進(jìn)行設(shè)置。(2)ADC觸摸屏控制寄存器(ADCTSC)表5.2.2ADC控制寄存器(ADCTSC)的位功能

ADCTSC符號(hào)位描述初始狀態(tài)Reserved[8保留位0YM_SEN[7]選擇YMON的輸出值。

0:YMON輸出0(YM=高阻)

1:YMON輸出1(YM=GND)0YP_SEN[6]選擇nYPON的輸出值。

0:nYPON輸出0(YP=外部電壓)

1:nYPON輸出1(YP連接到AIN[5])1XM_SEN[5]選擇XMON的輸出值。

0:XMON輸出0(XM=高阻)

1:XMON輸出1(XM=GND)0表5.2.2ADC控制寄存器(ADCTSC)的位功能AXP_SEN[4]選擇nXPON的輸出值。

0:nXPON輸出0(XP=外部電壓)

1:nXPON輸出1(XP連接AIN[7])0PULL_UP[3]上拉開(kāi)關(guān)使能。

0:XP上拉使能;1:XP上拉不使能1AUTO_P5T[2]X位置和Y位置自動(dòng)順序轉(zhuǎn)換。

0:正常ADC轉(zhuǎn)換模式

1:自動(dòng)順序X/Y位置轉(zhuǎn)換模式0XY_PST[1:0]X位置或Y位置的手動(dòng)測(cè)量。

00:無(wú)操作模式;01:X位置測(cè)量

10:Y位置測(cè)量;11:等待中斷模式0XP_SEN[4]選擇nXPON的輸出值。0PULL_UP[(3)ADC啟動(dòng)延時(shí)寄存器(ADCDLY)ADC啟動(dòng)延時(shí)寄存器(ADCDLY)是一個(gè)可讀/寫(xiě)的寄存器,地址為0x58000008,復(fù)位值為0x00FF。ADCDLY的位功能描述如表5.2.3所列。表5.2.3ADC啟動(dòng)延時(shí)寄存器(ADCDLY)的位功能ADCDLY符號(hào)位描述DELAY[15:0](1)在正常轉(zhuǎn)換模式、分開(kāi)的X/Y位置轉(zhuǎn)換模式和X/Y位置自動(dòng)(順序)轉(zhuǎn)換模式的X/Y位置轉(zhuǎn)換延時(shí)值。(2)在等待中斷模式:當(dāng)在此模式按下觸筆時(shí),這個(gè)寄存器在幾ms時(shí)間間隔內(nèi)產(chǎn)生用于進(jìn)行X/Y方向自動(dòng)轉(zhuǎn)換的中斷信號(hào)(INT_TC)。注意:不能使用零位值(0x0000)(3)ADC啟動(dòng)延時(shí)寄存器(ADCDLY)位描述DELAY(4)ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0和ADCDAT1)S3C2410A有ADCDAT0和ADCDAT1兩個(gè)ADC轉(zhuǎn)換數(shù)據(jù)寄存器。ADCDAT0和ADCDAT1為只讀寄存器,地址分別為0x5800000C和0x58000010。在觸摸屏應(yīng)用中,分別使用ADCDAT0和ADCDAT1保存X位置和Y位置的轉(zhuǎn)換數(shù)據(jù)。對(duì)于正常的A/D轉(zhuǎn)換,使用ADCDAT0來(lái)保存轉(zhuǎn)換后的數(shù)據(jù)。ADCDAT0的位功能描述如表5.2.4所列,ADCDAT1的位功能描述如表5.2.5所列,除了位[9:0]為Y位置的轉(zhuǎn)換數(shù)據(jù)值以外,其他與ADCDAT0類似。通過(guò)讀取該寄存器的位[9:0],可以獲得轉(zhuǎn)換后的數(shù)字量。(4)ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0和ADCDAT1)表5.2.4ADCDAT0的位功能

ADCDATO位名位描述UPDOWN[15]在等待中斷模式時(shí),觸筆的狀態(tài)為上還是下。

0:觸筆為下?tīng)顟B(tài);1:觸筆為上狀態(tài)AUTO_PST[14]X位置和Y位置的自動(dòng)順序轉(zhuǎn)換。

0:正常A/D轉(zhuǎn)換;1:X/Y位置自動(dòng)順序測(cè)量XY_PST[13:12]手動(dòng)測(cè)量X位置或Y位置。

00:無(wú)操作模式;01:X位置測(cè)量

10:Y位置測(cè)量;11:等待中斷模式Reserved[11:10]保留XPDATA(正常ADC)[9:0]X位置的轉(zhuǎn)換數(shù)據(jù)值(包括正常A/D轉(zhuǎn)換的數(shù)據(jù)值)。取值范圍:0~3FF表5.2.4ADCDAT0的位功能ADCDATO位名位表5.2.5ADCDAT1的位功能描述ADCDATO位名位描述[15:10]與ADCDAT0的位功能相同YPDATA(正常ADC)[9:0]Y位置的轉(zhuǎn)換數(shù)據(jù)值(包括正常A/D轉(zhuǎn)換的數(shù)據(jù)值)。取值范圍:0~3FF表5.2.5ADCDAT1的位功能描述ADCDATO位名5.2.3S3C2410AA/D接口編程實(shí)例下面介紹一個(gè)A/D接口編程實(shí)例[徐英慧],其功能實(shí)現(xiàn)從A/D轉(zhuǎn)換器的通道0獲取模擬數(shù)據(jù),并將轉(zhuǎn)換后的數(shù)字量以波形的形式在LCD上顯示。模擬輸入信號(hào)的電壓范圍必須是0~2.5V。程序如下:1.定義與A/D轉(zhuǎn)換相關(guān)的寄存器定義如下:#definerADCCON(*(volatileunsigned*)0x58000000)//ADC控制寄存器#definerADCTSC(*(volatileunsigned*)0x58000004)//ADC觸摸屏控制寄存器#definerADCDLY(*(volatileunsigned*)0x58000008)//ADC啟動(dòng)或間隔延時(shí)寄存器#definerADCDAT0(*(volatileunsigned*)0x5800000c)//ADC轉(zhuǎn)換數(shù)據(jù)寄存器0#definerADCDAT1(*(volati1eunsigned*)0x58000010)//ADC轉(zhuǎn)換數(shù)據(jù)寄存器5.2.3S3C2410AA/D接口編程實(shí)例下面介紹一2.對(duì)A/D轉(zhuǎn)換器進(jìn)行初始化程序中的參數(shù)ch表示所選擇的通道號(hào),程序如下:voidAD_Init(unsignedcharch){rADCDLY=100;//ADC啟動(dòng)或間隔延時(shí)rADCTSC=0;//選擇ADC模式rADCCON=(1<<14)|(49<<6)|(ch<<3)|(0<<2)|(0<<1)|(0);//設(shè)置ADC控制寄存器}3.獲取A/D的轉(zhuǎn)換值程序中的參數(shù)ch表示所選擇的通道號(hào),程序如下:2.對(duì)A/D轉(zhuǎn)換器進(jìn)行初始化intGet_AD(unsignedcharch){inti;intval=0;if(ch>7)return0;//通道不能大于7for(i=0;i<16;i++){//為轉(zhuǎn)換準(zhǔn)確,轉(zhuǎn)換16次rADCCON|=0x1;//啟動(dòng)A/D轉(zhuǎn)換rADCCON=rADCCON&0xffc7|(ch<<3);while(rADCCON&0x1);//避免第一個(gè)標(biāo)志出錯(cuò)while(?。╮ADCCON&0x8000));//避免第二個(gè)標(biāo)志出錯(cuò)val+=(rADCDAT0&0x03ff);Delay(10);}return(val>>4);//為轉(zhuǎn)換準(zhǔn)確,除以16取均值}intGet_AD(unsignedcharch){4.主函數(shù)實(shí)現(xiàn)將轉(zhuǎn)換后的數(shù)據(jù)在LCD上以波形的方式顯示,程序如下:voidMain(void){inti,P=0;unsignedshortbuffer[Length];//顯示緩沖區(qū)Target_Init();GUI_Init();//圖形界面初始化Set_Color(GUI_BLUE);//畫(huà)顯示背景界面Fill_Rect(0,0,319,239);Set_Color(GUI_RED);DrawLine(0,119,319,119);Set_Font(&GUI_Font8x16);//設(shè)定字體類型APISet_Color(GUI_WHITE);Set_BKColor(GUI_BLUE);//設(shè)定背景顏色APIFill_Rect(0,0,319,3);4.主函數(shù)Fill_Rect(0,0,3,239);Fill_Rect(316,0,319,239);Fill_Rect(0,236,319,239);Disp_String(“ADCDEMO”,(320–8*8)/2,30);for(i=0;i<Length;i++)buffer[i]=0;while(1){p=0;for(i=0;i<Length;i++){buffer[p]=Get_AD(0);//從通道獲取轉(zhuǎn)換后的數(shù)據(jù)Delay(20);p++;}p=0;for(i=0;i(Length;i++){Uart_Printf(“%d\n”,buffer[p]);Fill_Rect(0,0,3,239);P++;}P=0;for(i=0;i(Length;i++){buffer[p]=AD2Y(buffer[p]);P++;}P=0;for(i=0;i<Length;i++){Uart_Printf("量化后:%d\n",buffer[p]);P++;}ShowWavebuffer(buffer);//在LCD上顯示A/D轉(zhuǎn)換后的波形Delay(1000);}}P++;此課件下載可自行編輯修改,供參考!感謝您的支持,我們努力做得更好!此課件下載可自行編輯修改,供參考!第5章嵌入式系統(tǒng)輸入/輸出設(shè)備接口第5章嵌入式系統(tǒng)輸入/輸出設(shè)備接口5.1GPIO(通用輸入/輸出接口)5.1GPIO(通用輸入/輸出接口)5.1.1GPIO原理與結(jié)構(gòu)GPIO(GeneralPurposeI/O,通用輸入/輸出接口)也稱為并行I/O(parallelI/O),是最基本的I/O形式,由一組輸入引腳、輸出引腳或輸入/輸出引腳組成,CPU對(duì)它們能夠進(jìn)行存取操作。有些GPIO引腳能夠通過(guò)軟件編程改變輸入/輸出方向。一個(gè)雙向GPIO端口(D0)的簡(jiǎn)化功能邏輯圖如圖5.1.1所示,圖中PORT為數(shù)據(jù)寄存器和DDR(DataDirectionRegister)為數(shù)據(jù)方向寄存器。5.1.1GPIO原理與結(jié)構(gòu)GPIO(GeneralP圖5.1.1雙向GPIO功能邏輯圖圖5.1.1雙向GPIO功能邏輯圖DDR設(shè)置端口的方向。如果DDR的輸出為1,則GPIO端口為輸出形式;如果DDR的輸出為零,則GPIO端口為輸入形式。寫(xiě)入WR—DDR信號(hào)能夠改變DDR的輸出狀態(tài)。DDR在微控制器地址空間中是一個(gè)映射單元。這種情況下,如果需要改變DDR,則需要將恰當(dāng)?shù)闹抵糜跀?shù)據(jù)總線的第0位(即D0),同時(shí)激活WR—DDR信號(hào)。讀DDR,就能得到DDR的狀態(tài),同時(shí)激活RD—DDR信號(hào)。如果設(shè)置PORT引腳端為輸出,則PORT寄存器控制著該引腳端狀態(tài)。如果將PORT引腳端設(shè)置為輸入,則此輸入引腳端的狀態(tài)由引腳端上的邏輯電路層來(lái)實(shí)現(xiàn)對(duì)它的控制。對(duì)PORT寄存器的寫(xiě)操作,需要激活WR—PORT信號(hào)。PORT寄存器也映射到微控制器的地址空間。需指出,即使當(dāng)端口設(shè)置為輸入時(shí),如果對(duì)PORT寄存器進(jìn)行寫(xiě)操作,并不會(huì)對(duì)該引腳產(chǎn)生影響。但從PORT寄存器的讀出,不管端口是什么方向,總會(huì)影響該引腳端的狀態(tài)。DDR設(shè)置端口的方向。如果DDR的輸出為1,則GPIO端口為5.1.2S3C2410A輸入/輸出端口編程實(shí)例S3C2410A共有117個(gè)多功能復(fù)用輸入/輸出端口(I/O口),分為端口A~端口H共8組。為了滿足不同系統(tǒng)設(shè)計(jì)的需要,每個(gè)I/O口可以很容易地通過(guò)軟件對(duì)進(jìn)行配置。每個(gè)引腳的功能必須在啟動(dòng)主程序之前進(jìn)行定義。如果一個(gè)引腳沒(méi)有使用復(fù)用功能,那么它可以配置為I/O口。注意:端口A除了作為功能口外,只能夠作為輸出口使用。在S3C2410A中,大多數(shù)的引腳端都是復(fù)用的,所以對(duì)于每一個(gè)引腳端都需要定義其功能。為了使用I/O口,首先需要定義引腳的功能。每個(gè)引腳端的功能通過(guò)端口控制寄存器(PnCON)來(lái)定義(配置)。與配置I/O口相關(guān)的寄存器包括:端口控制寄存器(GPACON~GPHCON)、端口數(shù)據(jù)寄存器(GPADAT~GPHDAT)、端口上拉寄存器(GPBUP~GPHUP)、雜項(xiàng)控制寄存器以及外部中斷控制寄存器(EXTINTN)等。S3C2410A的I/O口配置情況請(qǐng)參考第3章如表3.4.1~3.4.7所列。5.1.2S3C2410A輸入/輸出端口編程實(shí)例S3C2下面介紹一個(gè)通過(guò)G口的控制發(fā)光二極管LED1和LED2輪流閃爍I/O口編程實(shí)例[徐英慧]。對(duì)I/O口的操作是通過(guò)對(duì)相關(guān)各個(gè)寄存器的讀/寫(xiě)實(shí)現(xiàn)的。要對(duì)寄存器進(jìn)行讀/寫(xiě)操作,首先要對(duì)寄存器進(jìn)行定義。有關(guān)I/O口相關(guān)寄存器的宏定義代碼如下://PortA控制寄存器#definerGPACON(*(volatileunsigned*)0x56000000)//PortA數(shù)據(jù)寄存器#definerGPADAT(*(volati1eunsigned*)0x56000004)//PortB控制寄存器#definerGPBCON(*(volatileunsigned*)0x56000010)//PortB數(shù)據(jù)寄存器#definerGPBDAT(*(volatileunsigned*)0x56000014)//PortB上拉電阻禁止寄存器

#definerGPBUP(*(volatileunsigned*)0x56000018)下面介紹一個(gè)通過(guò)G口的控制發(fā)光二極管LED1和LED2輪流閃//PortC控制寄存器#definerGPCCON(*(volatileunsigned*)0x56000020)//PortC數(shù)據(jù)寄存器#definerGPCDAT(*(volatileunsigned*)0x56000024)//PortC上拉電阻禁止寄存器#definerGPCUP(*(volatileunsigned*)0x56000028)//PortD控制寄存器#definerGPDCON(*(volatileunsigned*)0x56000030)//PortD數(shù)據(jù)寄存器#definerGPDDAT(*(volatileunsigned*)0x56000034)//PortD上拉電阻禁止寄存器#definerGPDUP(*(volatileunsigned*)0x56000038)//PortC控制寄存器//PortE控制寄存器#definerGPECON(*(volatileunsigned*)0x56000040)//PortE數(shù)據(jù)寄存器#definerGPEDAT(*(volatileunsigned*)0x56000044)//PortE上拉電阻禁止寄存器#definerGPEUP(*(volatileunsigned*)0x56000048)//PortF控制寄存器#definerGPFCON(*(volatileunsigned*)0x56000050)//PortF數(shù)據(jù)寄存器#definerGPFDAT(*(volatileunsigned*)0x56000054)//PortF上拉電阻禁止寄存器#definerGPFUP(*(volatileunsigned*)0x56000058)//PortE控制寄存器//PortG控制寄存器#definerGPGCON(*(volati1eunsigned*)0x56000060)//PortG數(shù)據(jù)寄存器#definerGPGDAT(*(volatileunsigned*)0x56000064)//PortG上拉電阻禁止寄存器#definerGPGUP(*(volatileunsigned*)0x56000068)//PortH控制寄存器#definerGPHCON(*(volatileunsigned*)0x56000070)//PortH數(shù)據(jù)寄存器#definerGPHDAT(*(volatileunsigned*)0x56000074)//PortH上拉電阻禁止寄存器#definerGPHUP(*(volatileunsigned*)0x56000078)//PortG控制寄存器要想實(shí)現(xiàn)對(duì)G口的配置,只要在地址0x56000060中給32位的每一位賦值就可以了。如果G口的某個(gè)引腳被配置為輸出引腳,在PDATG對(duì)應(yīng)的地址位寫(xiě)入1時(shí),該引腳輸出高電平;寫(xiě)入0時(shí)該引腳輸出低電平。如果該引腳被配置為功能引腳,則該引腳作為相應(yīng)的功能引腳使用。下面是實(shí)現(xiàn)LED1和LED2輪流閃爍的程序代碼。要想實(shí)現(xiàn)對(duì)G口的配置,只要在地址0x56000060中給3voidMain(void){intflag,i;TargetInit();//進(jìn)行硬件初始化操作,包括對(duì)I/O口的初始化操作for(;;){if(flag==0){for(i=0;i<1000000;i++);//延時(shí)rGPGCON=rGPGCON&0xfff0ffff|0x00050000;//配置第8、第

//9位為輸出引腳rGPGDAT=rGPGDAT&0xeff|0x200;//第8位輸出為低電平//第9位輸出高電平for(i=0;i<10000000;i++);//延時(shí)flag=1;}voidMain(void){else{for(i=0;i<1000000;i++);//延時(shí)rGPGCON=rGPGCON&0xfff0ffff(0x00050000;//配置第8、//第9位為輸出引腳rGPGDAT=rGPGDAT&Oxdff|0x100;//第8位輸出為高電平//第9位輸出低電平for(i=0;i<1000000;i++);//延時(shí)flag=0;}}}else{5.2A/D轉(zhuǎn)換器接口5.2A/D轉(zhuǎn)換器接口5.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理A/D轉(zhuǎn)換器(模/數(shù)轉(zhuǎn)換器)完成電模擬量到數(shù)字量的轉(zhuǎn)換。實(shí)現(xiàn)A/D轉(zhuǎn)換的方法很多,常用的方法有計(jì)數(shù)法、雙積分法和逐次逼近法等。1.計(jì)數(shù)式A/D轉(zhuǎn)換器原理計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)如圖5.2.1所示。其中,Vi是模擬輸入電壓,VO是D/A轉(zhuǎn)換器的輸出電壓,C是控制計(jì)數(shù)端,當(dāng)C=1(高電平)時(shí),計(jì)數(shù)器開(kāi)始計(jì)數(shù),C=0(低電平)時(shí),則停止計(jì)數(shù)。D7~D0是數(shù)字量輸出,數(shù)字輸出量同時(shí)驅(qū)動(dòng)一個(gè)D/A轉(zhuǎn)換器。5.2.1A/D(模/數(shù))轉(zhuǎn)換的方法和原理A/D轉(zhuǎn)換器(圖5.2.1計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)圖5.2.1計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)計(jì)數(shù)式A/D轉(zhuǎn)換器的轉(zhuǎn)換過(guò)程如下:①首先/CLR(開(kāi)始轉(zhuǎn)換信號(hào))有效(由高電平變成低電平),使計(jì)數(shù)器復(fù)位,計(jì)數(shù)器輸出數(shù)字信號(hào)為,這個(gè)的輸出送至8位D/A轉(zhuǎn)換器,8位D/A轉(zhuǎn)換器也輸出0V模擬信號(hào)。②當(dāng)/CLR恢復(fù)為高電平時(shí).計(jì)數(shù)器準(zhǔn)備計(jì)數(shù)。此時(shí),在比較器輸入端上待轉(zhuǎn)換的模擬輸入電壓Vi大于VO(0V),比較器輸出高電平,使計(jì)數(shù)控制信號(hào)C為1。這樣,計(jì)數(shù)器開(kāi)始計(jì)數(shù)。③從此計(jì)數(shù)器的輸出不斷增加,D/A轉(zhuǎn)換器輸入端得到的數(shù)字量也不斷增加,致使輸出電壓VO不斷上升。在VO<Vi時(shí),比較器的輸出總是保持高電平,計(jì)數(shù)器不斷地計(jì)數(shù)。④當(dāng)VO上升到某值時(shí),出現(xiàn)VO>Vi的情況時(shí),此時(shí),比較器的輸出為低電平,使計(jì)數(shù)控制信號(hào)C為0,計(jì)數(shù)器停止計(jì)數(shù)。這時(shí)候數(shù)字輸出量D7~D0就是與模擬電壓等效的數(shù)字量。計(jì)數(shù)控制信號(hào)由高變低的負(fù)跳變也是A/D轉(zhuǎn)換的結(jié)束信號(hào),表示已完成一次A/D轉(zhuǎn)換。計(jì)數(shù)式A/D轉(zhuǎn)換器結(jié)構(gòu)簡(jiǎn)單,但轉(zhuǎn)換速度較慢。計(jì)數(shù)式A/D轉(zhuǎn)換器的轉(zhuǎn)換過(guò)程如下:2.雙積分式A/D轉(zhuǎn)換器原理雙積分式A/D轉(zhuǎn)換器對(duì)輸入模擬電壓和參考電壓進(jìn)行兩次積分,將電壓變換成與其成正比的時(shí)間間隔,利用時(shí)鐘脈沖和計(jì)數(shù)器測(cè)出其時(shí)間間隔,完成A/D轉(zhuǎn)換。雙積分式A/D轉(zhuǎn)換器主要包括積分器、比較器、計(jì)數(shù)器和標(biāo)準(zhǔn)電壓源等部件,其電路結(jié)構(gòu)圖如圖5.2.2(a)所示。雙積分式A/D轉(zhuǎn)換器的轉(zhuǎn)換過(guò)程如下:首先對(duì)輸入待測(cè)的模擬電壓Vi進(jìn)行固定時(shí)間的積分;然后轉(zhuǎn)換到標(biāo)準(zhǔn)電壓VR進(jìn)行固定斜率的反向積分(定值積分),如圖5.2.2(b)所示。反向積分進(jìn)行到一定時(shí)間,便返回起始值。從圖5.2.2(b)中可看出對(duì)標(biāo)準(zhǔn)電壓VR進(jìn)行反向積分的時(shí)間T2正比于輸入模擬電壓,輸入模擬電壓越大,反向積分回到起始值的時(shí)間T越長(zhǎng),有Vi=(T2/T1)VR。用標(biāo)準(zhǔn)時(shí)鐘脈沖測(cè)定反向積分時(shí)間(如計(jì)數(shù)器),就可以得到對(duì)應(yīng)于輸入模擬電壓的數(shù)字量,實(shí)現(xiàn)A/D轉(zhuǎn)換。雙積分式A/D轉(zhuǎn)換器具有很強(qiáng)的抗工頻干擾能力,轉(zhuǎn)換精度高,但速度較慢。2.雙積分式A/D轉(zhuǎn)換器原理圖5.2.2(a)雙積分式A/D轉(zhuǎn)換器電路結(jié)構(gòu)圖

雙積分式A/D轉(zhuǎn)換圖圖5.2.2(a)雙積分式A/D轉(zhuǎn)換器電路結(jié)構(gòu)圖雙積分式圖5.2.2

(b)積分輸出波形

圖5.2.2(b)積分輸出波形3.逐次逼近式A/D轉(zhuǎn)換器原理逐次逼近式A/D轉(zhuǎn)換器電路結(jié)構(gòu)如圖5.2.3所示,其工作過(guò)程可與天平稱重物類比,圖中的電壓比較器相當(dāng)于天平,被測(cè)電壓Ux相當(dāng)于重物,基準(zhǔn)電壓Ur相當(dāng)于電壓法碼。該方案具有各種規(guī)格的按8421編碼的二進(jìn)制電壓法碼Ur,根據(jù)Ux<Ur和Ux>Ur,比較器有不同的輸出以打開(kāi)或關(guān)閉逐次逼近寄存器的各位。輸出從大到小的基準(zhǔn)電壓法碼,與被測(cè)電壓Ux比較,并逐漸減小其差值,使之逼近平衡。當(dāng)Ux=Ur時(shí),比較器輸出為零,相當(dāng)于天平平衡,最后以數(shù)字顯示的平衡值即為被測(cè)電壓值。逐次逼近式A/D轉(zhuǎn)換器轉(zhuǎn)換速度快,轉(zhuǎn)換精度較高,對(duì)N位A/D轉(zhuǎn)換只需N個(gè)時(shí)鐘脈沖即可完成,可用于測(cè)量微秒級(jí)的過(guò)渡過(guò)程的變化,是在計(jì)算機(jī)系統(tǒng)中采用最多的一種A/D轉(zhuǎn)換方法。3.逐次逼近式A/D轉(zhuǎn)換器原理圖5.2.3逐次逼近式A/D轉(zhuǎn)換器電路結(jié)構(gòu)圖5.2.3逐次逼近式A/D轉(zhuǎn)換器電路結(jié)構(gòu)4.A/D轉(zhuǎn)換器的主要指標(biāo)(1)分辨率(Resolution)分辨率用來(lái)反映A/D轉(zhuǎn)換器對(duì)輸入電壓微小變化的響應(yīng)能力,通常用數(shù)字輸出最低位(LSB)所對(duì)應(yīng)的模擬輸入的電平值表示。n位A/D轉(zhuǎn)換能反應(yīng)1/2n滿量程的模擬輸入電平。分辨率直接與轉(zhuǎn)換器的位數(shù)有關(guān),一般也可簡(jiǎn)單地用數(shù)字量的位數(shù)來(lái)表示分辨率,即n位二進(jìn)制數(shù),最低位所具有的權(quán)值,就是它的分辨率。值得注意的是,分辨率與精度是兩個(gè)不同的概念,不要把兩者相混淆。即使分辨率很高,也可能由于溫度漂移、線性度等原因,而使其精度不夠高。(2)精度(Accuracy)精度有絕對(duì)精度(AbsoluteAccuracy)和相對(duì)精度(RelativeAccuracy)兩種表示方法。①絕對(duì)精度:在一個(gè)轉(zhuǎn)換器中,對(duì)應(yīng)于一個(gè)數(shù)字量的實(shí)際模擬輸入電壓和理想的模擬輸入電壓之差并非是一個(gè)常數(shù)。把它們之間的差的最大值,定義為“絕對(duì)誤差”。通常以數(shù)字量的最小有效位(LSB)的分4.A/D轉(zhuǎn)換器的主要指標(biāo)數(shù)值來(lái)表示絕對(duì)精度,如±1LSB。絕對(duì)誤差包括量化精度和其他所有精度。②相對(duì)精度是指整個(gè)轉(zhuǎn)換范圍內(nèi),任一數(shù)字量所對(duì)應(yīng)的模擬輸入量的實(shí)際值與理論值之差,用模擬電壓滿量程的百分比表示。例如,滿量程為l0V,10位A/D芯片,若其絕對(duì)精度為±1/2LSB,則其最小有效位的量化單位為9.77mV,其絕對(duì)精度為4.88mV,其相對(duì)精度為0.048%。③轉(zhuǎn)換時(shí)間(ConversionTime)轉(zhuǎn)換時(shí)間是指完成一次A/D轉(zhuǎn)換所需的時(shí)間,即由發(fā)出啟動(dòng)轉(zhuǎn)換命令信號(hào)到轉(zhuǎn)換結(jié)束信號(hào)開(kāi)始有效的時(shí)間間隔。轉(zhuǎn)換時(shí)間的倒數(shù)稱為轉(zhuǎn)換速率。例如AD570的轉(zhuǎn)換時(shí)間為25us,其轉(zhuǎn)換速率為40kHz。④量程量程是指所能轉(zhuǎn)換的模擬輸入電壓范圍,分單極性、雙極性兩種類型。例如,單極性的量程為0~+5V,0~+10V,0~+20V;雙極性的量程為-5~+5V,-10~+l0V。數(shù)值來(lái)表示絕對(duì)精度,如±1LSB。絕對(duì)誤差包括量化精5.2.2S3C2410A的A/D轉(zhuǎn)換器1.S3C2410AA/D轉(zhuǎn)換器和觸摸屏接口電路S3C2410A包含一個(gè)8通道的A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)見(jiàn)圖5.2.4,該電路可以將模擬輸入信號(hào)轉(zhuǎn)換成10位數(shù)字編碼(10位分辨率),差分線性誤差為1.0LSB,積分線性誤差為2.0LSB。在A/D轉(zhuǎn)換時(shí)鐘頻率為2.5MHz時(shí),其最大轉(zhuǎn)換率為500KSPS(KiloSamplesPerSecond,千采樣點(diǎn)每秒),輸入電壓范圍是0~3.3V。A/D轉(zhuǎn)換器支持片上操作、采樣保持功能和掉電模式。S3C2410A的A/D轉(zhuǎn)換器和觸摸屏接口電路如圖5.2.4所示5.2.2S3C2410A的A/D轉(zhuǎn)換器1.S3C241圖5.2.4S3C2410A的A/D轉(zhuǎn)換器和觸摸屏接口電路

圖5.2.4S3C2410A的A/D轉(zhuǎn)換器和觸摸屏接口電2.與S3C2410AA/D轉(zhuǎn)換器相關(guān)的寄存器使用S3C2410A的A/D轉(zhuǎn)換器進(jìn)行模擬信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)換,需要配置以下相關(guān)的寄存器。(1)ADC控制寄存器(ADCCON)ADC控制寄存器(ADCCON)是一個(gè)16位的可讀/寫(xiě)的寄存器,地址為0x58000000,復(fù)位值為0x3FC4。ADCCON位的功能描述如表5.2.1所列。2.與S3C2410AA/D轉(zhuǎn)換器相關(guān)的寄存器表5.2.1ADC控制寄存器(ADCCON)的位功能

ADCCON符號(hào)位描述初始狀態(tài)ECFLG[15]A/D轉(zhuǎn)換狀態(tài)標(biāo)志(只讀)。0:A/D轉(zhuǎn)換中;1:A/D轉(zhuǎn)換結(jié)束0PRSCEN[14]A/D轉(zhuǎn)換器前置分頻器使能控制。0:禁止;1:使能0PRSCVL[13:6]A/D轉(zhuǎn)換器前置分頻器數(shù)值設(shè)置,數(shù)值取值范圍:1~255。注意:當(dāng)前置分頻器數(shù)值為N時(shí),分頻數(shù)值為N+1。0xFFSEL_MUX[5:3]模擬輸入通道選擇。

000:AIN0;001:AIN1;010:AIN2;011:AIN3;100:AIN4;101:AIN5;110:AIN6;111:AIN70表5.2.1ADC控制寄存器(ADCCON)的位功能ASTDBM[2]備用(Standby)模式選擇。

0:正常模式;1:備用模式1READ_START[1]利用讀操作來(lái)啟動(dòng)A/D轉(zhuǎn)換。

0:不使能讀操作啟動(dòng);1:使能讀操作啟動(dòng)0ENABLE_START[0]A/D轉(zhuǎn)換通過(guò)將該位置1來(lái)啟動(dòng),如果READ_START有效(READ_START置1),則該位無(wú)效。

0:不操作;1:?jiǎn)?dòng)A/D轉(zhuǎn)換,A/D轉(zhuǎn)換開(kāi)始后該位自動(dòng)清零0STDBM[2]備用(Standby)模式選擇。1READ_(2)ADC觸摸屏控制寄存器(ADCTSC)ADC觸摸屏控制寄存器(ADCTSC)是一個(gè)可讀/寫(xiě)的寄存器,地址為0x58000004,復(fù)位值為0x058。ADCTSC的位功能描述如表5.2.2所列。在正常A/D轉(zhuǎn)換時(shí),AUTO_PST和XY_PST都置成0即可,其他各位與觸摸屏有關(guān),不需要進(jìn)行設(shè)置。(2)ADC觸摸屏控制寄存器(ADCTSC)表5.2.2ADC控制寄存器(ADCTSC)的位功能

ADCTSC符號(hào)位描述初始狀態(tài)Reserved[8保留位0YM_SEN[7]選擇YMON的輸出值。

0:YMON輸出0(YM=高阻)

1:YMON輸出1(YM=GND)0YP_SEN[6]選擇nYPON的輸出值。

0:nYPON輸出0(YP=外部電壓)

1:nYPON輸出1(YP連接到AIN[5])1XM_SEN[5]選擇XMON的輸出值。

0:XMON輸出0(XM=高阻)

1:XMON輸出1(XM=GND)0表5.2.2ADC控制寄存器(ADCTSC)的位功能AXP_SEN[4]選擇nXPON的輸出值。

0:nXPON輸出0(XP=外部電壓)

1:nXPON輸出1(XP連接AIN[7])0PULL_UP[3]上拉開(kāi)關(guān)使能。

0:XP上拉使能;1:XP上拉不使能1AUTO_P5T[2]X位置和Y位置自動(dòng)順序轉(zhuǎn)換。

0:正常ADC轉(zhuǎn)換模式

1:自動(dòng)順序X/Y位置轉(zhuǎn)換模式0XY_PST[1:0]X位置或Y位置的手動(dòng)測(cè)量。

00:無(wú)操作模式;01:X位置測(cè)量

10:Y位置測(cè)量;11:等待中斷模式0XP_SEN[4]選擇nXPON的輸出值。0PULL_UP[(3)ADC啟動(dòng)延時(shí)寄存器(ADCDLY)ADC啟動(dòng)延時(shí)寄存器(ADCDLY)是一個(gè)可讀/寫(xiě)的寄存器,地址為0x58000008,復(fù)位值為0x00FF。ADCDLY的位功能描述如表5.2.3所列。表5.2.3ADC啟動(dòng)延時(shí)寄存器(ADCDLY)的位功能ADCDLY符號(hào)位描述DELAY[15:0](1)在正常轉(zhuǎn)換模式、分開(kāi)的X/Y位置轉(zhuǎn)換模式和X/Y位置自動(dòng)(順序)轉(zhuǎn)換模式的X/Y位置轉(zhuǎn)換延時(shí)值。(2)在等待中斷模式:當(dāng)在此模式按下觸筆時(shí),這個(gè)寄存器在幾ms時(shí)間間隔內(nèi)產(chǎn)生用于進(jìn)行X/Y方向自動(dòng)轉(zhuǎn)換的中斷信號(hào)(INT_TC)。注意:不能使用零位值(0x0000)(3)ADC啟動(dòng)延時(shí)寄存器(ADCDLY)位描述DELAY(4)ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0和ADCDAT1)S3C2410A有ADCDAT0和ADCDAT1兩個(gè)ADC轉(zhuǎn)換數(shù)據(jù)寄存器。ADCDAT0和ADCDAT1為只讀寄存器,地址分別為0x5800000C和0x58000010。在觸摸屏應(yīng)用中,分別使用ADCDAT0和ADCDAT1保存X位置和Y位置的轉(zhuǎn)換數(shù)據(jù)。對(duì)于正常的A/D轉(zhuǎn)換,使用ADCDAT0來(lái)保存轉(zhuǎn)換后的數(shù)據(jù)。ADCDAT0的位功能描述如表5.2.4所列,ADCDAT1的位功能描述如表5.2.5所列,除了位[9:0]為Y位置的轉(zhuǎn)換數(shù)據(jù)值以外,其他與ADCDAT0類似。通過(guò)讀取該寄存器的位[9:0],可以獲得轉(zhuǎn)換后的數(shù)字量。(4)ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0和ADCDAT1)表5.2.4ADCDAT0的位功能

ADCDATO位名位描述UPDOWN[15]在等待中斷模式時(shí),觸筆的狀態(tài)為上還是下。

0:觸筆為下?tīng)顟B(tài);1:觸筆為上狀態(tài)AUTO_PST[14]X位置和Y位置的自動(dòng)順序轉(zhuǎn)換。

0:正常A/D轉(zhuǎn)換;1:X/Y位置自動(dòng)順序測(cè)量XY_PST[13:12]手動(dòng)測(cè)量X位置或Y位置。

00:無(wú)操作模式;01:X位置測(cè)量

10:Y位置測(cè)量;11:等待中斷模式Reserved[11:10]保留XPDATA(正常ADC)[9:0]X位置的轉(zhuǎn)換數(shù)據(jù)值(包括正常A/D轉(zhuǎn)換的數(shù)據(jù)值)。取值范圍:0~3FF表5.2.4ADCDAT0的位功能ADCDATO位名位表5.2.5ADCDAT1的位功能描述ADCDATO位名位描述[15:10]與ADCDAT0的位功能相同YPDATA(正常ADC)[9:0]Y位置的轉(zhuǎn)換數(shù)據(jù)值(包括正常A/D轉(zhuǎn)換的數(shù)據(jù)值)。取值范圍:0~3FF表5.2.5ADCDAT1的位功能描述ADCDATO位名5.2.3S3C2410AA/D接口編程實(shí)例下面介紹一個(gè)A/D接口編程實(shí)例[徐英慧],其功能實(shí)現(xiàn)從A/D轉(zhuǎn)換器的通道0獲取模擬數(shù)據(jù),并將轉(zhuǎn)換后的數(shù)字量以波形的形式在LCD上顯示。模擬輸入信號(hào)的電壓范圍必須是0~2.5V。程序如下:1.定義與A/D轉(zhuǎn)換相關(guān)的寄存器定義如下:#definerADCCON(*(volatileunsigned*)0x58000000)//ADC控制寄存器#definerADCTSC(*(volatileunsigned*)0x5

溫馨提示

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

評(píng)論

0/150

提交評(píng)論