MCP2221Aを使ってLabVIEWでI2C通信

Microchip社の MCP2221A を使ってLabVIEWでI2C通信をやってみた。MCP2221A 用のWrapドライバ を使用したところ簡単にI2C通信が行えた。MCP2221Aは 秋 月電子で210円 なのでNI純正のI2C対応DAQ(¥60,000) と比べてかなり安価にI2C通信ができる。

関連記事:LabVIEWとBME280で温度・湿度・ 気圧測定

あらかじめやっておくこと

LabVIEW Home Bundleのインストール。

体験版で よいのでLabVIEW2017以降が使える環境を作っておく。

MCP2221AMicroUSB コネクタI2C 温度センサなど の購入。

回路を組む。コンデンサを入れ忘れたのに動いてしまった。MCP2221Aすごい。

MCP2221A データシートの p.17 にあるとおり、本来であればVBUSとGNDの間、VUSBとGNDの間に
0.47uFのコンデンサを入れる。

I2Cのプルアップはされていないので
温度センサモジュールの方でプルアップをしておく。

USBに接続するとすぐにPCが認識する。

プログラミングの準備


1.MCP2221AのWrapドライバをダウンロードする。
https://lavag.org/files/file/300-mcp2221a-library/  (Benoit様)

2.圧縮ファイルを解凍する。64bitと32bit(x86)の2種類があるので32bitの方を使う。

3. WrapドライバがLabVIEW2017で作成されているので、前 回と同様に2014用へダウンコンバートする。
LabVIEW2017体験版で mcp2221_dll_um_x86.lvlib を開き、「ファイル」→「旧バージョン用に保存」。
2014を選び、以下のフォルダに保存する。
C:\Program Files (x86)\National Instruments\LabVIEW 2014\user.lib

4.新規viを開いて、ブロックダイアグラム画面を右クリックする。
ユーザライブラリ → MCP2221A→ VIs に入っているものを使用する。



Wrapドライバを使ってみる

ADT7410温度センサ モジュールを使ってプログラミングした。(↓クリックで拡大)

測定画面。温度グラフが表示される。

使用したWrapドライバは以下の5つ。
        Mcp2221 Get Connected Devices.vi
        Mcp2221 Open By Index.vi
        Mcp2221 I2c Write.vi
        Mcp2221 I2c Read.vi
        Mcp2221 Close.vi

Get Connected Devices.
        MCP2221AがPCに接続されている数を調べる。MCP2221AのVID(04D8)とPID(00DD)を指定する。

Open By Index
        MCP2221AのVID(04D8)とPID(00DD)を指定して使い始める。

I2c Write
        ADT7410(スレーブデバイス、アドレスx48)に対して2バイトの書き込みを行う。
        0x03(デバイス設定)
        0x80(101 0000, 16bit分解能, one-shotモード)
        参考:http://akizukidenshi.com/download/ds/analog/ADT7410a.pdf
        参考:I2C 温度センサADT7410を使う(5) 16bitで読み出し

I2c Read
        2バイトの読み込みを行う。

Close
        ループが終了したら最後に終了処理を行う。

ダウンロード

MCP2221A_ADT7410.vi  (上で書いたもの)