IOエキスパンダとは
IOエキスパンダとはマイコンの周辺ICとして使用される半導体デバイスです。
一般的にマイコンのピン端子として用意されているIOポートの数は限られています。例えば1つのマイコンを複数の製品に搭載することを考えた場合、機能の限定された製品と高機能の製品に対応する必要があります。
この様な場合、マイコン本体のピン数をできるだけ抑えることで、マイコンのコストを抑え、これを廉価型の製品に搭載します。同じマイコンを高機能製品に搭載する場合、制御ピンが足りなくなりますのでこのような時にIOエキスパンダを使ってIOポートを拡張します。
以上により、マイコンとIOエキスパンダの組み合わせによってシステムの拡張性を広げることが可能となります。
IOエキスパンダの使用用途
マイコンを含むシステムの設計を行い製品としてリリースした後に、機能変更や機能の拡張が必要となった際に、マイコンに内蔵されているIOポートの数が足りなくなった場合、IOエキスパンダーを使って、不足するIOポートを補う場合に使われます。
用途として考えられるのは、例えば、多くの制御ピンが必要となる7セグメントのLEDを制御する場合の他、ごく一般的な入出力ポートとして使われます。
IOエキスパンダはマイコンからの制御により動作しますが、一般的にはI2Cバスなどのシリアルバスが使用されますので、高速にIOエクスパンダーのポートを切り替えたり、高速にデータを読み込んだりする用途には不向きです。
IOエキスパンダの原理
IOエキスパンダはI2Cバス等のシリアルバス経由でマイコンから制御されます。一般的に8bitや16bitのIOポートが装備されていることが多いです。
マイコンからIOエキスパンダ内のポート用方向レジスタへ入力もしくは出力の設定をビット単位で行います。
その後、ポート入出力レジスタに所定のデータを書き込むことでデータの書き込みもしくは読み出しを行います。出力ポートに設定した場合はIOエキスパンダの各ポートから設定したデータが出力され、入力ポートに設定した場合は、設定された入力ポートからデータを読み込むことができます。
更に、IOエクスパンダーによっては割込み入力を受け付ける端子が用意されているタイプがあります。
あらかじめセットした所定の条件に合致した場合に、IOエクスパンダーの割込み端子の出力をアクティブにします。
この端子をマイコンの割込み入力に接続すれば、マイコンに内蔵する割込みを動作させることが可能です。この機能は、外部のイベントに対して瞬時にマイコンがこれを受けて、システムの制御を行いたい場合などに有効です。
参考文献
https://docs.rs-online.com/964b/0900766b8137eed1.pdf
https://www.petitmonte.com/robot/howto_io_expander.html