一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

什么是GPIO?

 水墨江南人 2012-03-11

什么是GPIO?

(2009-05-28 18:48:15)
標(biāo)簽:

雜談

分類: 嵌入式系統(tǒng)

一、什么是GPIO?
GPIO,英文全稱為General-Purpose IO ports,也就是通用IO口。嵌入式系統(tǒng)中常常有數(shù)量眾多,但是結(jié)構(gòu)卻比較簡單的外部設(shè)備/電路,對這些設(shè)備/電路有的需要CPU為之提供控制手段,有的則需要被CPU用作輸入信號。而且,許多這樣的設(shè)備/電路只要求一位,即只要有開/關(guān)兩種狀態(tài)就夠了,比如燈亮與滅。對這些設(shè)備/電路的控制,使用傳統(tǒng)的串行口或并行口都不合適。所以在微控制器芯片上一般都會提供一個(gè)“通用可編程IO接口”,即GPIO。
接口至少有兩個(gè)寄存器,即“通用IO控制寄存器”與“通用IO數(shù)據(jù)寄存器”。數(shù)據(jù)寄存器的各位都直接引到芯片外部,而對這種寄存器中每一位的作用,即每一位的信號流通方向,則可以通過控制寄存器中對應(yīng)位獨(dú)立的加以設(shè)置。這樣,有無GPIO接口也就成為微控制器區(qū)別于微處理器的一個(gè)特征。
    在實(shí)際的MCU中,GPIO是有多種形式的。比如,有的數(shù)據(jù)寄存器可以按照位尋址,有些卻不能按照位尋址,這在編程時(shí)就要區(qū)分了。比如傳統(tǒng)的8051系列,就區(qū)分成可位尋址和不可位尋址兩種寄存器。另外,為了使用的方便,很多mcu把glue logic等集成到芯片內(nèi)部,增強(qiáng)了系統(tǒng)的穩(wěn)定性能,比如GPIO接口除去兩個(gè)標(biāo)準(zhǔn)寄存器必須具備外,還提供上拉寄存器,可以設(shè)置IO的輸出模式是高阻,還是帶上拉的電平輸出,或者不帶上拉的電平輸出。這在電路設(shè)計(jì)中,外圍電路就可以簡化不少。
  
另外需要注意的是,對于不同的計(jì)算機(jī)體系結(jié)構(gòu),設(shè)備可能是端口映射,也可能是內(nèi)存映射的。如果系統(tǒng)結(jié)構(gòu)支持獨(dú)立的IO地址空間,并且是端口映射,就必須使用匯編語言完成實(shí)際對設(shè)備的控制,因?yàn)镃語言并沒有提供真正的“端口”的概念。如果是內(nèi)存映射,那就方便的多了。
舉個(gè)例子,比如像寄存器A(地址假定為0x48000000)寫入數(shù)據(jù)0x01,那么就可以這樣設(shè)置了。
#define A (*(volatile unsigned long *)0x48000000)
...
     A = 0x01;
...
    這實(shí)際上就是內(nèi)存映射機(jī)制的方便性了。其中volatile關(guān)鍵字是嵌入式系統(tǒng)開發(fā)的一個(gè)重要特點(diǎn)。上述表達(dá)式拆開來分析,首先(volatile unsigned long *)0x48000000的意思是把0x48000000強(qiáng)制轉(zhuǎn)換成volatile unsigned long類型的指針,暫記為p,那么就是#define A *p,即A為P指針指向位置的內(nèi)容了。這里就是通過內(nèi)存尋址訪問到寄存器A,可以讀/寫操作。
  
二、S3C2410的GPIO的特點(diǎn)
    s3c2410的GPIO有117pin,下面應(yīng)該到9 IO ports看看詳細(xì)部分了。
