RDK X5 40-PIN 接頭:接腳定義與 GPIO 應用

RDK X5 開發板提供 40-pin 接頭,讓您能連接感測器、致動器以及周邊匯流排。本指南將說明接腳定義、多工規則,並附上實作 GPIO 範例,讓您立即從使用者空間控制硬體。

40-PIN 接頭總覽

RDK X5 40-pin 接頭採用與 Raspberry Pi 相容的佈局。設計電路時,請留意以下電氣限制:

參數 數值
邏輯電壓 3.3 V
任一接腳的最大電壓 3.46 V
3.3 V 電源軌電流上限 800 mA
5 V 電源軌電流上限 500 mA

⚠️ 注意:切勿在任何 GPIO 接腳施加高於 3.46 V 的電壓。此接頭僅支援 3.3 V 邏輯,且不支援 5 V 容忍。

接腳定義

下表列出 40-pin 接頭上所有接腳的預設功能及多工替代功能。

接腳 預設功能 替代功能 備註
1 3.3V 電源 最大 800 mA
2 5V 電源 最大 500 mA
3 I2C0 SDA PWM2 多工
5 I2C0 SCL PWM2 多工
6 GND
8 UART3 TX
10 UART3 RX
12 I2C1 SDA PWM3 多工
14 GND
16 GPIO
18 GPIO
19 SPI2 MOSI PWM0 多工
20 GND
21 SPI2 MISO PWM1 多工
22 GPIO
23 SPI2 SCLK PWM0/PWM1 多工
24 SPI2 CS0
25 GND
26 SPI2 CS1
27 I2C5 SDA UART3 多工
28 I2C5 SCL UART3 多工
29 GPIO
30 GND
31 GPIO 示範中作為輸出使用
32 GPIO
33 GPIO
34 GND
35 GPIO
36 GPIO
37 GPIO 示範中作為輸入使用
38 GPIO
39 GND
40 GPIO

接腳多工規則

接頭上的部分接腳可在專用周邊功能(I2C、UART、SPI、PWM)與一般 GPIO 之間切換。多工群組如下:

  • UART3 / I2C5 — 接腳 8/10(UART3)與接腳 27/28(I2C5)共用相同控制器設定。
  • I2C0 / PWM2 — 接腳 3/5 可作為 I2C0 或 PWM 通道。
  • SPI2 / PWM0 — 接腳 19/23 可傳輸 SPI2 訊號或 PWM0。
  • SPI2 / PWM1 — 接腳 21/23 可傳輸 SPI2 訊號或 PWM1。
  • I2C1 / PWM3 — 接腳 12 可作為 I2C1 或 PWM3。

設定後的狀態顯示方式如下:

設定狀態 意義
okay 接腳專用於周邊功能(如 I2C、UART)。
disabled 接腳可作為一般 GPIO 使用。

📌 注意:變更接腳多工模式需重新開機才會生效。請在接線前先完成設定。

使用 srpi-config 設定接腳功能

RDK X5 內建 srpi-config(類似 raspi-config)選單式工具,用於啟用或停用板載周邊。

步驟 1:開啟設定工具

sudo srpi-config

進入全螢幕模式 離開全螢幕模式

步驟 2:切換至周邊選單

  1. 選擇 3 介面選項
  2. 選擇 I3 周邊匯流排設定

步驟 3:啟用或停用周邊

您將看到 UART、I2C、SPI、PWM 等周邊匯流排清單。依需求切換:

  • 選取匯流排後按 Enter 啟用。
  • 已啟用的匯流排再按 Enter 即可停用。

步驟 4:重新開機

sudo reboot

進入全螢幕模式 離開全螢幕模式

重新開機後,啟用的接腳將專用於周邊功能(狀態 okay),停用的接腳則回復為 GPIO(狀態 disabled)。

GPIO 應用:按鈕 + LED 示範

本範例讀取接在 接腳 37(輸入)的按鈕,並驅動 接腳 31(輸出)的 LED。按下按鈕時 LED 點亮。

硬體接線

元件 接頭接腳
LED 正極(經約 220Ω 電阻) 接腳 31(GPIO 輸出)
LED 負極 接腳 39(GND)
按鈕 — 其中一端 接腳 37(GPIO 輸入)
按鈕 — 另一端 接腳 39(GND)

軟體需求

請確認所用接腳已在 srpi-config 中設為 GPIO(周邊功能狀態為 disabled)。若尚未安裝 GPIO 函式庫,請執行:

pip3 install gpio

進入全螢幕模式 離開全螢幕模式

執行範例

示範腳本已包含在板載映像中,路徑為 /app/40pin_samples/。請切換至該目錄並執行:

cd /app/40pin_samples
sudo python3 button_led.py

進入全螢幕模式 離開全螢幕模式

預期輸出

腳本啟動後應顯示:

Starting demo now!

進入全螢幕模式 離開全螢幕模式

執行期間,每次按下或釋放按鈕,腳本會印出目前輸出至接腳 31 的狀態:

Outputting 0 to Pin 31
Outputting 1 to Pin 31

進入全螢幕模式 離開全螢幕模式

0 表示 LED 熄滅,1 表示 LED 點亮。

原始碼:button_led.py

#!/usr/bin/env python3
# button_led.py
# Pin 37: input  (button)
# Pin 31: output (LED)

import time
import gpio

# Configure pins
gpio.pin_mode(37, gpio.INPUT)   # Button as input
gpio.pin_mode(31, gpio.OUTPUT)  # LED as output

print("Starting demo now!")

last_state = None

try:
    while True:
        # Read the button state
        button_state = gpio.digital_read(37)

        if button_state == 0:
            # Button pressed (pulled low)
            gpio.digital_write(31, 1)
            new_state = 1
        else:
            # Button released
            gpio.digital_write(31, 0)
            new_state = 0

        if new_state != last_state:
            print("Outputting {} to Pin 31".format(new_state))
            last_state = new_state

        time.sleep(0.05)  # Simple debounce

except KeyboardInterrupt:
    print("\nExiting demo...")
finally:
    gpio.digital_write(31, 0)
    gpio.cleanup()

進入全螢幕模式 離開全螢幕模式

💡 提示:若 LED 行為相反,可能是按鈕模組內建上拉電阻。請在 if button_state == 0: 區塊內互換 01 邏輯以符合硬體。

疑難排解

  • 權限被拒:GPIO 存取需要 root 權限,請務必使用 sudo 執行腳本。
  • 接腳無反應:請確認接腳已在 srpi-config 中設為 disabled(GPIO 模式),並在變更後重新開機。
  • 找不到示範檔案:範例位於 /app/40pin_samples/。若目錄不存在,請更新板載映像或從官方 RDK X5 文件複製範例。

摘要

您已學會:

  • 閱讀 RDK X5 40-pin 接頭的接腳配置與電氣限制。
  • 了解接腳多工以及 okay / disabled 狀態的意義。
  • 使用 srpi-config 啟用或停用周邊匯流排。
  • 從使用者空間 Python 驅動按鈕 + LED 電路。

接下來您可以延伸至 I2C 感測器、UART 通訊、SPI 顯示器以及 PWM 馬達控制——全都使用同一組 40-pin 接頭。


*本文改編自 D-Robotics 官方文件。原始來源:https://d-robotics.github.io/rdk_x_doc/en/Basic_Application/01_40pin_user_sample/40pin_define?v=3.5.0&p=RDK+X5