GPIO|汎用入出力の基礎と実践

GPIO

GPIO(General Purpose Input/Output)は、マイコンやSoCが外部のセンサ、スイッチ、LED、アクチュエータなどと汎用的に信号の入出力を行うための端子である。各ピンは入力または出力に設定でき、論理レベル、プルアップ/プルダウン、割り込み、ドライブ形式(プッシュプル/オープンドレイン)などを個別に選択する設計が一般的である。ハードウェア設計とファームウェアの双方に跨る基礎インタフェースであり、組込みシステムの動作確認、ボード bring-up、デバッグ、簡易通信にも頻繁に用いられる。

論理レベルと電気特性

デジタル信号としてのGPIOは、電源電圧(例:3.3Vや5V)に対して定義された閾値でH/Lを判定する。入力の閾値、ヒステリシス、シュミットトリガの有無はデバイス依存である。出力ではH/Lの駆動電圧に加え、ソース/シンク可能電流(数mA〜数十mA)に制限があるため、LEDを直接駆動する場合でも直列抵抗を設け、定格を超えないよう配慮する。ESD保護ダイオード、クランプ素子、シリーズ抵抗の挿入は、外来ノイズや誤接続への耐性を高める基本手法である。

入力モード(プルアップ/プルダウンとデバウンス)

入力設定では内部プルアップ/プルダウンを有効化して浮遊状態(フローティング)を避ける。メカニカルスイッチはチャタリングを生じるため、RC回路やソフトウェアのデバウンス(一定時間内の多重変化を無視)を組み合わせると誤検出を抑制できる。外部センサ出力がオープンコレクタ(オープンドレイン)の場合、プルアップ抵抗で論理Hへバイアスし、低インピーダンスでLを確実に検出する。

出力モード(プッシュプルとオープンドレイン)

プッシュプルはH/L双方を能動的に駆動し、立上がり/立下りが速く、LEDやロジックの直接駆動に適する。一方オープンドレインはLのみを能動駆動し、Hはプルアップに委ねるため、レベル変換やワイヤドAND、複数デバイスの線OR構成が容易になる。I2Cのようなバスは後者の概念に近く、衝突や優先制御を安全に行える。

代替機能(AF)とマルチプレクサ

多数のペリフェラルを持つSoCでは、各ピンがGPIOのほかUART、SPI、I2C、タイマ入力捕捉、PWM出力などの代替機能(Alternate Function, AF)にマルチプレクスされる。ピン割当はデータシートのピンマップとAF表を参照し、重複しない構成を選択する。必要に応じてピンリマップ機能やパッケージ差異を考慮してレイアウト計画を立てる。

割り込みとイベント検出

GPIO入力は立上がり/立下りエッジ、両エッジ、またはレベル変化で割り込みを生成できる。外部割り込みコントローラ(EXTI等)と連携し、優先度、トリガ条件、マスク設定を行う。ノイズ系統ではスパイクフィルタやソフトウェア側の再確認(複数サンプル合意)を実装し、余計なISR実行を抑える。低消費電力動作ではウェイクアップソースとしてのGPIO割り込み設定が有効である。

レベル変換と混在電圧への対応

異なるI/O電圧(5V系と3.3V系など)が混在する場合、トランジスタ、MOSFET、バッファICでレベルシフタを構成する。入力耐圧を超える接続は破損の原因となるため、クランプとシリーズ抵抗で電流制限を行い、保護設計を徹底する。オープンドレイン+プルアップの組合せは異電圧間の簡易変換にも有効である。

設定手順(一般的なフロー)

  1. クロック供給:I/Oポートに対するバス/ポートクロックを有効化する。
  2. モード設定:入力/出力/AF/アナログから選択し、必要に応じてプル抵抗やドライブ形式を指定する。
  3. 速度/ドライブ:立上がり要求やEMI要件に応じてスルーレートや最大電流を設定する。
  4. 割り込み:必要ならエッジ種別、優先度、マスクを設定し、ISRを準備する。
  5. 検証:テストポイントやLED、ロジックアナライザ、オシロスコープで波形とタイミングを確認する。

EMC/EMIと信頼性設計

長配線や外部接続コネクタへ出るGPIOは静電気放電(ESD)や雷サージ、伝導/放射ノイズの影響を受けやすい。シリーズ抵抗とRCスナバ、TVSダイオード、フェライトビーズ、グランドガード配線、基板上の帰還経路最適化により堅牢性を高める。スキャン周期やデバウンス時間は用途の反応性とノイズ耐性のトレードオフで決める。

テスト、デバッグ、保守

基板初期評価ではGPIOを用いた点灯試験、パターン出力、入力読出しループで配線の誤りを早期に発見できる。ファームウェアではトグル周波数を固定してオシロで確認する手法や、ピンにブレークポイント相当のトレース信号を割り当てる手法が有効である。量産後は製造テストのベクタにGPIO検査を組み込み、故障解析の再現性を高める。

よくある不具合と対策

  • 入力が不安定:プル抵抗未設定。内部プルの有効化または外付け抵抗を追加する。
  • LEDが暗い/焼損:電流制限不足。直列抵抗値とポート許容電流を再計算する。
  • 誤割り込み多発:スパイク対策不足。フィルタ、デバウンス、トリガ条件の見直し。
  • 他機能と衝突:AFの競合。ピン再割当と回路変更を検討する。
  • 混在電圧の破損:耐圧超過。レベルシフタと保護部品を導入する。

応用例と設計指針

GPIOは、単純なLEDやスイッチに留まらず、ラッチICやシフトレジスタとの併用でポート拡張、PWM的なソフトウェア点灯(ソフトPWM)、簡易的な1線式プロトコルの実装などへ拡張できる。リアルタイム性が要求される場合は割り込みとDMA、タイマや専用ペリフェラルと役割分担し、CPU負荷を抑える。設計の核心は「電気的安全」「時間的正しさ」「資源の整合」の三点であり、データシートの絶対最大定格とI/O特性表を常に根拠として参照する。

コメント(β版)