The S3C2410X has 117 multi-functional input/output port pins. The ports are:
— Port A (GPA): 23-output port
— Port B (GPB): 11-input/output port
— Port C (GPC): 16-input/output port
— Port D (GPD): 16-input/output port
— Port E (GPE): 16-input/output port
— Port F (GPF): 8-input/output port
— Port G (GPG): 16-input/output port
— Port H (GPH): 11-input/output port
    這么多的IO口,其實(shí)很多是復(fù)合功能的,既可以作為普通的IO口使用,也可以作為特殊外設(shè)接口。在程序設(shè)計(jì)時(shí),要對整體的資源有所規(guī)劃,初始化時(shí)就應(yīng)該把所有資源安排合理。這樣才會避免出現(xiàn)問題。
    現(xiàn)在的8個(gè)端口,其寄存器是相似的。除了兩個(gè)通用寄存器GPxCON、GPxDAT外,還提供了GPxUP用于確定是否使用內(nèi)部上拉電阻(其中x為A-H,需要注意的是沒有GPAUP)。應(yīng)用的主要步驟就是:
    ·設(shè)置GPIO控制寄存器GPxCON
    ·設(shè)置GPIO上拉寄存器GPxUP
初始化完成后,就可以通過對GPxDAT的操作來實(shí)現(xiàn)相應(yīng)的應(yīng)用了。其中,PORT A與PORT B-H在功能選擇方面有所不同,GPACON的每一位對應(yīng)一根引腳(共23pin有效)。當(dāng)某位設(shè)為0,相應(yīng)引腳為輸出引腳,此時(shí)往GPADAT中寫0/1,可以讓引腳輸出低電平/高電平;當(dāng)某位設(shè)為1,則相應(yīng)引腳為地址線,或者用于地址控制,此時(shí)GPADAT沒有用了。
一般而言,GPACON通常全設(shè)為1,以便訪問外部存儲器件。PORT B-H在寄存器操作方面完全相同。
GPxCON中每兩位控制一根引腳:00表示輸入,01表示輸出,10表示特殊功能,11保留。GPxDAT用于讀/寫引腳:當(dāng)引腳設(shè)為輸入時(shí),讀此寄存器可知相應(yīng)引腳狀態(tài)是高/低;當(dāng)引腳設(shè)為輸出時(shí),寫此寄存器相應(yīng)位可以使相應(yīng)引腳輸出低電平或高電平。GPxUP:某位設(shè)為0,相應(yīng)引腳無內(nèi)部上拉;為1,相應(yīng)引腳使用內(nèi)部上拉。關(guān)于特殊功能,那就得結(jié)合特殊外設(shè)來進(jìn)行設(shè)置了。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产传媒欧美日韩成人精品| 亚洲欧美日韩熟女第一页| 少妇人妻中出中文字幕| 91人妻人人澡人人人人精品| 日本午夜精品视频在线观看| 丰满人妻一二区二区三区av| 日韩亚洲激情在线观看| 一区二区三区四区亚洲专区| 国产又猛又大又长又粗| 国产高清视频一区不卡| 日韩精品第一区二区三区| 国产美女精品午夜福利视频| 亚洲少妇一区二区三区懂色| 亚洲精品国产主播一区| 好吊妞视频这里有精品| 成年人视频日本大香蕉久久| 国产精品亚洲一级av第二区| 超薄肉色丝袜脚一区二区| 91精品视频全国免费| 成人免费视频免费观看| 视频一区二区黄色线观看| 国产日韩欧美在线亚洲| 午夜日韩在线观看视频| 激情少妇一区二区三区| 欧美黑人巨大一区二区三区| 黄片免费播放一区二区| 久久久精品日韩欧美丰满| 美女被草的视频在线观看| 久久精品伊人一区二区| 高清一区二区三区大伊香蕉| 国产自拍欧美日韩在线观看| 欧美日韩乱码一区二区三区| 午夜视频成人在线免费| 亚洲免费视频中文字幕在线观看 | 亚洲中文字幕三区四区| 亚洲最新中文字幕一区| 在线免费看国产精品黄片| 99久久国产精品成人观看| 精品推荐国产麻豆剧传媒| 老司机精品福利视频在线播放| 国产精品欧美在线观看|