ROCK64+ArmbianからGPIO制御

ゲームコンソールにもなるROCK64だが、GPIOやSPIの信号を入出力するためのコネクタピンに
ハードロジックを接続してLinuxから制御したいと思っていたので、その検証をしてみることに。

まずはGPIOの制御方法だが、知りたい情報は下のサイトにほとんど書いてあった。

https://www.cnx-software.com/2017/08/07/rock64-board-review-part-2-quick-start-guide-with-ubuntu-16-04-3-mate-multimedia-features-some-benchmarks/

コネクタ ピン番号 GPIO名称
PI2 15 GPIO3_A4
PI2 16 GPIO3_A5
PI2 18 GPIO3_A6
PI2 22 GPIO3_A7

仮に上の表のGPIOを出力制御をするとするなら、スクリプトで操作をまとめると以下のようになる。
試しにピンから信号を引き出してテスタで電圧を見たところ、いずれのピンもうまく動いているようなので
GPIOを動かすための手続きは比較的簡単であることがわかった。

# GPIO3_A4 OUTPUT
echo 100 > /sys/class/gpio/export            # GPIO NUM:32*3+8*0(A)+4=100
echo out > /sys/class/gpio/gpio100/direction # OUTPUT
echo 1 > /sys/class/gpio/gpio100/value       # OUT:High(3.3V)
echo 0 > /sys/class/gpio/gpio100/value       # OUT:Low(0.0V)

# GPIO3_A5 OUTPUT
echo 101 > /sys/class/gpio/export            # GPIO NUM:32*3+8*0(A)+5=101
echo out > /sys/class/gpio/gpio101/direction # OUTPUT
echo 1 > /sys/class/gpio/gpio101/value       # OUT:High(3.3V)
echo 0 > /sys/class/gpio/gpio101/value       # OUT:Low(0.0V)

# GPIO3_A6 OUTPUT
echo 102 > /sys/class/gpio/export            # GPIO NUM:32*3+8*0(A)+6=102
echo out > /sys/class/gpio/gpio102/direction # OUTPUT
echo 1 > /sys/class/gpio/gpio102/value       # OUT:High(3.3V)
echo 0 > /sys/class/gpio/gpio102/value       # OUT:Low(0.0V)

# GPIO3_A7 OUTPUT
echo 103 > /sys/class/gpio/export            # GPIO NUM:32*3+8*0(A)+7=103
echo out > /sys/class/gpio/gpio103/direction # OUTPUT
echo 1 > /sys/class/gpio/gpio103/value       # OUT:High(3.3V)
echo 0 > /sys/class/gpio/gpio103/value       # OUT:Low(0.0V)


GPIOに加えSPIも使えるようにしておくと外部接続のペリフェラルをほとんどを操作することができるようになるので
次回はSPIの操作手続きを確認してみることにする。