2011年12月30日 星期五

GPIO (General Purpose I/O)

以CPU而言,上面有密密麻麻的線路外主要就是會有很多的PIN腳,PIN腳可以看做是CPU跟外面溝通的通道。至於有幾隻腳根據不同的CPU規格有所不同。其中每隻PIN腳都會定義它的功能,其中GPIO可以算是其中的一種功能。GPIO就是General Purpose I/O的縮寫。I/O就是input/output。主要為CPU輸入以及CPU輸出的功能。

所謂的input mode就是當CPU想從外面收資料/signal進來的話,就會把這個PIN腳定義為input mode; 反之如果CPU去推資料出去就會把這個PIN腳定義為output mode。
簡單的output mode的例子就如同版子上的LED。好比推1就會亮,推0就會暗,這是最簡單的output mode。input mode通常需要搭配timer去定時polling PIN腳上的訊號是1還是0決定狀態改變了沒有。而這樣其實會增加CPU的負擔

為了解決上面這個問題,但又要能達到相同的事情,我們就會看接PIN腳上的device有沒有support Interrupt。
Interrupt代表CPU不用定時去polling PIN腳上的訊號,而是外部元件「主動」發訊號給CPU而這發訊號給CPU稱之為Interrupt。
這個優點就是CPU不用去做一個timer去polling PIN腳上的訊號,減低CPU Loading也增加了效率。Interrupt可以算是GPIO裡面一個很好用也頗重要的function

Interrupt有分好幾種mode,可以分成Edge Trigger以及Level Trigger
Edge Trigger包括了Rising and Falling Edge Trigger;Level Trigger可以分成High and Low Level。我們可以用下面的圖形來表示。
Note:
1:Rising
2:Falling
3:High
4:Low

Edge Trigger主要是靠波形的變化;Level Trigger則是看絕對的準位。舉個例子,當你設定Interrupt High Level Trigger時,所以當高電位的時候就會發Interrupt給CPU

Interrupt不只是只能用GPIO來做,有些CPU會直接規定某些CPU PIN腳就是Interrupt,而有些為了省PIN腳會跟GPIO共用。這都要看CPU的spec.而定。

沒有留言:

張貼留言