はじめに
ハードウェアの開発中にI2CやSPIデバイスのレジスタを弄りたい時、皆さんはどうやっていますか?
その場限りだと思いながら、間に合わせで再利用できないテスト用のコードを必死で書いていませんか?
MPSSE UtilsはFTDIのMPSSEが利用できるUSBシリアルコンバータを対象にした、汎用のI2C/SPIデータの送受信ツールです。 センサ等のレジスタやEEPROMを直接読み書きして動作確認したい時に使える、汎用的なツールが欲しいと思い作成しました。
<< MPSSE_Utils ver.2.2 ソフト・マニュアル類ダウンロード @GoogleDrive >>
MPSSE UtilsはFTDIのMPSSEが利用できるUSBシリアルコンバータを対象にした、汎用のI2C/SPIデータの送受信ツールです。 センサ等のレジスタやEEPROMを直接読み書きして動作確認したい時に使える、汎用的なツールが欲しいと思い作成しました。
<< MPSSE_Utils ver.2.2 ソフト・マニュアル類ダウンロード @GoogleDrive >>
動作環境・制限事項
- Windows 7以降のPC
- FTDIのMPSSEに対応しているコンバータICが載ったUSBシリアルI/Fを用意してください。 対応品種は FT2232D, FT2232H, FT4232H, FT232H (おすすめはFT232Hです) いずれのコンバータICもマスターデバイスとして動作します。 I2Cの通信はクロックストレッチやマルチマスターには対応していません。 レジスタをいじるだけなら特に問題にならないでしょう。
インストール・アンインストール
- 圧縮ファイルを展開すると「MPSSE_Utils_x.x」というフォルダができるので、好きな場所へフォルダごとコピーしてください。
- ja-JPフォルダを削除すると全てのメッセージが英語表記になります。
- アンインストールはフォルダごと削除するだけです。レジストリや設定ファイルは使用していません。
- 実行時に「指定されたモジュールが見つかりません。(HRESULTからの例外:0x8007007E)」というエラーが表示される場合は、Microsoftのサイトから「Microsoft Visual C++ 2015-2022 再頒布可能パッケージ」の最新版をダウンロードしてインストールしてください。
ソフトの構成
- MPSSE Utilsは、I2C用の通信ソフト i2cutil と、SPI用の通信ソフト spiutil をまとめたパッケージです。
- 実行ファイル i2c.exe または spi.exe をダブルクリックすると、それぞれのソフトが起動します。
- コマンドプロンプトから i2c または spi と入力して起動すると、それぞれのソフトはCUIで実行します。
- 各プログラムの詳しい解説は、manual フォルダに入っているPDFファイルをご覧ください。
画面イメージ
I2C GUI版
SPI GUI版
コマンドライン版
SPI GUI版
コマンドライン版
コマンドライン版の紹介
下のスクリーンショットはExcelのVBAを使い、5秒ごとにコマンドライン版i2cutilを外部プロセスとして呼び出し、気圧(MPL3115A2)・温湿度(AHT21B)センサからデータを取得してリアルタイムにグラフ化している様子です。
他のアプリケーションと連携するときは、コマンドライン版を使用すると便利です。
参考文献
FTDIアプリケーションノート
- AN_135 MPSSE Basics (重要)
- AN_177 User Guide For libMPSSE I2C (重要)
- AN_178 User Guide For libMPSSE SPI (重要)
- AN_108 Command Processor for MPSSE and MCU Host Bus Emulation Modes
- AN_184 FTDI Device Input Output Pin States
- AN_411 FTx232H MPSSE I2C Master Example in Csharp
- AN_113 Interfacing FT2232H Hi-Speed Devices To I2C Bus
- FT_000071 D2XX Programmer's Guide
- AN-232B-03 Optimising D2XX Data Throughput
- AN-232B-04 Data Throughput, Latency & Handshaking
NXPアプリケーションノート
使ってみて分かったこと・製作過程で苦労した点
- このネタは2014年にMIDIコントローラを作った時から温めてきたもので、ようやく実現できてよかった。
- 当初はマイコンに内蔵させる設計にしていたが、通信速度やファイルの入出力などに課題があり、Windows上のソフトに作り変えてとても便利になったと思う。
- GUIとCUIの両方の機能を同じコマンドで実行できるようにするところが難しかった。
- MPSSEを使うとI2Cでも爆速でOLEDの画像を転送できる。
- 10年前とはハードウェアの性能やプログラミングスタイルが変わって、つくづく時代が変わったなぁと思った。