ARM GPIO實驗

GPIO實驗

一、什麼是GPIO

 

GPIO,英文全稱爲General-Purpose IO ports,也就是通用IO口。嵌入式系統中常常有數量衆多,但是結構卻比較簡單的外部設備/電路,對這些設備/電路有的需要CPU爲之提供控制手段,有的則需要被CPU用作輸入信號。而且,許多這樣的設備/電路只要求一位,即只要有開/關兩種狀態就夠了,比如燈亮與滅。對這些設備/電路的控制,使用傳統的串行口或並行口都不合適。所以在微控制器芯片上一般都會提供一個通用可編程IO接口,即GPIO

 

接口至少有兩個寄存器,即通用IO控制寄存器通用IO數據寄存器。數據寄存器的各位都直接引到芯片外部,而對這種寄存器中每一位的作用,即每一位的信號流通方向,則可以通過控制寄存器中對應位獨立的加以設置。這樣,有無GPIO接口也就成爲微控制器區別於微處理器的一個特徵。

 

    在實際的MCU中,GPIO是有多種形式的。比如,有的數據寄存器可以按照位尋址,有些卻不能按照位尋址,這在編程時就要區分了。比如傳統的8051系列,就區分成可位尋址和不可位尋址兩種寄存器。另外,爲了使用的方便,很多mcuglue logic等集成到芯片內部,增強了系統的穩定性能,比如GPIO接口除去兩個標準寄存器必須具備外,還提供上拉寄存器,可以設置IO的輸出模式是高阻,還是帶上拉的電平輸出,或者不帶上拉的電平輸出。這在電路設計中,外圍電路就可以簡化不少。

  

另外需要注意的是,對於不同的計算機體系結構,設備可能是端口映射,也可能是內存映射的。如果系統結構支持獨立的IO地址空間,並且是端口映射,就必須使用匯編語言完成實際對設備的控制,因爲C語言並沒有提供真正的端口的概念。如果是內存映射,那就方便的多了。

舉個例子,比如像寄存器A(地址假定爲0x48000000)寫入數據0x01,那麼就可以這樣設置了。

 #define A (*(volatile unsigned long *)0x48000000)
...
    A = 0x01;
...

    這實際上就是內存映射機制的方便性了。其中volatile關鍵字是嵌入式系統開發的一個重要特點。上述表達式拆開來分析,首先(volatile unsigned long *)0x48000000的意思是把0x48000000強制轉換成volatile unsigned long類型的指針,暫記爲p,那麼就是#define A *p,即AP指針指向位置的內容了。這裏就是通過內存尋址訪問到寄存器A,可以讀/寫操作。

  

二、S3C2410GPIO的特點

   s3c2410GPIO117pin,下面應該到9 IO ports看看詳細部分了。

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口,其實很多是複合功能的,既可以作爲普通的IO口使用,也可以作爲特殊外設接口。在程序設計時,要對整體的資源有所規劃,初始化時就應該把所有資源安排合理。這樣纔會避免出現問題。 

    現在的8個端口,其寄存器是相似的。除了兩個通用寄存器GPxCONGPxDAT外,還提供了GPxUP用於確定是否使用內部上拉電阻(其中xA-H,需要注意的是沒有GPAUP)。應用的主要步驟就是: 

    ·設置GPIO控制寄存器GPxCON

    ·設置GPIO上拉寄存器GPxUP

初始化完成後,就可以通過對GPxDAT的操作來實現相應的應用了。其中,PORT APORT B-H在功能選擇方面有所不同,GPACON的每一位對應一根引腳(共23pin有效)。當某位設爲0,相應引腳爲輸出引腳,此時往GPADAT中寫0/1,可以讓引腳輸出低電平/高電平;當某位設爲1,則相應引腳爲地址線,或者用於地址控制,此時GPADAT沒有用了。

一般而言,GPACON通常全設爲1,以便訪問外部存儲器件。PORT B-H在寄存器操作方面完全相同。

GPxCON中每兩位控制一根引腳:00表示輸入,01表示輸出,10表示特殊功能,11保留。GPxDAT用於讀/寫引腳:當引腳設爲輸入時,讀此寄存器可知相應引腳狀態是高/低;當引腳設爲輸出時,寫此寄存器相應位可以使相應引腳輸出低電平或高電平。GPxUP:某位設爲0,相應引腳無內部上拉;爲1,相應引腳使用內部上拉。關於特殊功能,那就得結合特殊外設來進行設置了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章