2022年12月17日土曜日
NUCLEO-F439ZIでの
tinyUSB
試行は予想よりも上手く行った。
MSC(Mass Strage Class,いわいるUSBメモリ)は動作し、
独自デバイス(tinyUSBでいうところの vendor_device)も動作した。
やりかたはサンプルプログラムを参考に
必要そうなコードを追加していき、
所在地不明の名前はVScodeの「定義へ移動」、
見つからなければ以下のコマンドで探す。
$ find . -name '*.h' | xargs grep 探す名前
tinyUSBがコンパクトでうまく整理されているおかげで、
特にハマることもなく動作するようになった。
独自デバイスを試すには
PC(Windows)側にドライバとアプリが必要だ。
ドライバが面倒でUSBはHIDデバイスばかり使っていたのだが、
汎用ドライバ(libusb)が使用できると知った。
Windowsへのインストールは
Zadigでできる。簡単だ。
アプリも
pyUSBがあるのでpythonで作れる。
独自デバイスの動作を確認したいが
デバイス(NUCLEO)側で何か動いてくれないと面白くない。
LCDで画像などを表示すれば調度良いので
LCDの乗ったArduino Shieldを装着。
この記事を書いた時に買ったものだ。
PC側のプログラムで画像を転送しデバイス側のLCDに表示させる
プログラムを作成し、データの転送速度を測った。
240x240の画像の転送に0.32秒。あまり速くない。
(
動画)
LCDへの転送がネックかもしれないと疑いコメントアウトしてみたが転送時間は変わらなかった。
データ量は 240 x 240 x 4 [byte/pixel] x 8 [bit/byte] = 1,843,200 [bit]なので、
転送速度は
1,843,200[bit] ÷ 0.32 [秒] = 5.76 [Mbps]
となる。
USB full-speedの12Mbpsと比較すると十分速い。
USB Hi-speedの480Mbpsに期待したい。
 |
USB PHYモジュール |
USB Hi-speedの実験を行うには
先日購入した USB-phyモジュールを接続しなければ
ならない。手配線は面倒なので
基板を起こしたい。
実験用にLCDも載せたいので
NUCLEO基板と合わせて3階建てになってしまう。
手持ちにSTM32F405が数個あるので、
これで新規基板を作ろうと思う。
NUCLEOの出番が意外と短かった。
またの登場のために保管用Boxを3Dプリントしよう。