[ C/C++ 開發 ] 樹莓派 GPIO 功能介紹


樹莓派機板上兩排針腳 ( 功能上稱作 GPIO ),可用來連接其他設備,進行功能擴充。至於擴充甚麼功能,如何擴充等等,這些以後碰到再一一解說。

使用 C/C++ 控制 RPi 的 GPIO 並不如使用 Python 那樣兩三行程式碼就解決,好佳在有好心強者寫出了一套叫做 wiringPi 的開源 API 讓我們可以輕鬆使用,大幅降低開發負擔。

本篇我們會先進行 wiringPi 的安裝,並簡單說明樹莓派提供的 GPIO 功能。
STEP 1. 安裝 wiringPi
STEP 2. GPIO 說明
STEP 3. 表格閱讀法

STEP 1. 安裝 wiringPi

1. 安裝 git-core 套件,在安裝之前先更新及升級套件。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git-core

2. 使用Git 下載 wiringPi 程式
git clone git://git.drogon.net/wiringPi 3. 更新版本 cd wiringPi
git pull origin

4. 安裝建置程式
sudo ./build
如果看到 All Done,表示已經安裝完成。

5. 顯示版本,測試 wiringPi 是否安裝完成
gpio -v
gpio version: 2.46                                       
Copyright (c) 2012-2018 Gordon Henderson                 
This is free software with ABSOLUTELY NO WARRANTY.       
For details type: gpio -warranty                         
                                                      
Raspberry Pi Details:                                    
  Type: Pi 3+, Revision: 03, Memory: 1024MB, Maker: Sony 
  * Device tree is enabled.                              
  *--> Raspberry Pi 3 Model B Plus Rev 1.3               
  * This Raspberry Pi supports user-level GPIO access. 

6. 顯示目前所有GPIO的輸入或輸出狀態
sudo gpio readall

STEP 2. GPIO 說明

1. 上表是 RPI3B+ 目前 GPIO 的狀態與說明,首先要看該表最中間那排:

可以看到它有編號 1~40 的接腳,而要對照到這張表,RPI 需要這樣擺放:
其實只要這樣對應,應該就一目了然。

2. 再來是由中間算來第二排 V


V 就是 Value,也就是程式去讀取將會讀到的值。在數位上,一般有兩種表示方式:
1 或 High 就表示「開」、「On」。
0 或 Low 就表示「關」、「Off」。
所以,看上表的 「V」欄位,那就知道什麼意思了。

3. 中間算來的第三排 Mode



GPIO會有 Input 跟 Ouput 兩種模式,
Mode 中的 IN 就是 Input,表示該腳位在接收訊號,
若是出現 OUT 就表示該腳位在輸出訊號。

RPI3 的 I/O 的 IN / OUT,是可以被改變的,後面會有教學。

4. 接著是由中間算來的第四排 Name:



Name ( 名稱 ),標註每個腳位的用途。

RPI3 的 GPIO 接腳依功能可分為幾大類,

4.1 電源相關
        5V : 第2、4腳。
     3.3V : 第1、17腳。
    GND : 第9、25、39、6、14、20、30及34共8隻腳。

4.2 I2C
    RPI3 中有兩組 I2C,
    第一組是第27、28腳,但已連接 EEPROM 。
    另一組第 3、5 腳,這組能接其他 I2C Bus 的 I/O 裝置。

4.3 SPI 
    SPI 腳位 19-MOSI、21-MISO、23-SCLK、24-CE0、26-CE1。


4.4 UART
    UART (Serial Port),接腳 8-TX(傳送)、10-RX(接收)。


4.5 PWM 
    第 12 腳可以做 PWM 輸出,但此 PWM 是由軟體模擬出來的,並非 Timer 迴路產生。



5. 最後兩欄:
一欄為 wPi,另一欄則為 BCM。
BCM 是廣泛的通用於自動控制的 Library,它早在樹莓派前就已經存在,所以在工業開發領域較資深的工程師比較習慣使用 BCM。使用 BCM Library 時, BCM 欄位就是它的腳位名稱。

wPi 則是樹莓的另一套 Library 「WiringPi」使用的腳位名稱,我們就是使用 wiringPi 這套 Library。




STEP 3. 表格閱讀法



閱讀方式如上圖框框,是要橫著看,例如:

實體第 11 腳,目前是輸入,它的值是 0,用 wiringPi 來開發,它在程式裡的腳位是 0;
實體第 32 腳,目前是輸入,它的值是 0,用 wiringPi 來開發,它在程式裡的腳位是 26。

附上簡圖,方便開發時使用:




留言