マイコン工作実験日記

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

USB_LDDを使ってみる

2015-07-10 22:32:58 | FRDM
Kinetisでは、KSDKの一部としてUSBのプロトコルスタックが提供されています。実験的にプロジェクトの構成を試してみたのですが、RTOSとしてMQX Liteを選択するとメモリ管理プリミティブが不足しているために構成できないというエラーが発生してしまいます。どうやら、MQXかFreeRTOSを使う必要があるようです。KSDKのホストスタックにおいてもBluetoothのクラスドライバが用意されているわけでもないので、どのみちその部分は作らねばなりません。そこで、KSDSKを使わずともKDSのPEXコンポーネントとして用意されているUSB_LDD (USB Logical Device Driver)を使ってホスト機能を実装してみることにしました。




PEXを使ってUSB_LDDのコンポーネントを追加して、そのプロパティーを適切に設定した後、コード生成を行ってやれば、基本的なUSBホストドライバのコードが自動的に生成されます。ここまでは、非常にお手軽なのですが、問題はこのLDDの使い方について詳しい説明が無いことです。サンプルのプロジェクトとかがあればいいのですが、そのようなサンプルはみなKSDKに含まれるFreescaleのUSBスタックを使っており、USB_LDDとは別のAPIになっているようです。いちおう、USB_LDDのヘルプに簡単な使い方の例が示されているのですが、その例ではドライバの初期化とコントロール転送でSETUPを送るところまでの例しか示されていません。




このサンプルは、デバイスディスクリプタの最初の8バイトだけを読み取るというものなんですが、エニュメレーションの続きの具体例が示されているわけでもないので、自分でAPIの説明を読んで試してみるしかありません。とりあえず、例示されている部分のコードをそのまま書き写してビルド、実行してみたのですがPipe0を開こうとするとエラーになってしまいます。調べてみると、ホストスタックの初期化作業としてバスリセットをやっている際中にPipeを開こうとしてしまうのが原因でした。初期化後ポートの状態がリセット完了になるまで待つコードを追加してやると、正しくSETUPが送られて、ディスクリプタの最初の8バイトが読み取れることがわかりました。

出だしからこの調子なので、これはしばらく楽しめそうです。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。