GPIO (General Purpose Input/Output)

目次

はじめに

入出力(I/O)ポートは、マイコンのもっとも基本的な機能です。スイッチや制御信号の監視から、LEDの点滅やリレー制御などの基本的な操作から、頑張ればUARTやSPI、I2C通信だって自力で行えます。
I/Oポートのうち入力にも出力にもなるものはGPIO(General Purpose Input/Output)と呼ばれています。昔は入力専用、出力専用と分かれていることが多かったですが、今ではほぼすべてのポートが入出力兼用です。

GPIOの構成

GPIOは汎用ポートとも呼ばれ、下図のような構成となっています。上半分が入力回路、下半分が出力回路です。端子の近くには保護用のダイオードがある他、プルアップ/プルダウン抵抗を搭載していることも多いです。


入力回路は端子から入力された信号を制御部にHighかLowで伝えます。出力回路は逆に、制御部から受けた信号を端子に出力します。しかし常にHighかLowを出力していては、入力に弊害があります。このため出力回路は下図のように、Hi-z(ハイインピーダンス)状態も含むスリーステートバッファーとなっています。

未使用のI/Oポート

マイコンには多数のI/Oポートが搭載されています。これらI/Oポートをすべて使い切るようなことは滅多になく、一般的には余ります。この余ったポートをどうするか、というのは安全設計上重要です。
理想論でいうなら、未使用ポートは開放したまま放置しておいても構いません。しかし現実にはノイズの多い環境や、過渡状態でマイコンが誤動作してしまう恐れがあります。このため未使用のI/Oポートに対して、次のような対策を取る必要があります。

入力モードにして外部抵抗でプルアップまたはプルダウンする。(入力専用ポートもこちら)

出力専用ポートでない限り、こちらの方法を推奨します。各ポートは下図(a)のように、個々に抵抗を介してプルアップ/プルダウンしてください。下図(b)のようにしてはいけません。誤って入力と出力設定になってしまった場合、ショートします。
また内部抵抗でプルアップまたはプルダウンしても構わないのですが、長期において安定した動作が求められる場合は外部抵抗が安心できます。プログラムが誤作動した場合に、内部プルアップ/プルダウンの設定が正常に働く保証がないためです。

(a) 推奨例

(b) 禁止令

出力モードにしてポートを開放する。(出力専用ポートもこちら)

内蔵プルアップ/プルダウンもなく、かつ部品点数の削減が求められる場合は、出力モードにしてHighまたはLowに固定してください。この対応でも基本的に問題が起こることはありません。ただし起動後のGPIOは入力モードです。起動後すぐに出力設定に切り替えてください。

その他

I/Oポートの設定は、一般的に起動直後の初期設定でしか行われません。しかしノイズやプログラムの誤作動により、意図せず入出力が切り替わってしまう可能性があります。このため定期的にI/Oポートの設定を上書きすることを推奨します。

コメント

コメントする

CAPTCHA


目次