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記

inserted by FC2 system