STM32MP1 - OTG
USBハイスピードインタフェース
1.0 版

こんにちは、STM32MP1 USB フルスピードおよびハイスピードインタフェースのプレゼンテーションへようこそ。このプレゼンテー
ションでは、PCまたはUSBデバイスのマイクロコントローラへの接続に広く使用されているインタフェースのすべての機能を説明します。

1

概要2

• USB 2.0 のハイスピードとフルスピードインタフェースを提供

バスパワーペリフェラルの図
VBUS から電源を取得• 「On-the-Go」製品をサポート

電圧レギュレータSTM32MP1
USBH_HS_DM1
OTG_HS_DP*
OTG_HS_DM*
OTG_HS_ID*
OTG_FS_DP
OTG_FS_DM

EMC
保護DPDMID

USB Micro-B レ
セプタクル

VBUS

USBH_HS_DP1*OTG_HS ピンは USBH の 2 番目のポートとして使用できます。その場合でも FS 専用ポート（FS_Dx）は引き続き使用できます。

アプリケーション側の利点• ハイスピード内蔵PHY• 低電力実装• バッテリ充電器検出による充電の高速化

この図は、STM32MP1 マイクロコントローラと USB コネクタ間の接続を示しています。STM32MP1 は USB ハイスピード通信インタフェースを備えているので、マイクロコントローラは代表的な例として PC や USB ストレージデバイスと通信できます。最も単純な実装例は USB ペリフェラルで、STM32MP1 マイクロコン
トローラはさらに USB の「On-the-Go」機能もサポートしています。上図はハイスピードピンに接続していますが、両方のハイスピードポートが USB ホストポートとして使用されている場合にはフルスピードピンも使用できます（他のモジュール USBH を参照）。

2

主な機能

3

• USB 2.0 ハイスピード（480Mbits/s）• 内蔵ハイスピード PHY（メインポート、USBH EHCI ホストコントローラと静的に共有）• 内蔵フルスピード PHY（2 番目のポート）• リンク電源管理（LPM）をサポート• デバイスサポート、ただし OTG 仕様もサポート（ターゲットホスト）• 「On-the-Go」製品および組込みホスト• デバイスに対して「組込みホスト」としての制限付きホスト動作を許可• 最新仕様の OTG 2.0 をサポート• バッテリ充電器検出ハードウェアを装備• 最新仕様の BC 1.2 をサポート（実装にはソフトウェアが必要）• ハードウェアが提供するこの仕様により BC 1.2 準拠の充電器からより多くの電流（最大 1.5A）を安全に確保できるため、バッテリの再充電時間が短縮できます。

この USB ハイスピードインタフェースの主な機能をいくつか見てみましょう。これは 480Mbits/s のビットレートで動作する USB
2.0 仕様に準拠したインタフェースです。
最もシンプルな形で USB FS デバイスを実装できます。
リンク電源管理の組込みサポートにより、USB 2.0 仕様に加えて拡張電力モードが追加されています。
さらに、On-The-Go、すなわち「OTG」機能により、OTG 製品または組込みホストを実装でき、どちらもターゲットホストとして動作する能力があります。
バッテリ充電器検出機能により、BC1.2 準拠の充電器から最大1.5A の電流を引き出すことができます。
USB 2.0 ハイスピードは、ULPI インタフェース経由でも利用できます。
外部の ULPI トランシーバと組み合わせると、同じ動作モードで使用できます。

3ブロック図（OTG、USBH、USBPHYC）
USBDP1(USBH_HS_DP1)

USBPHYC

USBH
ホストコントローラ

CPUCortex®-M4

FS PHY（内部）

AHB マスタインタフェース

メモリ

ペリフェラル1ペリフェラル2

HS PHY（内部）

USBDM1(USBH_HS_DM1)

4

ホストのみ
OTG には使用不可

USBDP2(USBH_HS_DP2/OTG_HS_DP)
USBDM2(USBH_HS_DM2/OTG_HS_DM)
OTG_FS_DP
OTG_FS_DM
OTG_FS_VBUS / OTG_HS_VBUS

A
H
B

OTG_FS_ID / OTG_HS_ID

USB OTG コア

OTG_HS_SOF

EXTI
AHB スレーブ
インタフェース

割込み

NVIC

GIC** GIC ブロックの有無は MP1 シリーズの製品種目に依存します。

データ FIFO
シングルポート RAM

このブロック図では、USB OTG ハイスピードコントローラコアが中央に、そしてその下にデータ FIFO が示されています。コアは、HS（ハイスピード）PHY または FS（フルスピード）PHY の 2 番目のポートと組み合わせて使用できます。右側に示したこれらの
PHY は、On-The-Go およびバッテリ充電器検出機能に関連する多くの特定のレベル検出を含むアナログ信号レベルを処理します。USB 割込みは Cortex-M4 プロセッサに送られ、さまざまな USB イベントを通知します。AHB スレーブインタフェースで、コントローラーレジスタと電源およびクロック制御ブロックの読出し／書込みアクセスが可能になります。メモリへの、およびメモリからの転送は、AHB マスタインタフェースを介してコントローラ内部の DMA エンジンにより処理されます。

