一、關於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訊號。
補充資料:
上述所說的狀態中,你可能對某些使用的名詞不是很了解,可以參考補充資料
三、實作範例使用按鈕觸發顯示燈號
終於要輪到Pioneer Kit上場了,於前一話的時候已經建立好了一個新的Porject檔案,我們可以利用該檔案先來試驗利用Pioneer Kit上的SW2與D9 LED來做輸入與輸出的測試。
a.實際硬體配置圖
b.硬體線路圖
由上兩圖可以知道,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做輸入,來檢測開關狀態,故我們會完成以下配置。
其中我們必須將SW2設定為Resistive Pull Up,點選工作區的SW2兩下,可以開啟設定視窗(每個物件的設定都可以透過雙擊兩下開啟對話視窗)。
在工作區配置完後,還要到.cydwr中去配置pin這個物件所要指向的I/O位址,也就是我們這次要使用的輸入腳P0.7以及輸出腳P1.6
做完兩個I/O的配置之後,就完成了這次試驗所需要的硬體配置,再來就是硬體的工作邏輯,也就是程式的撰寫。
d.程式的撰寫
點選Workspace Explorer內的Souce Files,點兩下開啟main.c檔案
點開後就可以使用PSoC Creator直接編輯main.c的內容,而這次的程式碼很簡單,如下
key完程式之後就可以點選燒錄,直接將程式燒到PSoC4 Pioneer kit上,當然前提是要先將Pionner kit使用USB線連接到電腦上,之後就可以按按看SW2之後檢查程式是否有依照我們的邏輯進行。
這邊會遇到一個機械震動的問題,所以請務必注意。