USB接続に関する情報
STM32F103シリーズのUSBデバイスのサポートに関する情報
/icons/hr.icon
USBサブモジュールのlibmapleは過去の開発の経緯から、別のコードをベースにしています。
現在の状況:
STM32F103シリーズでのみUSBデバイスがサポートされています。
STが提供する低レベルのコアライブラリを利用して制御エンドポイント転送用のUSB転送プロトコルを実装しています。
仮想COMポート(<libmaple/usb_cdcacm.h>で公開されています)は、2つの重要な目的を果たします。
1)ユーザスケッチとホストコンピュータとの間のシリアルデータ転送を可能にする。
2)これにより、ホストPCは、DTR + RTS + "1EAF"シーケンス(これに関する詳細は、Maple Bootloaderを参照)を使用してDFUブートローダにシステムリセットを発行することができます。 リセット後、MapleはDFUブートローダを数秒間実行します。この間、ユーザはDFUアップロード操作を開始できます(アプリケーションバイナリをRAM / FLASHにアップロードします)。 したがって、この仮想COMポートがなければ、ブートローダを有効にするためにマイコンチップをリセットする代替手段を見つける必要があります(例:ボード上のリセットボタン)。
何らかの理由で独自のUSBアプリケーションを開発したい場合(たとえば、ストリーミングオーディオに高速アイソクロナスエンコードを使用する、USB HIDまたはMass Storage仕様を実装する場合など)、MapleをリモートでリセットしてDFUブートローダーをスピンアップさせるためのフックを残しておいてください。一部のオペレーティングシステムでは、これらのタグに基づいてホスト側のドライバが割り当てられるため、アプリケーションに固有のベンダー/製品IDのペアを取得してください。
仮想COMポートとその他のコンポーネント(マスストレージなど)の両方にエンドポイントを実装する複合USBデバイスを構築することは可能です。 しかし、Windowsと* nixは複合USBデバイスを全く異なる方法で扱うため、これはホストドライバ側からの負担になります。
USB周辺機器を有効にすることは「無料」ではないことに注意してください。 デバイスは、ISRにサービスを提供することによって、定期的なバスアクティビティ(数ミリ秒ごと)に応答する必要があります。 したがって、USBアプリケーションは、タイミングクリティカルなアプリケーションの内部では無効にする必要があります。
デバイスをホストから切断するには、USB_DISCピンがアサートされます(Maple(Arduino STM32)の場合、これはPC12です)。 あるいは、NVICを直接設定して、USB LP / HP IRQを無効にすることもできます。
usb_lib内部のファイルはSTによって提供され、独自のライセンスの対象となり、他のすべてのファイルはLeafLabsチームによって作成され、MITライセンスに含まれます。
TODO:
libopencm3のようなシリーズ提供のバックエンドを持つ汎用USBドライバコア。
STコードを取り除く。
ユーザーがカスタムUSBアプリケーションを作成できるように、高レベルのUSBライブラリ(LUFA / MyUSBなど)との統合。