4

動作モード5• ペリフェラル（デバイス）モード機能：• 通常の（つまり OTG 以外）デバイス向け• ペリフェラルモードで動作している OTG デバイス向け• ターゲットホストモード機能：• 組込みホスト向け• 組込みホストモードで動作する OTG デバイス向け

いつでも、次の 2 つの動作モードのいずれかの状態にあります。
ペリフェラルモード：通常のデバイスに使用されます。またはペリフェラルモードで動作している OTG デバイスに使用されます。
ターゲットホストモード：組込みホストに使用されます。またはホストモードで動作している OTG デバイスに使用されます。

5

割込み
割込みイベント

説明

レジューム／リモートウェイクアップ

サスペンド（L2）または LPM（L1）状態中のウェイクアップ割込み

セッションリクエスト／新しいセッションを検出

ホストモード：デバイスからのセッションリクエストを検出。
デバイスモード：VBUS が B-ペリフェラルデバイスに対して有効な範囲内。

切断検出

デバイスの切断が検出されたときにアサートされます。

コネクタ ID ステータス変化

コネクタ ID ステータスの変化

LPM 割込み

デバイス：LPM トランザクションを受信し、非エラー応答で応答しました。
ホスト：デバイスが LPM トランザクションに非エラー応答で応答したか、またはホストコアがプログラムされた回数だけ LPM トランザクションを完了しました。

周期的 TxFIFO エンプティ周期的送信 FIFO が半エンプティか完全エンプティであり、少なくとも 1 つのエントリを周期的なリクエストキューに書き込むためのスペースがある場合。

ホストチャネル割込み

コアのチャネルの 1 つで割込みが保留中です（ホストモード）。

ホストポート割込み

ホストモードで、OTG_FS（/HS）コントローラポートの 1 つのポートステータスの変化を示します。

リセット検出デバイスモードで、デバイスがサスペンドモード、USB が部分的パワーダウンモードのときに USB でリセットが検出されると、この割込みがアサートされます。

この USB ブロックからの割込みは、多数のイベントまたは状態変化によってトリガされます。
このスライドと次の 3 つのスライドは、割込みをトリガできるすべてのイベントを示しています。 ご覧のように、多様な割込みソースがあります。低電力管理や OTG に関連するイベントから、通常のホストの動作や通常の USB リセットおよび切断イベントに関連するイベントまでさまざまです。

6

割込み（続き）
割込みイベント

説明

不完全な周期的転送

ホスト：保留中の不完全な周期的トランザクションがある場合。
デバイス：転送が完了していない少なくとも 1 つのアイソクロナス OUT エンドポイントがあります。

不完全アイソクロナス IN 転送

現在のフレームで転送が完了していない少なくとも 1 つのアイソクロナス IN エンドポイントがあります。

OUT エンドポイント割込み

コアの OUT エンドポイントの 1 つで割込みが保留中です（デバイスモード）。

IN エンドポイント割込み

コアの IN エンドポイントの 1 つで割込みが保留中であることを示します（デバイスモード）。

周期的フレーム終了割込み

現在のフレームで、周期的フレーム間隔フィールドに指定された時間に達しました。

アイソクロナス OUT パケット欠
落割込み

アイソクロナス OUT エンドポイントの最大サイズのパケットを収容するのに十分なスペースが Rx FIFO にないため、Rx FIFO へのアイソクロナス OUT パケット書込みに失敗しました。

エニュメレーション終了

スピードエニュメレーションが完了しました。

USB リセット

デバイスモード：USB でリセットが検出されました（部分的パワーダウンモード以外のときであることに注意）。

割込みを示すこの 2 番目のスライドでは、別のさまざまなソースのセットについて説明しています。

7

割込み（続き）
割込みイベント

説明

USB サスペンド

USB でサスペンドが検出されました。

アーリーサスペンド

USB でアイドル状態が 3ms 間検出されました。

グローバル OUT NAK 有効

アプリケーションでグローバル OUT NAK ビットをセットすると、コアで有効になります。

グローバルIN非周期的NAK
有効

アプリケーションでグローバル非周期的 IN NAK ビットをセットすると、コアで有効になります。

非周期的 Tx FIFO エンプティ

非周期的 Tx FIFO は半エンプティまたは完全エンプティです。

Rx FIFO ノットエンプティRx FIFO からの読出しが保留されている少なくとも 1 つのパケットがあります。

フレーム開始ホストモード：コアはこのビットをセットして、USB で SOF（FS）またはキープアライブ（LS）が送信されることを示します。
デバイスモード：コアはこのビットをセットして、USB に SOF トークンが受信されたことを示します。
（上セグメントと結合）

OTG 割込み

OTG プロトコルイベント。

モード不一致割込み

デバイスモードで動作中のコアにホストモードレジスタアクセスをしたとき（またはその逆）。

割込みソースを説明するこの 3 番目のスライドでは、一般的なレジスタアクセスエラーだけでなく、多くの SUSPEND、OTG 機能、および FIFO ステータスイベントを示しています。

8低電力モード（OTG）

モード

説明

サスペンド：HCLK をゲート

OTG ハイスピードコア内部のシステムクロックドメインのほとんどは、クロックゲーティングによってオフになっています。

サスペンド：USB システムの停止

アプリケーションは、システム内のすべてのクロックソースを完全にシャットダウンして、全体の電力消費を大幅に削減する決定をすることがあります。

ハイスピードコアの低電力モードは、デバイスモードで USB サスペンドがアクティブな場合に使用できます。次のスライドも参照してください。

9低電力モード
MPU のモード

説明

USB

RUN

MCU が完全にアクティブ

USB がサスペンドモードに入るまで必要です。

SLEEP

ペリフェラル割込みによって、デバイスはSLEEP モードを終了します。ペリフェラルレジスタの内容は保たれます。

USB がサスペンドモードのときに使用できます。

STOP/
LP Stop

ペリフェラル割込みによって、デバイスはSLEEP モードを終了します。ペリフェラルレジスタの内容は保たれます。

USB がサスペンドモードのときに使用できます。
これにより消費電力を最適化できます。

LP LV STOP

低電圧 STOP モード

USB のアプリケーションとは両立しません（サスペンドからウェイクアップさせない選択も可）。

STANDBY

パワーダウン状態です。ペリフェラルは、STANBY モード終了後に再初期化する必要があります。

USB のアプリケーションとは両立しません。

USB OTG ペリフェラルは、RUN モードで完全にアクティブです。
USB サスペンド中は、SLEEP、STOP、LP Stop モードを使用できます。

10デバッグ情報11• 以下のデバッグを支援するため、いくつかの専用ビットが実装されています。
• USB 受信データ FIFO ステータス／コンテンツ（ホストモードとデバイスモードの両方）• ホストモード：周期的なキュースケジューリング

デバッグビット

説明

OTG 受信ステータスデバッグ読出し／OTG
ステータス読出しおよびポップレジスタ

デバッグ時の特別な FIFO 読出しアクセス

周期的送信リクエストキューの先頭

MAC が現在処理している周期的 Tx リクエストキュー内のエントリを示します。

USB アプリケーションのデバッグ機能を有効にするため、USBモジュール内に専用ビットが実装されています。
これらのビットは、FIFO のステータスと内容、およびホストモードでの周期的キューのスケジューリングに関するものです。
これらのデバッグビットに関する追加の情報が表に示されています。

11

USBPHYC の使用

12• STM32MP1 マイクロコントローラに内蔵されている 2 ポートのハイスピード（HS）
UTMI PHY を使用するには、USBPHYC が必要です• USBPHYC の機能• HS PHY に関連付けられた PLL を制御します。
• 共有の PHY 2 番ポートの UTMI スイッチを制御し、OTG がそのポートを使用できるようにします。
• 最適なパフォーマンスに必要な HS PHYトランスミッタとレシーバの微調整を可能にします。

USBPHYC は、ハイスピード PHY を使用する場合に常に必要となる小さなコントローラです。 ハイスピード PHY 内の PLL を制御して、OTG コントローラが 2 番目のポートにアクセスできるようにします。ハイスピード PHY の微調整も USBPHYC を使用して行うべきで、これは極めて適切に調整されたアイダイアグラムを取得する際に欠かせません。

12

アプリケーション：OTG「On-The-Go」アプリケーション• 図は「OTG」アプリケーションの設計例を示しています。

5V から VDD
レギュレータへ

5V 生成（電流リミッタ電源スイッチ）

STM32MP1

OTG_HS_DP
OTG_HS_DM
OTG_HS_ID

VBUS から／への、シンク／ソース電源

VBUS

EMC
保護DPDMID

USB Micro-B レセプタクル

クリスタル（たとえば24MHz）

13• この例では、デバイスはバスからの給電で、USB VBUS からのみ電源を取得します。
• 単一の 24MHz クリスタルオシレータを使用できます。

USB OTG、 すなわち「On-The-Go」アプリケーションの例です。
デバイスモードでは、USB VBUS 信号から直接電源を取得できます。
ホストモードでは、VBUS をローカルに生成する必要があります。
外部に単一のクリスタルオシレータ（24MHz など）が必要です。

13

参照

14

• 詳細については、次のソースページを参照してください。
• www.usb.org：Document library ページ• “USB2 specification” => 以下を含む ZIP ファイル• USB2.0 specification• On-The-Go and Embedded Host Supplement to the USB Revision 2.0 Specification (USB2),
latest version 1.1a
• USB 2.0 ECN：Link Power Management Addendum•「バッテリ充電器 v1.2」仕様• ST Microelectronics MPU に関する Wiki のページ

完全な USB 仕様 の関連資料については、USB.org を参照してください。
USB2.0 関連資料のホームページには、USB2.0 と OTG2.0 仕様、および LPM の ECN を含む ZIP ファイルがあります。
また、wiki の MPU のページも参照してください。

14