GPIO制御(コンソール)

SAMA5D3 Xplained(以下SAX)を購入したときに、LEDの点滅を行いました。SAXのLEDはLED制御クラスのデバイス・ドライバを使用しています。今回は新しく購入したArduinoシールドのLEDをGPIO経由で制御しました。

LEDとの接続

LEDにはJ18ヘッダの”7”ピンを接続しました。接続はLEDのアノードです。世代的にはICのピンはカソードに接続したいところですが、アノードしか基板から出ていないので仕方有りません。

SAX J18ヘッダの”7”ピンは、ユーザー・マニュアルによればPC5です。以下の図は、SAX ユーザー・マニュアルからの引用です。

image

GPIOの準備

GPIO PC5ピンを使うには準備が必要です。

まず、/sys/class/gpioに移動します。ディレクトリの中はこんな感じです。

root@sama5d3-xplained:/sys/class/gpio# ls
export  gpiochip0  gpiochip128  gpiochip32  gpiochip64  gpiochip96  unexport

ここにあるのは全て補助デバイスと補助ディレクトリです。PC5を使うには、PC5に対応したディレクトリを作らなければなりません。

PC5対応ディレクトリを作るには、exportファイルを使います。このファイルは指定されたGPIOビットを有効にして制御可能にする特殊ファイルです。具体的にはGPIOビットの通算番号を与えることで、そのビットが利用可能になります。

PC5はPORT Cの5番ピンです。PORT Cは3番目のポートであり、通算番号のオフセットとして64を持っています。そこで、PC5の通算番号は64+5=69となります。早速69をexportしてみましょう。

root@sama5d3-xplained:/sys/class/gpio# ls
export  gpiochip0  gpiochip128  gpiochip32  gpiochip64  gpiochip96  unexport
root@sama5d3-xplained:/sys/class/gpio# echo 69 > export
root@sama5d3-xplained:/sys/class/gpio# ls
export     gpiochip128  gpiochip64  pioC5
gpiochip0  gpiochip32   gpiochip96  unexport
root@sama5d3-xplained:/sys/class/gpio#

pioC5ディレクトリが現れました。中に入って内容を見てみます。

root@sama5d3-xplained:/sys/class/gpio# cd pioC5
root@sama5d3-xplained:/sys/class/gpio/pioC5# ls
active_low  device  direction  edge  power  subsystem  uevent  value

いくつかの機能ファイルが作られています。このうち今回使うのはdirectionとvalueです。directionにin/outを書き込むと、ピンが入力/出力になります。

root@sama5d3-xplained:/sys/class/gpio/pioC5# cat direction
in
root@sama5d3-xplained:/sys/class/gpio/pioC5# echo out > direction
root@sama5d3-xplained:/sys/class/gpio/pioC5# cat direction
out

これで準備完了です。あとは、valueに値を書き込めばLEDが点灯・消灯します。今回は1で点灯、0で消灯です。

root@sama5d3-xplained:/sys/class/gpio/pioC5# echo 1 > value
root@sama5d3-xplained:/sys/class/gpio/pioC5# echo 0 > value

参考リソース

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください