マイコン工作実験日記

Microcontroller を用いての工作、実験記録

UVCサンプルを探してみた

2016-10-18 21:42:13 | USB
Nucleo-L476RGにUSBミニコネクタを繋げたので、これだけでハードの準備は完了。次はソフトの準備に取り掛かります。カメラ画像をUSBで送るには、STM32L476でUVC (USB Video Class)のデバイス機能を実現すれば良いわけですが、CubeMX並びにSTのUSBドライバではUVCクラスのドライバは提供されていません。USB Coreの上に自分でクラスドライバを作ればいいのですが、正しく実装するためにはデバイスディスクリプタから正しく用意してやることが必要となります。

ディスクリプタについてはUVCの仕様書でもサンプルが説明されていたりしますが、簡単に実装して動作試験するためには低機能でも構わないのでできるだけシンプルな方が好都合です。そこで、マイコンを使ったUVCについての資料を探してみようと考えググってみると、XMOSのAPノートが見つかりました。480×320の単一解像度しか持たないUVCデバイスをカメラ無しで擬似的に実現する内容となっています。ハードとしてカメラを使わないので、カラーバーを表示することしかできないというデモですが、実験としては十分に面白いので、このアイデアはそのままいただくことにします。ソースも提供されており、ディスクリプタの具体的な内容もよく分かり助かります。また、ドライバのコードの作りとしては、エンドポイント毎にスレッドを動かす構成となっているようで、このあたりがXMOSらしくて興味をそそられるところなのですが、深入りすると戻ってこれなくなりそうな予感もするのでこれ以上の追求はやめておきます。

次に、GitHubでSTM32を使ったプロジェクトを探してみました。



iliasamさんのプロジェクトは白黒画像データをPCに送るコードが用意されていますが、古いライブラリを使っているようです。coelamonさんのpractice_eclはiliasamさんのコードがベースになっているようですが。現在のHALを使っているのでそのまま流用できそうす。そこで、コイツを拝借することにしました。