マイコンが行う仕事の中で、最も簡単な仕事は、「端子から0/1の信号を出すこと」と、「端子に入力された0/1の信号を読み取ること」です。非常に簡単な動作ですが、非常に重要な動作です。どんな高機能なマイコンでも、必ず使われている機能であり、今回はこの機能を行う「入出力ポート」を説明します。
端子から0/1の信号を出力し、端子に入力された0/1の信号を読み取る機能を行う部分は、一般的に「入出力ポート」と呼ばれています。入力(Input)のI、出力(Output)のOを使って「IOポート」(I/Oポート)と記述して、“アイオーポート”と呼ぶ場合も多いようです。STマイクロエレクトロニクスのSTM32やSTM8では、多目的に多方面で使用できると言う意味で「汎用」を付けて、「汎用IO」(General Purpose Input Output)と呼んだり、英文表記の頭文字を取って「GPIO」と呼んでいます。
“ポート”(Port)は読んで字のごとく、“港”のことです。港から荷物を出したり、入れたりするので、マイコンでもポートという言葉が使われています。マイコンの場合の荷物は、0または1のデータになります。
図1にGPIOの最も簡単な使い方の例を示します。
押しボタンスイッチが押されていない時は、ポート2へは0(GNDレベル)が入力されますが、押しボタンを押すと1(電源レベル)に切り替わります。一方、ポート1は通常は1を出力しておくとLEDは点灯せず、0を出力するとLEDは点灯するようになっています。この2つの動作をマイコンのプログラムで連動させると、押しボタンを押せばLEDが点灯し、離すと消灯する回路が作れます。
実際は、押しボタンスイッチは制御回路の入力信号。LEDはモータのドライバICなどにつながれて使われています。
では実際にGPIOの構成がどうなっているか見てみましょう。構成は各社のマイコンで異なっていますので、詳細は各マニュアルを見なければなりません。ここでは、STマイクロエレクトロニクスのSTM32のGPIOをベースにして説明します。
図2にGPIOの構成図を示します。
上半分が入力回路、下半分が出力回路です。右側にGPIOピンがあって、ここからデータが入ったり、出たりします。ピンのすぐ近くには、ノイズやサージ電圧を電源(またはGND)に逃がすための保護ダイオードが付いています。また、プルアップ/ダウン抵抗が付いていて、外付け抵抗を削減できるようになっています。このプルアップ/ダウン抵抗はソフトウェアで接続したり、切り離したりできます。入力データはCMOS回路で一度受け、その後内部回路に伝わります。このCMOS回路を入力バッファと呼びます。この図ではCMOSインバータを使っています。
マイコン内部から来た出力データは出力バッファによって出力されます。このバッファはCMOSインバータの構成ですが、マイコン外部の回路をドライブするので、ドライブ能力の高いCMOSが使われます。
GPIOの構成で「NMOSオープンドレイン」と呼ばれる構成があります。NMOSのドレインが開放状態、すなわちPMOSがNMOSにつながっていない構成です。
図2の出力バッファでPMOSがなく、NMOSだけで構成される場合を「NMOSオープンドレイン」と呼びます。図2の右側に参考図として記述してあります。このままでは1( Highレベル)が出力されませんので、外付けプルアップ抵抗が必要になります。NMOSオープンドレインは、I2Cなどの通信用端子に使われています。
Copyright © ITmedia, Inc. All Rights Reserved.