最初に一般的なGPIOの構造を説明します。論理図を図2(a)に示します。 プルアップ抵抗やプルダウン抵抗はソフトウェアでオン/オフ可能ですが、付いていないGPIOもあります。入出力用に入力バッファが、出力用に出力バッファが直接端子につながっています。保護ダイオードは端子の静電気などによる破壊から保護するために付いている素子であり、マイコンの論理動作上の役割はありません。
入力バッファの構成は、各製品、各GPIOで異なるので、マニュアルを確認する必要があります。主な入力バッファ(6種類)を図2(b)に記載しました。大きく分けると、入力データを常時通すスルーバッファ型と、リード信号が来たときだけ入力データを通すAND型、OR型です。また、それぞれの場合で、シュミット特性を持っているものと、持っていないものに分けられます。
出力バッファは、通常はCMOS構造のプッシュプル(Push-Pull)型になっています。CMOS構造内のPMOSとNMOSをそれぞれ独立にオン/オフして、「High出力」、「Low出力」、「ハイインピーダンス」の状態を作ります。
GPIOを使用しない場合は、プルアップ抵抗やプルダウン抵抗をオフにして、出力バッファはハイインピーダンスにして、入力データを読み取る操作を行わなければ、マイコンの論理的な動作に何の影響も与えません。
しかし、この場合、GPIO端子はどれもドライブしていないので、電位が不安定な状態です。言い換えると、外部からの影響で電位が変化しやすい状態になっているといえます。
このような状態で、周辺からの急峻な電位の変動がノイズとして印加し、それらがマイコンの中まで入り込むと、誤動作したり、ラッチアップを誘発して破壊したりすることが考えられます。ノイズのような電圧変動を考える場合は、論理図上では表しにくいので、CMOSの縦構造で考えてみます。
図3にCMOSの縦構造の例を示します。
これは入力バッファを簡易的に表したものになります。入力バッファの入力信号はPMOS、NMOSのゲートに入力されます。ゲートは酸化膜を挟んでN-SUBまたはP-WELLとコンデンサ構造を作っています。これをゲート酸化膜容量(コンデンサ)と呼びます。コンデンサは高周波数成分を通しやすい性質があります。
一般的なノイズは高周波成分ですので、入力バッファに入ってきたノイズは、論理的にはゲートを閉じていても、ゲート酸化膜容量を通ってマイコンの内部に侵入します。進入したノイズはゲート酸化膜容量のような寄生容量を通ってマイコンの内部に到達します。
マイコン内部のWELLやSUBに侵入してきたノイズは、マイコンの誤動作やラッチアップを誘発します。そこで、入力バッファにノイズを侵入させない工夫が必要になります。
Copyright © ITmedia, Inc. All Rights Reserved.