「GPIO」の版間の差分

3,366 バイト追加 、 3 年前
en:General-purpose input/output 2017-05-09T10:59:32版を訳出
(en:General-purpose input/output 2017-05-09T10:59:32版を訳出)
[[File:BPI-R1-GPIO.jpg|thumb|GPIOのオス側のピン]]
{{複数の問題
 
|出典の明記=2013年6月12日 (水) 06:13 (UTC)
'''GPIO'''は、[[集積回路]]やコンピュータボード上の一般的な[[端子|ピン]]であり、その動作(入力ピンであるか出力ピンであるかを含む)は、実行時にユーザによって制御可能である。GPIOは"General-purpose input/output"の略で、「汎用[[入出力ポート|入出力]]」を意味する。
|独自研究=2013年6月12日 (水) 06:13 (UTC)
}}
'''GPIO'''はGeneral Purpose Input/Output(汎用[[入出力ポート|入出力]])の略語である。
 
[[マイクロプロセッサ]]、[[マイクロコントローラ]]、[[インタフェース (情報技術)|インタフェース]]デバイスは、外界と接続するための一つまたは複数のGPIOインタフェースを持っている。
 
GPIOピンにはあらかじめ定義された目的がなく、デフォルトでは使用されない<ref>{{Cite book|title=Raspberry Pi - The Complete Manual|last=|first=|publisher=[[Imagine Publishing]]|year=2016|isbn=978-1785463709|editor-last=White|editor-first=Jon|edition=7|location=|pages=36|quote=|via=}}</ref><ref name=":0">{{Cite book|url=https://docs.oracle.com/javame/8.0/me-dev-guide/toc.htm|title=Oracle® Java ME Embedded Developer's Guide|last=|first=|publisher=[[Oracle Corporation]]|year=2014|isbn=|edition=8|location=|pages=|chapter=General Purpose Input/Output|quote=|chapter-url=https://docs.oracle.com/javame/8.0/me-dev-guide/gpio.htm|via=}}</ref>。
入力として動作した場合は電気回路のほかの部分からの[[デジタル信号]]を読み取り、出力として動作した場合は他デバイスの制御や信号の通知を行う。
 
すでに構築済みのシステムに[[システムインテグレータ]]がデジタル制御線を追加したい場合に、あらかじめチップにGPIOをつけておけば、そのための回路を追加する必要がなくなる。例えば、[[Realtek]]のALC260チップ(音声コーデック用)には8つのGPIOピンがあり、デフォルトでは使用されない。[[エイサー (企業)|エイサー]]のラップトップでは、ALC260のGPIOの1つ目のピン(GPIO0)を使用して、ラップトップの内蔵スピーカと外付けヘッドフォンジャックのための[[増幅回路|アンプ]]をオンにしている。
しばしばGPIOはピンのグループ(典型的には8ピン)である'''GPIOポート'''で扱われることがある。通常は個別のGPIOピンごとに入力または出力に個別に設定出来るが、GPIOポートはグループごとの入出力設定となる。
 
== 使用法 ==
個別のGPIOの読み書きや入出力の設定は、一つまたは複数の[[レジスタ (コンピュータ)#ペリフェラルデバイスのレジスタ|制御レジスタ]]を読み書きすることで行う。
[[File:Pi Zero.png|thumb|Raspberry Pi Zero with headerless GPIO array along the top]]
 
メーカーは以下のような場合にGPIOを使用する。
場合によっては、GPIOは[[割り込み (コンピュータ)|割り込み]]を生成したり、大量のデータのデバイスへの出力/デバイスからの入力を効率的に行うために、[[Direct Memory Access|DMA]]を使用出来る。
 
* ピンが少ないデバイス : [[System-on-a-chip|システムオンチップ]]、組み込みおよびカスタムハードウェア、プログラマブルロジックデバイス([[FPGA]]など)などの集積回路
GPIOデバイスの種類は非常に広範囲である。時には、デバイスは非常に単純であり、入出力を切り替えられるピンのグループである。
* 多機能のチップ : 電源管理、音声コーデック、[[ビデオカード]]
* 組み込みアプリケーション([[Arduino]]、[[BeagleBone]]、[[PSoCキット]]、[[Raspberry Pi]]<ref>{{Cite web|url=https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md|title=GPIO - Raspberry Pi Documentation|last=|first=|date=|website=|publisher=Raspberry Pi Foundation|access-date=2016-11-03}}</ref>など)は、さまざまな環境センサー([[赤外線カメラ]]、ビデオ、温度、[[ジャイロスコープ]]、[[加速度計]]など)からの読み取り、直流モータ・音声・液晶ディスプレイ・ステータス[[発光ダイオード|LED]]などへの出力の書き込みにGPIOを使用する。
 
== 機能 ==
一方では、それぞれのピンが異なるロジック電圧の入出力が出来るよう柔軟に設定可能であり、ドライブ能力や[[プルアップ]]/[[プルダウン]]も設定可能である。
GPIOの機能には以下のものがある<ref name=":0" />。
* GPIOのピンは入力用にも出力用にも設定できる<ref name=":1">{{Cite book|url=http://www.egr.msu.edu/classes/ece480/capstone/fall09/group03/AN_balachandran.pdf|title=General Purpose Input/Output (GPIO)|last=Balachandran|first=Sasang|publisher=[[Michigan State University College of Engineering]]|year=2009|isbn=|location=|pages=|quote=|via=}}</ref>。
* GPIOのピンは有効にも無効にも設定できる。
* 入力値は読み出しできる(通常は[[二進数]])。
* 出力値は書き込みと読み出しができる。
* 入力値は[[割り込み (コンピュータ)|割り込み]]として使用することができる。
 
GPIOデバイスの種類は非常に広範囲である。時には、デバイスは非常に単純であり、入出力を切り替えられるピンのグループである。一方では、それぞれのピンが異なるロジック電圧の入出力が出来るよう柔軟に設定可能であり、ドライブ能力や[[プルアップ]]/[[プルダウン]]も設定可能である。普遍的ではないが、典型的には入出力電圧は、GPIOを持つデバイスの供給電圧に制限される。制限を越えた電圧により、デバイスが損傷を受けることがある。
 
個別のGPIOの読み書きや入出力の設定は、一つまたは複数の[[レジスタ (コンピュータ)#ペリフェラルデバイスのレジスタ|制御レジスタ]]を読み書きすることで行う。いくつかのGPIOには'''5V耐性'''の入力ピンがある。低い供給電圧(2V)であっても、デバイスは損傷を受けることなく、5Vの入力を受け入れられる。
 
== ポート ==
しばしばGPIOはピンのグループ(典型的には8ピン)である'''GPIOポート'''で扱われることがある。通常は個別のGPIOピンごとに入力または出力に個別に設定出来るが、GPIOポートはグループごとの入出力設定となる<ref name=":1" />
 
== 関連項目 ==
*[[SGPIO]] ([[:{{仮リンク|SGPIO|en:|SGPIO]])}}
* [[I2C|I²C]]
* {{仮リンク|プログラムI/O|en|Programmed input/output}}
* [[シリアル・ペリフェラル・インタフェース]]
 
== 出典 ==
{{reflist}}
 
== 外部リンク ==
{{computer-stub}}
* [http://www.spinics.net/lists/alsa-devel/msg03646.html ALSA Development List]
* [https://www.kernel.org/doc/Documentation/gpio/gpio.txt Linux Kernel Doc on GPIO]
* [http://linuxtv.org/wiki/index.php/GPIO_pins LinuxTV GPIO Pins Info]
 
[[Category:コンピュドウェアタバス規格]]
[[Category:集積回路]]
142,780

回編集