そもそもGPIOってなに?(初心者向け)

  • このエントリーをはてなブックマークに追加

いままで説明で「GPIO」という言葉を普通に使っていましたが、初心者だと

「そもそもGPIOってなに?」

だと思いますので、今回簡単に説明したいと思います。

 

GPIO=General Purpose Input/Output

汎用のインプット・アウトプットです。

CPUには電源ピンやJTAG用・専用機能のための特殊ピンも多いですが、それ以外のほとんどはこのGPIO用のピンとなっています。

 

CPUのほとんどのピンがGPIOということからも、このGPIOが如何に重要なものかと分かるかと思います。

 

このGPIOは何ができるのでしょうか。

まず、入力と出力の機能があって、その機能は切り替え式です。

 

出力機能:

HIGH(ほぼ電源電圧)を出す。

LOW(ほぼ0V)を出す。

 

入力機能:

入ってきている電圧がHIGH/LOWのどちらかを判別する。

 

これだけです。

「これだけでなにができるんだ??」

と思うかもしれませんが、実はこれでなんでもできるんです。

 

出力にしてそのさきにLEDをつなげれば、LEDを点灯・消灯できます。

出力にしてそのさきにトランジスタなどをつなげれば、大電力が必要なモーターもコントロールできます。

もっといえば、高度な機能がないIC類、例えばモータードライバだとか電源ICなんていうのは、そのICのピンをHIGHにするかLOWにするかだけで動作ON・OFFが切り替わりますので、このGPIOだけで制御できてしまうわけです。

そういったICは状態出力もHIGH・LOWだけなので、それを入力モードにしたGPIOで受ければCPUで状態を判定できるわけです。

デジタル出力のセンサーとかも入力モードのGPIOで受ければいいわけです。

 

基本的にはデジタル回路はHIGH・LOWだけなので、実はこのGPIOだけで(原理的には)すべての事ができるんです。

ただし、GPIOでも(原理的にはできるけど)実際にやろうとすると難しいこともあります。

例えば、通信です。

UARTやSPIやI2Cなどの通信プロトコルは、CPUにその周辺機器が乗っていれば「◯◯のデータを送ってね」というだけで、周辺機器が勝手にデータを送ってくれて、送信が終わったら「送信終わったよ」と周辺機器が教えてきてくれます。

しかし、これをGPIOでやると、プログラムで全部操作しないといけないので、

「クロックのポートをHIGH出力にして、データ送信のポートをnbit目の状態にして、そして?us待ってからまたくクロックのポートをLOW出力にして・・・」

ということを全部やらないといけません。

これをやると、無理矢理なので遅い・CPUが他のことが出来ないという問題があるので、普通はこんなことはやりません。

(世の中にはGPIOで通信機能を実現しているものもないことはないです。特殊例ですが)

 

とまぁ、原理的にはデジタル系のことはなんでもできますが、唯一通信機能は苦手ということです。

逆に言うと、それ以外はほとんどなんでもできるので、これがないとなにもできません。

 

以上、小田切でした。

  • このエントリーをはてなブックマークに追加

お問い合わせ

電子回路の専門家がいない会社さん・個人事業主さんをターゲットとした、

電子回路のコンサルティングを行っています。


電子回路設計 コンサルティング 問い合わせページ

SNSでもご購読できます。