STMicroelectronicsが用意したSTM32のUSB CDCミドルウェアが、少々バグってるらしい。
PCからVCP(仮想COMポート)に送信した文字を、STM32F3DISCOVERYからエコーバックするだけのプログラムを書いたが、最初の1文字しかエコーバックされない。デバッガで調べると、2文字目以降でコールバック関数が呼ばれていないようだ。ぐぐってみたら、ズバリの現象を特定したスレがフォーラムに見つかった。
USB middleware issue with CDC/VCP: only x packets receivable (HAL 1.1.0 and Host-Device_Lib 2.1.0)
受信処理の中で、受信完了のコールバックを呼んでいないらしい。HeapSizeが小さすぎるという罠もあったらしいけど、これは試す前に書き換えた。
VCPが通るようになったので、PCからコマンドを送る経路が確保する目処が立った。でも、リセットの度にUSB抜き差しして再接続は面倒。いずれFT232RLのUSB-UART変換に逃避してしまうかもしれない。
0 件のコメント:
コメントを投稿