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:切換至周邊選單
- 選擇 3 介面選項。
- 選擇 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:區塊內互換0與1邏輯以符合硬體。
疑難排解
-
權限被拒: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
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.