USBデバイスの製作(10)
紆余曲折はあったものの以下の2つは完成し無事動作した。
USB-IOより若干高いが、機能も上だし生産中であるのが心強い。
1)汎用USB-IOもどき
入力7bit、出力7bit、シリアル1ch(2bit)
2)汎用USB-IOもどき+マスストレージ(SPI使用)
・入力7bit、出力7bit、シリアル1ch(2bit)
・マスストレージ(今は2MByte)
さて、アトメルのサンプルにはもう1つあって
series2-usb_software_library_template-2_0_0-doc.zip
という雛形がある。
(他にも別のサイトではオーディオのサンプルもあって興味深いのだが)
眺めてみるとこれはどうもBulk転送のサンプルのようである。
考えるとUSB162はどの程度の転送速度が限度なのかよくわからない。
USBの規格ではなくある程度のソフトを走らせた場合である。
バスは出ていないがシリアル・SPIはあるし、ポートとしてなら8+8+5=21bitある。
つまりはそういう幅で入出力できる素子であることには違いない。
EZ-USBでは主にBulk転送を使ったが、C8051がAVRと思えば似たようなことはできそうである。
そこでバルク転送の雛形にチャレンジする。
ところがサンプルではまりまくった。(TT)
周波数のパッチをあててビルドし、つなぐと「不明なデバイス」になりドライバすら要求してこない。
ディスクリプタを見直して何度もトライしたが症状は変わらない。
ずっと追っていくと
template\demo\template\usb_descriptors.h
で
// USB Device descriptor
の
#define EP_CONTROL_LENGTH 64
があるが、コントロールの長さが64ってのはおかしい。
#define EP_CONTROL_LENGTH 8
にしてやるとちゃんとドライバを要求してくるようになる。(^^v
さてそうなるドライバがいるのだが、アトメルが提供しているわけではない。
そこで汎用ドライバである柏野さんのUUSBDを導入する。
infを作ってインストールする。
ここでめでたくUUSDBデバイスになりUUSBD.DLLが使えるようになる。
コメントはありません