Armadilloフォーラム

拡張インターフェースのGPIOの使い方

junp

2017年3月16日 12時51分

Armadillo-X1拡張インターフェース(CON8)のGPIOを使おうと思ったのですが、
使い方がわからなかったので教えてください。

Armadillo-400シリーズと同じように/sys/class/gpioの中にGPIO9_1/のようなディレクトリが
あるかと思いましたが無いので、GPIOの使い方はArmadillo-400シリーズとは違うのでしょうか。

Armadillo-X1の製品マニュアルの「拡張インターフェースを使う」のところでは
I2C等を使うときにDevice Treeの変更が必要との記述がありますが、
GPIOを使うときにもDevice Treeの変更が必要なのでしょうか?

よろしくお願いします。

コメント

溝渕です。

> Armadillo-400シリーズと同じように/sys/class/gpioの中にGPIO9_1/のようなディレクトリが
> あるかと思いましたが無いので、GPIOの使い方はArmadillo-400シリーズとは違うのでしょうか。

Armadillo-400シリーズとの違いは、gpioをexportしているかどうか
(/sys/class/gpioの中にgpioディレクトリがあるかないか)です。

Armadillo-400シリーズでは、起動時に自動的にexportされていましたが、
Armadillo-X1ではされません。そのため、明示的にexportする必要があります。

gpioのexportは次のように行います。

[ax1]# echo [GPIO番号] > /sys/class/gpio/export

GPIO番号は次の式より導くことができます。
GPIOx_IOy -> (x - 1) * 32 + y
例えば、GPIO4_IO8(GON8 20ピン)の場合は、
(4 - 1) * 32 + 8 = 104
となります。

> Armadillo-X1の製品マニュアルの「拡張インターフェースを使う」のところでは
> I2C等を使うときにDevice Treeの変更が必要との記述がありますが、
> GPIOを使うときにもDevice Treeの変更が必要なのでしょうか?

PAD設定(Pull-Up/Down等)の変更や、GPIO Inputとして利用する場合には変更
が必要です。Outputとして利用する場合には不要です。

以上です。

早速の返信ありがとうございました。
拡張インターフェースのGPIOを動作させることができました。

> PAD設定(Pull-Up/Down等)の変更や、GPIO Inputとして利用する場合には変更
> が必要です。Outputとして利用する場合には不要です。
とのことですが、
gpioディレクトリのdirectionファイルに
inを書きこめば入力として使用でき、
outを書き込めば出力として使用できているようですが、
GPIO Inputとして利用する場合というのはそれとは違う利用方法なのでしょうか?

溝渕です。

> > PAD設定(Pull-Up/Down等)の変更や、GPIO Inputとして利用する場合には変更
> > が必要です。Outputとして利用する場合には不要です。

上記、DeviceTreeの変更が必要か否かについて記載しました。

> gpioディレクトリのdirectionファイルに
> inを書きこめば入力として使用でき、
> outを書き込めば出力として使用できているようですが、

gpio sysfsの利用方法については上記ご認識で合っています。

> GPIO Inputとして利用する場合というのはそれとは違う利用方法なのでしょうか?

いえ。利用方法については違いません。DeviceTreeを変更しなければ、Input
については正しい値の取得ができないという意味で記載しました。

以上です。