第八話 GPIO控制-PSoC篇

一、關於GPIO

GPIO在微控制器中最基本的應用,所有對外的介面都是透過GPIO來控制,不管輸入或輸出都是透過GPIO,所以第一件事情學會使用GPIO是很基礎也很重要的。

GPIO全名為,General Purpose Input/Output,也就是通用型輸入/輸出,顧名思義透過I/O腳來執行訊號的輸入或輸出,一般來說,I/O腳的定義都是數位的,也就是只有0與1兩種狀態,但除了數位的I/O腳外,當然也有類比型的I/O腳,在PSoC4中,基本上所有腳位都可以拿來當成數位的I/O腳,(但其中某些腳位只能作為輸出),而類比I/O腳在PSOC4中也有其位置的限制,不像PSoC3系列那麼靈活,不過只要事前規劃好,也是很好用的。

二、關於PSOC4中I/O腳的種類

PSoC系列中基本上每隻I/O腳都提供下面八種狀態的設定,其中紅色方塊的是我認為比較常用的設定值。

a.High Impedance Analog

高阻抗類比輸入,用來做類比訊號輸入使用,雖說是用來做輸入的,但是使用內部D/A的時候也是使用這個類型的腳位做輸出。

b.High Impedance Digital

高阻抗數位輸入,基本上這個I/O腳設定之後會變成一高阻抗的I/O腳,用來做輸入使用,因為高阻抗才能夠對外部輸入的電壓很敏感,故一般高阻抗輸入的時候,外面所連接的I/O腳都是呈低阻抗。

c.Resistive Pull Up

內置上拉電阻,此模式,可以用來做輸入、輸出使用,也就是說它可以同時存在兩種狀態(不須切換),但是通常我都是用來做輸入狀態比較多。

d.Resistive Pull Down

內置下拉電阻,這個模式與Resistive Pull Up大致相同,只是一個是上拉,另外一個是下拉。

e.Strong Drive

低阻抗輸出模式,在這個狀態下,I/O腳呈現一低阻抗狀態,以便可以輸出Hi/Low訊號。

補充資料:

上述所說的狀態中,你可能對某些使用的名詞不是很了解,可以參考補充資料

高阻抗及其他I/O狀態 (參考網路資料)

上/下拉電阻 (參考維基百科)

psocio

 

三、實作範例使用按鈕觸發顯示燈號

終於要輪到Pioneer Kit上場了,於前一話的時候已經建立好了一個新的Porject檔案,我們可以利用該檔案先來試驗利用Pioneer Kit上的SW2與D9 LED來做輸入與輸出的測試。

a.實際硬體配置圖

12312

 

b.硬體線路圖

figure4-17

sw2

由上兩圖可以知道,RGB LED是採共陽極配置,也就是說只要透過I/O腳送出Low訊號,就可以使對應的LED燈亮起,而Push Button是使用觸發Low接地的方式,而另外一端直接連到I/O腳,故硬體也是屬於高阻抗的配置,所以在I/O設定上,我們就必須應用Resistive Pull Up的模式,才能使開關正常工作。

c.在PSoC Creator上建立我們需要使用的物件

這次要做的是一個簡單的功能,就是按一下SW2使紅色燈號亮起,再按一下SW2使紅色燈號熄滅,所以我們要控制P1.6做輸出點亮LED以及使用P0.7做輸入,來檢測開關狀態,故我們會完成以下配置。

setupIO

 

其中我們必須將SW2設定為Resistive Pull Up,點選工作區的SW2兩下,可以開啟設定視窗(每個物件的設定都可以透過雙擊兩下開啟對話視窗)。

sw2set

在工作區配置完後,還要到.cydwr中去配置pin這個物件所要指向的I/O位址,也就是我們這次要使用的輸入腳P0.7以及輸出腳P1.6

pindefine

做完兩個I/O的配置之後,就完成了這次試驗所需要的硬體配置,再來就是硬體的工作邏輯,也就是程式的撰寫。

d.程式的撰寫

點選Workspace Explorer內的Souce Files,點兩下開啟main.c檔案

mainselect

 

點開後就可以使用PSoC Creator直接編輯main.c的內容,而這次的程式碼很簡單,如下

debugProgram

 

key完程式之後就可以點選燒錄,直接將程式燒到PSoC4 Pioneer kit上,當然前提是要先將Pionner kit使用USB線連接到電腦上,之後就可以按按看SW2之後檢查程式是否有依照我們的邏輯進行。

 

這邊會遇到一個機械震動的問題,所以請務必注意。

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料