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転送しかなく
シンプルだったので、
通信以外の処理に時間がかかってるのかな。)
まあ、もしかすると何か足らない処理もあるのかもしれないけど、
かなり高速化できることだけはわかりました。
| 固定リンク
「i2c」カテゴリの記事
- 78kでI2C(2010.05.24)
- FT2232DでI2C(その2)(2010.05.20)
- FT2232DでI2C(2010.05.19)
「usb」カテゴリの記事
- stm32ループバック(HID)&BCB6アプリ(2011.10.02)
- BCB6でWinUSB(2010.07.13)
- stm32でさらにWinUSBも試す(2010.06.20)
- stm32の動作(2010.06.16)
- stm32でuusbdをためしてみたら(2010.06.12)
この記事へのコメントは終了しました。
コメント