RDK X5 40-PIN Header: ピン定義とGPIOアプリケーション
RDK X5開発ボードは、センサー、アクチュエーター、および周辺バスとインターフェースするための40ピンヘッダーを搭載しています。本ガイドでは、ピン定義、マルチプレックス規則、およびGPIOの実践例を解説し、ユーザースペースからすぐにハードウェアを制御できるようにします。
40-PIN Header 概要
RDK X5の40ピンヘッダーは、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 | Default Function | Alternate Function | Notes |
|---|---|---|---|
| 1 | 3.3V Power | — | 800 mA max |
| 2 | 5V Power | — | 500 mA max |
| 3 | I2C0 SDA | PWM2 | Multiplexed |
| 5 | I2C0 SCL | PWM2 | Multiplexed |
| 6 | GND | — | |
| 8 | UART3 TX | — | |
| 10 | UART3 RX | — | |
| 12 | I2C1 SDA | PWM3 | Multiplexed |
| 14 | GND | — | |
| 16 | GPIO | — | |
| 18 | GPIO | — | |
| 19 | SPI2 MOSI | PWM0 | Multiplexed |
| 20 | GND | — | |
| 21 | SPI2 MISO | PWM1 | Multiplexed |
| 22 | GPIO | — | |
| 23 | SPI2 SCLK | PWM0/PWM1 | Multiplexed |
| 24 | SPI2 CS0 | — | |
| 25 | GND | — | |
| 26 | SPI2 CS1 | — | |
| 27 | I2C5 SDA | UART3 | Multiplexed |
| 28 | I2C5 SCL | UART3 | Multiplexed |
| 29 | GPIO | — | |
| 30 | GND | — | |
| 31 | GPIO | — | Used in demo as output |
| 32 | GPIO | — | |
| 33 | GPIO | — | |
| 34 | GND | — | |
| 35 | GPIO | — | |
| 36 | GPIO | — | |
| 37 | GPIO | — | Used in demo as input |
| 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として動作可能です。
設定後のマルチプレックス状態の報告方法は以下の通りです:
| Configuration Status | Meaning |
|---|---|
okay |
ピンは周辺機能(例: I2C、UART)に専用化されています。 |
disabled |
ピンは汎用GPIOとして利用可能です。 |
📌 注記: ピンのマルチプレックスモード変更は再起動後に有効になります。ハードウェアを配線する前に設定手順を計画してください。
srpi-configによるピン機能の設定
RDK X5には、srpi-configというメニュー形式のユーティリティ(raspi-configに類似)が搭載されており、オンボード周辺機器の有効/無効を設定できます。
手順1: 設定ツールを開く
sudo srpi-config
Enter fullscreen mode Exit fullscreen mode
手順2: 周辺機器メニューに移動
- 3 Interface Options を選択。
- I3 Peripheral bus config を選択。
手順3: 周辺機器の有効化/無効化
周辺バス(UART、I2C、SPI、PWM)のリストが表示されます。必要に応じて各バスを切り替えます:
- バスを選択してEnterキーを押し、有効化。
- すでに有効なバスを選択してEnterキーを押し、無効化。
手順4: 再起動
sudo reboot
Enter fullscreen mode Exit fullscreen mode
再起動後、有効化したピンは周辺機能に専用化され(ステータス okay)、無効化したピンはGPIOに戻ります(ステータス disabled)。
GPIOアプリケーション: ボタン + LEDデモ
この例では、ピン37(入力)に接続されたボタンを読み取り、ピン31(出力)に接続されたLEDを制御します。ボタンが押されるとLEDが点灯します。
ハードウェアセットアップ
| Component | Header Pin |
|---|---|
| LEDアノード(~220Ω抵抗経由) | Pin 31 (GPIO output) |
| LEDカソード | Pin 39 (GND) |
| ボタン — 片方の端子 | Pin 37 (GPIO input) |
| ボタン — もう片方の端子 | Pin 39 (GND) |
ソフトウェア前提条件
使用するピンがGPIOとして設定されていることを確認してください(srpi-configで周辺機能が disabled になっている必要があります)。GPIOライブラリが未インストールの場合はインストールします:
pip3 install gpio
Enter fullscreen mode Exit fullscreen mode
実行方法
デモスクリプトはボードイメージの /app/40pin_samples/ に収録されています。そこに移動して実行します:
cd /app/40pin_samples
sudo python3 button_led.py
Enter fullscreen mode Exit fullscreen mode
期待される出力
スクリプト起動時に以下が表示されます:
Starting demo now!
Enter fullscreen mode Exit fullscreen mode
デモ実行中、ボタンの押下/解放のたびにピン31に出力される状態が表示されます:
Outputting 0 to Pin 31
Outputting 1 to Pin 31
Enter fullscreen mode Exit fullscreen mode
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()
Enter fullscreen mode Exit fullscreen mode
💡 ヒント: LEDの動作が反転している場合は、ボタンモジュールにプルアップ抵抗が含まれている可能性があります。
if button_state == 0:ブロック内の0と1のロジックを入れ替えて、ハードウェアに合わせてください。
トラブルシューティング
-
Permission denied: GPIOアクセスにはroot権限が必要です。必ず
sudoでスクリプトを実行してください。 -
Pin not responding:
srpi-configでピンがdisabled(GPIOモード)に設定されていること、および変更後に再起動したことを確認してください。 -
Demo file missing: サンプルは
/app/40pin_samples/にあります。ディレクトリが存在しない場合は、ボードイメージを更新するか、公式RDK X5ドキュメントからサンプルをコピーしてください。
まとめ
以下の内容を習得しました:
- RDK X5 40ピンヘッダーのピン配置と電気的制限の確認。
- ピンマルチプレックスおよび
okay/disabledステータスの意味の理解。 srpi-configを用いた周辺バスの有効化/無効化。- ユーザースペースPythonによるボタン + LED回路の制御。
これにより、同じ40ピンヘッダーからI2Cセンサー、UART通信、SPIディスプレイ、PWMモーター制御などへ展開できます。
*この記事は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.