GPIO

GPIOは、集積回路やコンピュータボード上の一般的なピンであり、その動作（入力ピンであるか出力ピンであるかを含む）は、実行時にユーザによって制御可能である。GPIOは"General-purpose input/output"の略で、「汎用入出力」を意味する。

マイクロプロセッサ、マイクロコントローラ、インタフェースデバイスは、外界と接続するための一つまたは複数のGPIOインタフェースを持っている。

GPIOピンにはあらかじめ定義された目的がなく、デフォルトでは使用されない。

すでに構築済みのシステムにシステムインテグレータがデジタル制御線を追加したい場合に、あらかじめチップにGPIOをつけておけば、そのための回路を追加する必要がなくなる。例えば、RealtekのALC260チップ（音声コーデック用）には8つのGPIOピンがあり、デフォルトでは使用されない。エイサーのラップトップでは、ALC260のGPIOの1つ目のピン(GPIO0)を使用して、ラップトップの内蔵スピーカと外付けヘッドフォンジャックのためのアンプをオンにしている。

使用法 

メーカーは以下のような場合にGPIOを使用する。

 ピンが少ないデバイス : システムオンチップ、組み込みおよびカスタムハードウェア、プログラマブルロジックデバイス（FPGAなど）などの集積回路
 多機能のチップ : 電源管理、音声コーデック、ビデオカード
 組み込みアプリケーション（Arduino、BeagleBone、PSoCキット、Raspberry Piなど）は、さまざまな環境センサー（赤外線カメラ、ビデオ、温度、ジャイロスコープ、加速度計など）からの読み取り、直流モータ・音声・液晶ディスプレイ・ステータスLEDなどへの出力の書き込みにGPIOを使用する。

機能 
GPIOの機能には以下のものがある。
 GPIOのピンは入力用にも出力用にも設定できる。
 GPIOのピンは有効にも無効にも設定できる。
 入力値は読み出しできる（通常は二進数）。
 出力値は書き込みと読み出しができる。
 入力値は割り込みとして使用できる。

GPIOデバイスの種類は非常に広範囲である。時には、デバイスは非常に単純であり、入出力を切り替えられるピンのグループである。一方では、それぞれのピンが異なるロジック電圧の入出力が出来るよう柔軟に設定可能であり、ドライブ能力やプルアップ／プルダウンも設定可能である。普遍的ではないが、典型的には入出力電圧は、GPIOを持つデバイスの供給電圧に制限される。制限を越えた電圧により、デバイスが損傷を受けることがある。

個別のGPIOの読み書きや入出力の設定は、一つまたは複数の制御レジスタを読み書きすることで行う。いくつかのGPIOには5V耐性の入力ピンがある。低い供給電圧(2V)であっても、デバイスは損傷を受けることなく、5Vの入力を受け入れられる。

ポート 
しばしばGPIOはピンのグループ（典型的には8ピン）であるGPIOポートで扱われることがある。通常は個別のGPIOピンごとに入力または出力に個別に設定出来るが、GPIOポートはグループごとの入出力設定となる。

関連項目 
 
 I²C
 
 シリアル・ペリフェラル・インタフェース

出典

外部リンク 
 ALSA Development List
 Linux Kernel Doc on GPIO
 LinuxTV GPIO Pins Info

コンピュータバス
集積回路
入出力