« FT2232DでI2C(その2) | トップページ | stm32もつかってみる »

2010年5月24日 (月)

78kでI2C

FT2232DでI2Cをやるよりも
78kでI2Cをやるようにしたほうが早くなりそうな
気がしてきたので、考えてみました。

既にルネサス製の仮想comドライバを使う手については
実現させていました(I2CのH/WがなかったんでI/Oポートで実現)。
どこかに仮想comは遅いという書き込みもあったので、
HIDにするとか簡単に別のドライバにできるといいなと
思い調べていたらuusbdの記事を発見。
そういえば昔Interfaceに記事があったなと見つけ出してきて
見てみると、マウスのドライバをuusbdにする方法が載ってました。

uusbdのインストール用infファイルにデバイスのデバイスのVID,PIDを
書き込み、ドライバの更新をしてやるだけ。
この方法でいけるならF/Wの変更なしにホスト側を変更するだけで
いけます。

さっそくやってみると簡単にドライバは置き換わりました。
あとはホストの変更ですが、uusbdにあったサンプル(pipedump)をみて
openやclose、checkのやり方をまねし、あとはWriteFile()でコマンド転送、
ReadFile()でレスポンス受信というだけのものを作りました。
※WriteFile()/ReadFile()をやるためにそれぞれにOpenPipe、終わったら
CloseHandleも必要でした。

この方法に置き換えると、仮想comで500ms程度かかっていたのが
30数msec程度になりました。驚きました。
本当に仮想comっておそかったんだ。
(とはいえI2C処理中のUSB転送中にはbulk転送しかなく
シンプルだったので、
通信以外の処理に時間がかかってるのかな。)
まあ、もしかすると何か足らない処理もあるのかもしれないけど、
かなり高速化できることだけはわかりました。

|

« FT2232DでI2C(その2) | トップページ | stm32もつかってみる »

i2c」カテゴリの記事

usb」カテゴリの記事

78k」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 78kでI2C:

« FT2232DでI2C(その2) | トップページ | stm32もつかってみる »