揮発性のメモ2

組込みLinux開発を通じて得た知識と通じずに得た知識をメモ書きしておく

ラズパイでGPIOを使う

Raspberry Pi 4 Model B で勉強中

$ cat /etc/rpi-issue
Raspberry Pi reference 2023-12-11

ラズパイのGPIOについて

  • ピン配置はラズパイ2,3,4,5で同一
  • 電圧は3.3V
  • 電流は1ピン当たり16mA、全体で50mA出力可能
    LEDをつけるなら制限抵抗はとりま100~200Ωくらいで
  • 入力は 0:LO, 1:HI (ONはGNDにつなぐので 0:LO)
  • 出力は 0:LO, 1:HI
  • ほとんどのピンはデフォルトで入力方向、プルアップ

https://www.raspberrypi.com/documentation/computers/raspberry-pi.htm
第1章 Raspberry Pi 4B ハードウェア仕様の調査 - ラズパイ実験室

GPIO操作

pinout

ピン配置を見るコマンド
https://pinout.xyz/

pinctrl

ピンのIN/OUT、プルアップ/プルダウンなどを制御するコマンド

pinctrl set 4 op     # GPIO4 を出力に変更(0:LO になる)
pinctrl set 4 op dh  # GPIO4 を出力に変更(1:HI になる)
pinctrl set 4 dh     # GPIO4 の出力を1:HIにする
pinctrl set 4 dl     # GPIO4 の出力を0:LOにする

pinctrl set 3 ip pu  # GPIO3 を入力(プルアップ)に変更
pinctrl get 3        # GPIO3 の状態取得
# 出力例
#  3: ip    pu | hi // SCL1/GPIO3 = input

pinctrl get 0-27     # GPIO0~27 の状態取得
pinctrl poll 3-4,6   # GPIO3~4 と 6 の出力/入力を監視
/sys/class/gpio/

ピンのIN/OUTなどを制御するファイル(sysfs)
(プルアップ制御の機能は無い)

cd /sys/class/gpio/

echo 4 > export             # GPIO4 の制御ファイルを作成
echo out > gpio4/direction  # GPIO4 を出力に変更(0:LO になる)
echo high > gpio4/direction # GPIO4 を出力に変更(1:HI になる)
echo 1 > gpio4/value        # GPIO4 を1:HIにする
echo 0 > gpio4/value        # GPIO4 を0:LOにする

echo 3 > export             # GPIO3 の制御ファイルを作成
echo in > gpio3/direction   # GPIO3 を入力に変更
cat gpio3/value             # GPIO3 の状態取得
# 出力例
# 1

廃止コマンド

raspi-gpio

(廃止予定)
ピンのIN/OUT、プルアップ/プルダウンなどを制御するコマンド
オプションはpinctrlとほぼ同じ。出力フォーマットが全然違う

gpio

(廃止)
ピンのIN/OUT、プルアップ/プルダウンなどを制御するコマンド
WiringPi のこと