myRIOによるMCP23017の制御
1.目的
National Instrumentsの教育・組込み制御用デバイス“myRIO”とMicrochip社のI2Cエクスパンダ“MCP23017”をI2C通信し、デジスイッチ4桁の値をLabVIEWで作成したフロントパネル上に表示します。
図1 myRIOによるMCP23017制御
2.HARD WARE
myRIOとデジスイッチのインターフェースとなるMCP23017実装回路を製作します。回路図を図2に示します。MCP23017のI2CアドレスはR7,R8,R9を使用して設定します。MCP23017のI2C端子はプルアップ不要です。I2C信号線であるSDAとSCLはmyRIO内部回路で電圧3.3Vと2.2kΩでプルアップされています。図3は製作した基板とmyRIOを接続した写真です。
図2 MCP23017実装回路
図3 myRIOとMCP23017実装回路
3.SOFT WARE
全体フローチャートを図4に示します。最初にMCP23017のGPIO端子を入力ポートとして使用するための初期設定を行います。MCP23017は複数のレジスタがあります。各レジスタに初期設定する内容を表1に示します。詳細はMCP23017データシートを参照下さい。初期設定後にデジスイッチのポーリングを行います。I2C通信エラーがない限りポーリングし続けるプログラムを作成します。
表1. MCP23017初期設定内容
No. | レジスタ名 | アドレス | 設定値 | 説明 |
1 | IODIRA | 0x00 | 0xFF | GPAポートを全ポート入力に設定する |
2 | IODIRB | 0x01 | 0xFF | GPBポートを全ポート入力に設定する |
3 | IPOLA | 0x02 | 0xFF | GPAポートの極性を全ポート負論理に設定する |
4 | IPOLB | 0x03 | 0xFF | GPBポートの極性を全ポート負論理に設定する |
5 | GPPUA | 0x0C | 0xFF | GPAポートのPullUp機能を全ポートONに設定する |
6 | GPPUB | 0x0D | 0xFF | GPBポートのPullUp機能を全ポートONに設定する |

図4. デジスイッチポーリングフローチャート
4.LabVIEW
作成したviのブロックダイヤグラムを図5に、フロントパネルを図6に示します。
ブロックダイヤグラムはVIスニペットになっているので、画像をコピーしてLabVIEW上でそのまま使えます。
図5 デジスイッチポーリングブロックダイヤグラム(VIスニペット)
図6 デジスイッチポーリングフロントパネル