FT245RをHSPで使う。
はじめに
FT245Rとは英国FTDI社のUSBパラレル変換モジュールです。
特徴は
1チップでUSB−8ビットのパラレル双方向データ転送ができます。クロック信号発生回路内蔵で、内部クリスタル不要
■1Mバイト/秒の転送レート(D2XX)
■256バイト受信バッファ、128バイト送信バッファ内蔵
■I/O用に3.3Vレギュレータ内蔵
■ビットバングモード、仮想COMポートに対応しています。
■USBミニB端子
■基板サイズ:34x19mm
とのことで電気男御用達の秋月電子通商でFT245RLとして入手できます(\980)
USBパラレル変換ということは先に紹介したUSB-IOになりうるということです。しかもこちらは「1Mバイト/秒の転送レート(D2XX)」ということなのでUSB2.0の高速転送が可能となります。
FT245RはUSBパラレル変換の他に仮想COMポートとしても動作するのですが今回はUSBパラレル変換モード(ビットバングモードというらしい)で使用します。
このFT245RLは完成品なのでUSB-IOのように部品のハンダ作業は必要ありません。しかしUSB-IOのHIDとは異なりFTDI社が提供するドライバーをインストールする必要があります。
ドライバーはWindows98〜Xp/Vista/7、MacOS、Linuxまで多彩に対応しています。今回はUSBパラレル変換モードで使うのでD2XX Driverをダウンロードしインストールします。
Windows7ではUSBに繋ぐと勝手にWEBからインストールしてくれました。ディバイスマネージャーで確認するとUSB
Serial Converter及びUSB Serial Portとして認識されベンダーID=0x0403、プロダクトID=0x6001となっていました。
これでFT245RLを使う環境は整ったのですがUSB-IO同様これを制御するソフトがなければただの石ころと同じです。ドライバーがインストールされるとWindowsのsystemホルダーにftd2xx.dllが作られますがHSPから制御するにはこのDLLを制御する必要があります。WEBを探してみるとC言語やVBで書かれたものは見つかるのですがHSP対応のものはなかなか見つかりませんでした。それならばということで D2XX Programmer's Guide から必要なコマンドを抜粋しHSP用制御モジュールmod_ftd2xx.asを作成しました。
USB-IOとほぼ同様のコマンドで動作可能です。USB-IOと違うのは入出力は8Bitだけでポートを選択する概念はありません。
#include "mod_ftd2xx.as" repeat ft_out 0 wait 10 ft_out 255 wait 10 loop |
LED点滅実験 |
#include "mod_ftd2xx.as" #uselib "winmm.dll" #cfunc timeGetTime "timeGetTime" kaisuu=5000 ft_init 1 ;初期化 if stat :dialog " FT245を接続してください",1 input kaisuu button "start",*start stop *start t1=timeGetTime() repeat kaisuu ft_out $aa await ft_out $55 await loop t2=timegettime() mes t2-t1 stop |
こちらはスピード計測プログラムです。 10000回のwriteテストの時間を計測します。 USB2.0のホストアダプターでもかなりのばらつきがありました。 デスクトップのIntel(R) ICH10 Family USB Enhanced Host Controller では約20秒 ノートPCのIntel(R) I82801DB/DBM USB2.0 Enhanced Host Controller では約15秒 自動導入で紹介したこのアダプターだと約10秒という結果となりました。 ちなみにUSB1.0では約40秒です。 予想に反して一番安価なアダプターが最高速とは??? 別のUSBディバイスの情報ですがUSBハブを経由すると高速動作が期待できるらしいです。 |
さて、これで何をするか考え中ですがインターバルタイマーやステッピングモーター駆動はUSB-IOのがあるので何か他のものをと思っていますが・・・
2010/09記