Skip to main content

40ピンGPIOへのアクセス

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

ODYSSEY - X86J41x5 40ピンGPIOへのアクセスと制御

このチュートリアルでは、Linux(Ubuntu)環境下でODYSSEY - X86J41x5の40ピンGPIOにアクセスし、制御する方法を説明します。これにより、ODYSSEY - X86J41x5を使用してIoTプロジェクトを簡単に構築することができます!

40ピンGPIOピン配置図

Ubuntu 18.04

Linux GPIOFunctionRPi GPIOPin No.Pin No.RPi GPIOFunctionLinux GPIO
3.3V125V
386I2C5_SDABCM2_SDA345V
387I2C5_SCLBCM3_SCL56GROUND
337BCM478BCM14_TXD493UART0_TXD
GROUND910BCM15_RXD492UART0_RXD
364BCM171112BCM18338
412BCM271314GROUND
413BCM221516BCM23421
3.3V1718BCM24422
359SPI0_MOSIBCM10_MOSI1920GROUND
358SPI0_MISOBCM9_MISO2122BCM25390
355SPI0_CLKBCM11_SCLK2324BCM8_CE0356SPI0_FSO
GROUND2526BCM7_CE1357SPI0_FS1
388I2C6_SDABCM0_ID_SD2728BCM1_ID_SCL389I2C6_SCL
415BCM52930GROUND
416BCM63132BCM12391
417BCM133334GROUND
339BCM193536BCM16410
419BCM263738BCM20340
GROUND3940BCM21341

ピンの凡例
GPIO
UART
I2C
SPI

Ubuntu 20.04

Ubuntu 22.04

GPIO

ODYSSEY - X86J41x5 のデフォルトピンは機能モードに設定されています。例えば、ピン3はデフォルトで GPIO モードではなく I2C に設定されています。デフォルトで GPIO を使用したい場合は、以下を確認してください。

note

40ピン GPIO は双方向レベル変換を備えており、使用時の電流は 1mA を超えてはなりません。これは、IO 電流が非常に低いことを意味します。

Linux の sysfs GPIO インターフェースを使用して GPIO を使用したり、機能モードピンを GPIO に変更したりできます。ピン7を例にとると、以下のコードでピン7に接続された LED モジュールを点灯させることができます:

sudo -i
cd /sys/class/gpio
echo 337 > export
cd gpio337
echo "out" > direction
echo 1 > value

LED を消灯するには:

echo 0 > value

GPIO の使用を終了した後は、アンエクスポートする必要があります:

echo "in" > direction
cd ..
echo 337 > unexport

割り込み

ODYSSEY - X86J41x5 で割り込みをテストするには、以下の手順に従ってください:

ここでは、python-periphery を使用して、ユーザースペース Linux で GPIO インターフェースにアクセスします(Linux GPIO 番号付け)。

  • python3-pip をインストールします。
sudo apt install python3-pip
sudo pip3 install python-periphery
  1. IRQtest テストスクリプトをローカルドライブにダウンロードします。

  2. ダウンロードしたスクリプトのディレクトリに移動し、テストスクリプトを実行します:

sudo python3 IRQtest.py

ピンをデフォルト GPIO モードに変更する

40ピンをデフォルト GPIO に設定したい場合は、BIOS の設定を変更することで可能です。

  1. ODYSSEY - X86J41x5 を再起動し、起動中に DEL キーを押し続けて BIOS メニューに入ります。

  2. Advanced -> HAT Configuration に移動します。

  3. GPIO の機能を希望する GPIO モードに変更します!


注: 他の GPIO をデフォルトで出力に設定することも可能です。

Grove Base Hat を使用した簡単な制御

Raspberry Pi 用の Grove Base Hat を使用して、簡単なデジタル信号を制御することもできます。例えば、I2C と UART ポートは現在使用できません(Grove Base Hat for Odyssey-X86 のファームウェアは開発中で、近日中にリリース予定です)。

D5 ポートを例にとります:

注: これは Raspberry Pi の BCM 番号付けシステムを参照しています -> BCM5。したがって、Odyssey-X86 で使用するには、その物理ピンを特定する必要があります。実際には物理 ピン番号 29 です。参考: Raspberry Pinouts

したがって、Odyssey-X86 に接続された Grove Base Hat の D5 を使用するための物理ピンは 29 であり、Linux GPIO 415 に対応します。

上記と同じ方法を使用して、この GPIO を制御できます:

sudo -i
cd /sys/class/gpio
echo 415 > export
cd gpio415
echo "out" > direction
echo 1 > value

アンエクスポートするには、前述の手順と同じ手順に従います。

UART

ODYSSEY - X86J41x5 の UART デバイスを確認するには、以下のコマンドを実行してください:

ls /sys/bus/pci/devices/0000\:00\:18.?/dw-apb-uart.*/tty/ | grep tty

ttyS4 は 40 ピンヘッダーの UART ピン(ピン8とピン10)に関連付けられています。これらのピンからアクセスするには、以下を実行してください:

sudo apt install screen
sudo screen /dev/ttyS4/ 115200

I2C

note
    ODYSSEY - X86J41x5 のデフォルト I2C スピードは 1MB/s で、設定変更はできません。

ODYSSEY - X86J41x5 の I2C ポートを識別するには、以下のコマンドを実行してください:

  • i2c_designware.0 -> ピン27と28 (I2C6_SDA と I2C6_SCL) の I2C チャネル
ls /sys/bus/pci/devices/*/i2c_designware.0/ | grep i2c
  • i2c_designware.1 -> ピン3と5 (I2C5_SDA と I2C5_SCL) の I2C チャネル
ls /sys/bus/pci/devices/*/i2c_designware.1/ | grep i2c

I2C チャネル 0 に接続された周辺機器を検出するには、以下のコマンドを実行します:

sudo apt install i2c-tools
sudo i2cdetect -r -y 0

注: I2C チャネル 1 の場合、最後の引数 0 を 1 に変更してください。

SPI

SPI デバイスは、以下のコマンドを実行することで識別できます:

ls /sys/bus/pci/devices/0000\:00\:19.*/pxa2xx-spi.*/spi_master/ | grep spi

ユーザースペースでの SPI 有効化

SPI デバイスへのアクセスを有効にするには、以下の手順に従ってください:

  1. こちらの zip ファイル をダウンロードし、ローカルドライブに解凍します。

  2. 解凍したファイルのディレクトリに移動します:

chmod +x acpi-add acpi-upgrades install_hooks
sudo ./install_hooks && sudo acpi-add spidev*
  1. ODYSSEY - X86J41x5 を再起動します。

これで、/dev 内の SPI デバイスを確認できるようになります:

ls /dev/spi*

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。お客様の好みやニーズに応じた複数のコミュニケーションチャネルをご用意しています。

Loading Comments...