|

Raspberry Pi 之 GPIO 演化觀察

   

Raspberry Pi(以下簡稱 RPi)最簡單的應用方式,是將 RPi 當作一般的媒體播放機來使用,較複雜的 RPi 應用方式,則是直接去操控 RPi 的一般用途接腳(General Purpose Input/Output,GPIO),本文將探討 RPi 與 Arduino 在接腳上有何差異?

不能只看接腳數

從接腳數來看,RPi 的 GPIO 數量就比 Arduino 豐富許多,Arduino 的接腳數目僅僅只有 20 個,其中 6 個是類比輸入接腳,其餘 14 個為數位輸出、輸入接腳;而 RPi 至少有 26 個接腳,後來經過升級的 RPi 也擴充為 40 個接腳。

但是,單純就兩者的接腳數目來比較,意義不大。

Arduino 的接腳可以有脈寬調變(PWM)輸出,RPi 則沒有,因為 RPi 晶片本身沒有 PWM 電路硬體可以使用,若是想要使用 PWM 輸出,則必須使用軟體來模擬,RPi 除了沒有 PWM 輸出外,也沒有 Arduino 的類比輸出,因而無法將類比資料轉換成數位資料(ADC),如果使用 RPi 同時又有轉換類比的需求,則必須要另外想辦法,此外,在必要時,Arduino 還允許使用外部中斷(Interrupt)接腳。

在比較兩者的不同後,RPi GPIO 其實也有與 Arduino GPIO 共通的地方,舉例來說:在一般輸出、輸入操控外,都有 I2C、SPI 介面可以使用,只是 Arduino 有 2 組 I2C,RPi 僅有 1 組。

GPIO 非常講究每個接腳的對外電流驅動力與對外輸入電流的承受力(Sink),以及可輸出、輸入的電壓等也多不相同,由於 Arduino 使用的是微控制器晶片,RPi 使用的是微處理器,如果要進行 GPIO 的操控,使用 Arduino 會比 RPi 來的方便些。

Arduino 的接腳對應圖(以 Arduino UNO 為例)

Arduino 的接腳對應圖(以 Arduino UNO 為例)

40 個接腳是主流,但向下相容

即便如此,RPi 的 GPIO 仍是值得去應用的,但是 RPi 的 GPIO 接腳不是一次就訂好規格並且沿用至今,是經歷過版本修訂的,RPi 最早的 26 個接腳,就分成 Revision 1(後面簡稱 Rev 1)與 Revision 2(後面簡稱 Rev 2)兩種版本。

Rev 1 與 Rev 2 在本質上沒有差別,只是在賦予 GPIO 編號名稱上,有些許不同,原本的 GPIO 0、1 改為 GPIO 2、3,原本的 GPIO 21 改名為 GPIO 27,其餘的 GPIO 編號都相同,但因為接腳的編號、名稱改變,在撰寫程式時必須要細心調修、改寫,才能讓接腳一致。

另一個大家比較擔心的問題是,只有 RPi A、RPi B 使用 26 個接腳,後續版本的 RPi A+、RPi B+,乃至於 RPi 2 B 等,都是使用 40 個接腳,這是不是意味著原本使用 26 個接腳的應用設計落伍了,必須修改電路才能去對應 40 個接腳?

Raspberry Pi 的接腳對應圖

Raspberry Pi 的接腳對應圖

針對這個問題,答案其實為否,從趨勢上來看,往後的 RPi 應該都會是 40 個接腳,甚至是 40 個接腳以上(接腳數再增加),應該不會再倒退使用 26 個接腳了。

但 40 個接腳的接腳排列,其實是相容原本的 26 個接腳的,言下之意,在 26-pin 條件下所設計的電路可以不用再更改,就可以轉移到 40-pin 上使用。

接腳數從 26-pin 增加至 40-pin,許多人可能會很興奮地認為,應該可以有更多介面可以使用?但這其實是錯誤的猜想,多增加的 14-pin,其實只是多了 9 個可單獨操控的 I/O 接腳,以及 3 個接地接腳。

或許有人會說:多了 ID_SC、ID_SD 的 2 個接腳,就好像等於多了一組新的 I2C 介面。這樣的假設,一般來說是沒有錯的,ID_SC、ID_SD 本質上是一組 I2C 介面。但是,這組 I2C 介面只能用於連接 1 顆外部 EEPROM,除此之外,別無用途,不連接 EEPROM 的話,就只能空在那裡浮接而已。

但為什麼要裝 1 顆外部 EEPROM?其實是希望在 RPi 開機時,直接讀取 EEPROM 內的資料,而後依據資料,自動設定各 GPIO 接腳的輸出、輸入、高低電位等狀態。事實上,不用這顆 EEPROM,在 Linux 驅動程式方面下功夫,也能做到在開機時就自動完成 GPIO 接腳設定的工作,所以是否加裝外部 EEPROM 這個動作是可有可無的。

希望透過以上的說明,讓各位能更加了解、掌握 RPi 的 GPIO,並且能夠得心應手地去運用 GPIO 接腳資源。

陸向陽
陸向陽

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *