USB-I2C変換ボード[CLICK-I2C]はマイクロチップ社のUSB-SPI変換IC、MCP2221を搭載したボードです。専用ユーティリティーを使ってI2Cデータの送受信が可能です。
その他USB-UARTの簡易変換機能(~115.2kbps)も搭載しています。I2C通信は最高400kHzクロックに対応しています。
また3チャンネル10ビット分解能のADコンバーター、5ビットDAC、3つのGPIOがあります。いずれもUSB接続したパソコンからコントロールできます。
UART通信はパソコンに仮想COMポートが作られるCDC通信となります。
I2C通信やその他の機能はUSBのHID通信(ヒューマンインターフェイスデバイス)によって行われます。64バイトバッファによって最大65535バイトブロックでのリード、ライトが可能です。
■データシート、ソフトウエア等のダウンロード
・マイクロチップ社のMCP2221のページ
https://www.microchip.com/wwwproducts/en/MCP2221
※データシート及びツール類は上記ページの”Documnet”タブからダウンロードできます。
下記から本機の設定等ができるユーティリティーソフトウエアをダウンロードしてください。
下記からI2C通信を行うためのターミナルソフトをダウンロードしてください。
MCP2221 I2C/SMBus Terminal (v2.0.1)
いずれもzip形式ですのでダウンロード後展開してください。
展開するとセットアップファイルがありますので実行してパソコンにインストールしてください。
■本製品のピンアサイン及び回路図
※回路図はクリックすると拡大できます。
電源は5Vで標準ではUSBバスパワー給電となっています。
ボード内部でレギュレータ(AP7331-ADJ)によってVbus又はmikroBUSの5Vピンから給電された電源は3.3Vに降圧されています。3.3VはmikroBUSの3.3Vピンから取り出せます。
ロジック電圧の振幅レベルは0V-5Vか0V-3.3Vかを基板上の”I/O LEVEL”ジャンパーで設定できます。デフォルトでは3.3Vに設定されています。この設定電圧はMCP2221のVddの印加電圧となります。0V-5Vのロジック電圧レベルが必要な場合にはジャンパー設定をし直してください。
■基本的な使い方 ~データ送信~
本機をパソコンに接続すると自動的にデバイスドライバーがインストールされます。本機は2つのインターフェイスとして認識されます。1つはI2C通信及びGPIO操作、ADCのデータをやりとりするためのHIDデバイスとして、もう1つはUSB-UART変換機能として仮想COMポートとして認識されます。
仮想COMポートのポート番号はWindowsのデバイスマネージャで確認できます。
ここではI2C通信を行う方法を解説します。I2C通信は専用のターミナルソフトから行います。先ほどインストールした”MCP2221 I2C SMBus Terminal”を起動してください。
本機は常にI2Cマスターとして動作します。I2Cスレーブデバイスに対してデータをWriteしたりReadしたりします。
本機に接続されたスレーブデバイスのアドレスが分からない場合、検索することができます。”Advanced Settings”ボタンを押します。
スキャンするアドレスの範囲を指定します。ここでは0x00~0xFFまでを検索します。数値は16進数です。”Start Scan”をクリックすると接続されているスレーブデバイスの一覧が検出され表示されます。
上図は本機にI2C EEPROM(24C64)を接続した例です。
何も検出されない場合には正しくI2Cデバイスと接続できていないか、I2Cデバイスが動作していません。
では実際にデータを送信してみましょう。
“Protocol”のプルダウンから”I2C”を選択します。
“Address Length”はアドレス長です8ビットアドリスか7ビットアドレスを選択します。
“Address”にはスレーブアドレスを16進数で入力します。
“Operation”はWrite/Readの方向です。書き込みならばWrite”、読み込みならば”Read”を選択します。
“Data”はWriteの時は送信するデータ、Readの時は読み取るデータのバイト数の指定になります。いずれも値は16進数で入力します。複数バイト入力する場合にはカンマ( , )で区切ります。
入力が完了したら”Send”ボタンを押します。データが送信されます。下図は実際に上図の入力内容を送信した時のロジックアナライザの波形です。
なお送信結果は”Received/Sent Data”ウインドウに表示されます。送信後 OK という緑文字が表示されていれば正しく送信ができています。ACKが欠落しているNACKの場合にはエラーが表示されます。
■基本的な使い方 ~データ送信~
データの受信も操作は同様です。
“Operation”の欄で”Read”を選択します。なお8ビットアドレスの場合Read時はアドレスに1が加算されますので、値が1つ増えることに注意してください。
“Data”は読み取るデータのサイズです。01と指定すると1バイトになります。
↓
読み取った値は”Received/Sent Data”ウインドウに表示されます。
上図ではスレーブデバイスからReadした結果0x41が返ったことを意味しています。実際のロジックアナライザの波形は次の通りです。
これで基本的なI2C通信でのWriteとReadができました。
■拡張ピン(GP0~GP3)の操作
本機にはユーザーが自由に使えるGPIOが4つ(GP0~GP3)用意されています。これらのピンをどのように使うかはユーティリティーソフトで設定できます。
ユーティリティーソフトを起動してみましょう。
“GP Pin Configuration”のところで設定が可能です。標準ではLEDなどに割り当てられています。これらは”Designation”のプルダウンで使用目的を変更できます。
GPIOとして設定すると”Direction”で入出力方向の指定ができるようになります。入力ピン又は出力ピンどちらにするか指定します。出力に設定した場合には”Pin Value”でピンのH/Lを指定できます。
“Designation”で”USBCFG”に設定するとターミナルソフトからピンの状態をコントロールできるようになります。ターミナルソフトでGPIOのH/L操作や指定したピンの入力電圧をADCで読み取りたい場合には”USBCFG”に設定してください。
設定が完了したら”Configure Device”ボタンを押して設定を転送します。
ピンを”USBCFG”にした場合にはターミナルソフトから各種操作が可能になります。
“Protocol”のところで行いたい操作を選択します。GPIOの場合には指定したピンのHigh/Low指定ができます。設定したいピンにチェックを入れてその下のプルダウンから論理値を指定して”Send”を押すと設定が反映されます。
ADCに設定した場合、”Read”で指定したピンの電圧値をADCが読んで10ビットの分解能で結果を返します。読み取った値は”Received/Sent Data”ウインドウに表示されます。また”Wrtie”にすると基準電圧(Vref)を指定できます。