《嵌入式系統(tǒng)輸入輸出設(shè)備接口技術(shù)》由會員分享,可在線閱讀,更多相關(guān)《嵌入式系統(tǒng)輸入輸出設(shè)備接口技術(shù)(17頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第3章 輸入/輸出設(shè)備接口技術(shù),1、通用I/O端口結(jié)構(gòu)(GPIO),3.1 通用I/O端口,GPIO端口: PORT數(shù)據(jù)寄存器、DDR數(shù)據(jù)方向寄存器。,輸出:置“1”,輸出數(shù)據(jù);,DDR方向寄存器:,輸入:置“0”,輸入數(shù)據(jù)。,117個GPIO端口: 1個23位的Port A; 2個11位的Port B、H; 3個16位的Port C、D、E、G; 1個 8位的Port F。,2、接口電路 通過端口D的GPD1、GPD0控制發(fā)光二極管輪流閃爍。,端口D控制寄存器,GPDCON= GPDCON,GPDDAT= GPDDAT,GPDCON= GPDCON,GPDDAT= GPDDAT,例
2、題1,判斷D端口的輸入/輸出狀態(tài)及高低電平,3.2 A/D轉(zhuǎn)換器接口,S3C2410A包含 一個8通道的A/D轉(zhuǎn)換器。 10位分辨率。 采樣電壓范圍是03.3V。,討論1 當參考電壓為3.3V時,輸入電壓為2.0V,采集的數(shù)字量為多少?,1、ADC內(nèi)部結(jié)構(gòu)及ADC控制器相關(guān)寄存器,A/D轉(zhuǎn)換器和觸摸屏接口電路,(1)ADC控制寄存器(ADCCON),A/D轉(zhuǎn)換的轉(zhuǎn)換時間計算。 例,PCLK為50MHz,PRESCALER=49; 所有10位轉(zhuǎn)換時間為 50 MHz/(49+1)=1MHz 轉(zhuǎn)換時間為1/(1M/5 cycles)=5us 注意: 完成一次A/D轉(zhuǎn)換需要5個時鐘周期。A/D
3、轉(zhuǎn)換器的最 大工作時鐘為2.5MHz,所以最大的采樣率可以達到 500kbit/s。,1、要使A/D 轉(zhuǎn)換器正常啟動,預分頻因子取50,應(yīng)向ADCCON寫入什么控制字?,2、要啟動A/D 轉(zhuǎn)換器讀第2號通道數(shù)據(jù)啟動(預分頻因子取16),應(yīng)向ADCCON寫入什么控制字?,例題2,(2)ADC觸摸屏控制寄存器(ADCTSC),在正常A/D轉(zhuǎn)換時,AUTO_PST和XY_PST都置成0即可,其他各位與觸摸屏有關(guān),不需要進行設(shè)置。,(3)ADC轉(zhuǎn)換數(shù)據(jù)寄存器(ADCDAT0和ADCDAT1),在觸摸屏應(yīng)用中,分別使用ADCDAT0和ADCDAT1保存X位置和Y位置的轉(zhuǎn)換數(shù)據(jù)。對于正常的A/D轉(zhuǎn)換,使用
4、ADCDAT0來保存轉(zhuǎn)換后的數(shù)據(jù)。,(4)ADC啟動延時寄存器(ADCDLY),思考1 如何判斷ADC轉(zhuǎn)換完成? 如何啟動ADC轉(zhuǎn)換?,A/D轉(zhuǎn)換的數(shù)據(jù)可以通過中斷或查詢的方式來訪問,如果是中斷方式,則全部的轉(zhuǎn)換時間(從A/D轉(zhuǎn)換的開始到數(shù)據(jù)讀出)要更長。 如果是查詢方式,則要檢測ADCCON15(轉(zhuǎn)換結(jié)束標志位)來確定從ADCDAT寄存器讀取的數(shù)據(jù)是否是最新的轉(zhuǎn)換數(shù)據(jù)。 A/D轉(zhuǎn)換開始的一種方式是將ADCCON0置為1, 另一種方式是將ADCCON1置為1,這時只要有讀轉(zhuǎn)換數(shù)據(jù)的信號,A/D轉(zhuǎn)換就會同步開始。,A/D轉(zhuǎn)換的流程圖,2、ADC接口編程,例題3、ADC轉(zhuǎn)換,定義與AD轉(zhuǎn)換相關(guān)的寄
5、存器 定義如下: #define rADCCON(*(volatile unsigned*)0 x58000000) //ADC控制寄存器 #define rADCTSC(*(volatile unsigned*)0 x58000004) //ADC觸摸屏控制寄存器 #define rADCDLY(*(volatile unsigned*)0 x58000008) //ADC啟動或間隔延時寄存器 #define rADCDAT0(*(volatile unsigned*)0 x5800000c)//ADC轉(zhuǎn)換數(shù)據(jù)寄存器0 #define rADCDAT1(*(volati1e unsigned
6、*)0 x58000010)//ADC轉(zhuǎn)換數(shù)據(jù)寄存器 對A/D轉(zhuǎn)換器進行初始化 程序中的參數(shù)ch表示所選擇的通道號,程序如下: void AD_Init(unsigned char ch) rADCDLY=100; //ADC啟動或間隔延時 rADCTSC=0; //選擇ADC模式 rADCCON=(1<<14)|(49<<6)|(ch<<3)|(0<<2)|(0<<1)|(0); //設(shè)置ADC控制寄存器 ,獲取A/D的轉(zhuǎn)換值 程序中的參數(shù)ch表示所選擇的通道號,程序如下: int Get_AD(unsigned char ch) int i; int val= 0; i f (ch7) return 0; //通道不能大于7 for(i=0; i 4); //為轉(zhuǎn)換準確,除以16取均值 ,例題4、 預分頻值為32,采集07個信道,進行ADC轉(zhuǎn)換。,