STM32H7 – USB OTG HS
USB On-The-Goハイスピードおよびフルスピード・インタフェース
1.0版

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

1

概要• USB2.0フルスピードに加え、高速ULPI(UTMI+Low Pin Interface)インタフェースを搭載

バスパワーペリフェラルの図
VBUSから電源を取得
電圧レギュレータ• デバイスのみ、ホストのみ、およびOTG機能

STM32H7

FS_DM

EMC
保護DP
DM

USB Micro-B
レセプタクル

VBUS

FS_DP

2

アプリケーション側の利点• 低消費電力モードのサポート• 2つの独立したインスタンス、それぞれに専用のDMAを搭載• バッテリ･チャージャ検出

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

2

USB機能3• USB2.0フルスピード(12Mビット/秒)• コントロール（EPO）、バルク、インタラプト、アイソクロナス転送のサポート• オンザフライ･エンドポイントの設定• リンク･パワー･マネージメント（LPM）のサポート• OTGサポート• バッテリ充電器検出ハードウェアを装備• 最新仕様のBC 1.2をサポート（実装にはソフトウェアが必要）• ハードウェアが提供するこの仕様によりBC 1.2準拠の充電器からより多くの電流（最大1.5A）を安全に確保できるため、バッテリの再充電時間が短縮可能• ULPIを用いたUSB2.0ハイスピード(480Mビット/秒)• 外部のULPIトランシーバと組み合わせると、同じ動作モードで使用可能

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

3

USB OTG

4• USB On-the-Go(OTG)• 接続されたケーブルに応じて、デフォルトの役割（デバイス／ホスト）を選択• ID端子の信号で検出• デバイスオンリーおよびホスト専用デバイスとの互換性を実現• ネゴシエーションプロセスを通じて、ランタイムに役割を切り替えることが可能• ホスト･ネゴシエーション･プロトコル(HNP)• ポイント･ツー･ポイント接続のみ

ホスト/デバイス
ホストロールUSBケーブル

ホスト/デバイス
デバイスロール• マイクロABレセプタクルが必要• マイクロA、マイクロBの両コネクタに対応• STライブラリではサポートされていませんが、HWは可能

オンザフライ･ホスト / デバイス･スイッチ• 例:• スマートフォン、タブレット、カメラ(ファイル･ストレージ)– PC接続時のデバイス– USBディスクまたはHID(ヒューマン･インタフェース･デバイス)クラスデバイス(キーボード、マウス)が接続されている場合のホスト

ここでは、USB On-the-Go（OTG）機能について、もう少し詳しく説明しましょう。
デフォルトの役割は、ケーブルの接続状態（コネクタ内部の追加IDピン）によって決まります。USBペリフェラルが1つの役割しか持たない場合、IDピンは無視されます。周辺機器の役割は、2つのOTGデバイスがポイント・トゥー・ポイント接続で直接接続されている間、その場で切り替えることができます。この機能は、マイクロAまたはマイクロBコネクターを持つデバイスでのみ可能です。例えば、一部のスマートフォンがこの機能を備えています。
ペリフェラルはOTGとして完全に動作しますが、現在、STM32Cube HALライブラリにはファームウェアのサポートがありません。

4

OTG_HSペリフェラル

5• 2つの同一のペリフェラル - OTG_HS1とOTG_HS2• 1つの例外として、OTG_HS2にはULPIインタフェースがない• HS PHYの接続は不可• OTG_HS1とOTG_HS2の両ペリフェラルは、FSモードで動作可能• 外部HS PHYを搭載したOTG_HS1のみHSモードで動作可能• 各OTG_HSペリフェラル専用のFIFO用4KバイトRAM• SOF信号出力、OTG_HS毎の専用DMA

STM32H7マイコンは、USB HSペリフェラルの2つのインスタンス（OTG_HS1およびOTG_HS2）を内蔵しています。どちらもフルスピード通信とOTGモードをサポートしていますが、OTG_HS1ペリフェラルのみ、ULPIインタフェースにより外部HS PHYを介した高速通信をサポートしています。

5

OTG_HSペリフェラル
USB機能

OTG_HS1OTG_HS2デバイスの双方向性エンドポイント（EP0を含む）

9

ホストモードチャネル

16

専用SRAMのサイズ

4キロバイトUSB2.0リンク･パワー･マネージメント（LPM）サポート

利用可能

OTGリビジョン･サポート

2.0

付加検出プロトコル(ADP)のサポートサポートされていない

バッテリ充電器検出(BCD)サポート

利用可能

ULPIはマルチプレックスによりプライマリIOに利用可能

6

利用可能

サポートされていない

ペリフェラルの特性を紹介します。デバイスの実装には、エンドポイント0を含む最大9チャネルを使用することができ、より複雑な複合デバイスの作成に役立ちます。ホスト側では、最大16チャネルを並列に使用することができます。すでに強調したよ
うに、どちらのインスタンスもFIFO用の専用4KバイトRAMを持ち、リンクパワーマネジメント、OTGモード、バッテリ充電器検出をサポートしています。ただし、OTG_HS1のみ、ULPIハードウェアインタフェースを使用して外部USBPHYを接続し、高速モードで動作させることができます。

6

ブロック図(OTG_HS1)

7

AIECCPU割込み

NVIC

AHBマスタインタフェース
メモリ

ペリフェラル1

ペリフェラル2

ULPI_CKULPI_DIRAHB

ULPI_STPUSB OTG HSコアULPI_NXT

ULPI
HS
PHY
(外部コンポーネント)

USB2.0(D+/D-)

ULPI_D[0:7]

AHBスレーブ
インタフェースUTMIFSOTG FS
PHY

DP
DM
ID
Vbus
OTG_HS_SOF

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

このブロック図では，中央にUSB OTGハイスピードコントロー
ラコア（「HS1」インスタンス）が，その下にデータFIFOが示されています。右側のFS物理層（PHY）は、アナログ信号レベルを処理し、On-The-Goやバッテリ充電器検出機能に関連する多くの特定のレベル検出を行います。高速動作のために、外部ULPI PHYトランシーバをHS2コアに接続することができます。
USB割込みは、Cortexプロセッサに送られ、様々なUSBイベントを通知します。また、AHBスレーブインタフェースで、コントローラーレジスタと電源およびクロック制御ブロックの読出し／書込みアクセスが可能になります。メモリへの転送は、コントローラ内のDMAエンジンがAHBマスタインタフェースを介して行います。

7ブロック図(OTG_HS2、FSのみ)

8

AIEC

CPU

割込み

NVIC

AHBマスタインタフェース
メモリペリフェラル
1ペリフェラル2A
H
B

USB OTG HSコア

AHBスレーブ
インタフェースUTMIFSOTG FS
PHY

DP
DM
ID
Vbus
OTG_FS_SOF

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

このブロック図では、中央にUSB OTGハイスピードコントロー
ラコア（「HS2」インスタンス）、その下にデータFIFOが示されています。右側のFS PHYは、On-The-Goやバッテリ充電器検出機能に関連する多くの特定のレベル検出を含むアナログ信号レベルを処理します。なお、HS2コアの接続性はフルスピードでの動作のみ可能です。USB割込みはCortexプロセッサに送られ、様々なUSBイベントを通知します。AHBペリフェラルバ
スは、コントローラのレジスタや電源およびクロック制御の読出し/書込みアクセスが可能になります。ユースケース（デバイスのみ、またはOTGデバイス）に応じて、USBブロックの正確なタイミング基準を提供するために、低周波または高速の水晶発振器が必要となります。

8USB電源構成

9• USBレギュレータ: STM32H7x3で追加された新機能• OTG_HSペリフェラルをDC5Vソース（VBUS）から供給することが可能で、アプリケーションは異なる電源（および異なる電圧）で動作することが出来る• USBレギュレータからの外部供給は出来ない

VDD33

VDD33USB
VDD50
VSS

USB
レギュレータ(オン)
USBREGEN ビット = 1• USBレギュレータの供給(New)

VDD33USB
VDD50USB

USB
レギュレータ(バイパス)VSS

USBREGEN ビット = 0• 外部USB電源OTGペリフェラル専用の電圧レギュレータは，STM32H7ファミ
リの新機能です。このレギュレータを使用すると、OTGペリフェ
ラルのみに電源を供給することができ、他の内部または外部機能をピンVDD33USBに接続することはできません。これにより、部品を追加せずにVBUSから直接ペリフェラルに電源を供給したり、MCUのVDDに異なる電圧レベルを使用したりすることができます。USBペリフェラルに3V3の外部電圧源を供給する必要がある場合は、ビットUSBREGENを0に設定します。

9クロックソース

10• USBアプリケーションの場合、内蔵のクロックソースは十分な精度ではない• USBホストとHSデバイスのアプリケーションにはHSEの使用が必要• USB FSでは、CRS（クロック・リカバリー・システム）またはHSEを使用することが可能• CRSを使用することで、クリスタルレスのUSBデバイス設計が可能になる• CRSは、次の機能を使用して内部クロックソースの同期を有効する• LSEオシレータ• USBx SOFパケット受信（デバイスとして動作するOTGペリフェラルが使用可能）

高速通信を実現するためには、高周波のクロックが必要です。
そのため、USBのクロックはHSEのクロックから供給されます。
フルスピード通信を実現するためには、クロックリカバリーシス
テム（CRS）をベースにしたクリスタルレス設計を行うことができます。なお、このクロックリカバリーシステムは、フルスピードデバイスの場合にのみ関連していることに注意してください。

10

動作モード11• ペリフェラル(デバイス)モード機能:• ペリフェラルモードで動作する場合はデバイスのみ、またはOTGデバイス• D+ライン上の内部設定可能な1k5オームの抵抗• ソフトディスコネクト機能のサポート• 1双方向制御エンドポイント0• 8つのINと8つのOUTのエンドポイントは、バルク、割込み、アイソクロナスのいずれの転送にも対応可能• 共有Rx FIFOおよび最大9個の専用Tx-OUT FIFOのマネージメント

常に2つの動作モード（ホストモードまたはデバイスモード）のうち1つが機能しています。
ペリフェラルモードは、デバイスモードで動作しているときに、通常のデバイスやOTGデバイスに使用されます。
D+ライン上の1.5キロオームプルアップ抵抗は、バス上のデバイスの存在を示すために使用することができます。アプリケーションの実装には、1つの双方向制御エンドポイント0が用意されています。さらに8つのINと8つのOUTのエンドポイントをonthe-flyで設定することができます。専用の4KバイトRAMは、1つの共有RxFIFOと、各アウトエンドポイントに1つずつ、最大9つのTxFIFOに分割することができます。

11

動作モード12• ホストモード機能:• ホストモードで動作する場合は、ホストのみ、またはOTGデバイス• VBUS電圧生成用外部チャージポンプ• 最大16のホストチャネル（パイプ）：各チャネルは動的に再構成可能で、あらゆるタイプのUSB転送を割り当てる• ハードウェア･スケジューラを内蔵• 周期的なハードウェアキューに最大16個の割り込み＋アイソクロナス転送要求が可能• 非周期的なハードウェアキューに最大16個の制御要求と一括転送要求を搭載• 共有のRx FIFO、周期的なTx FIFO、非周期的なTx FIFOを管理し、USBデータRAMを効率的に使用• 外部チャージ･ポンプが必要

ターゲットホストモードは、ホストモードで動作する場合、組み込みホストまたはOTGデバイスに使用されます。
ホストモードでは、外部のチャージポンプを使用してVBUS電圧を駆動する必要があります。アプリケーションは、最大16個のホストチャネル（パイプ）を使用でき、その場で転送タイプを変更することができます。内蔵のハードウェア・スケジューラは、最大16の周期的および非周期的なリクエストを管理できます。
周期的なリクエストとは、割込みやアイソクロナス・チャネルからのリクエストで、非周期的なリクエストとは、バルク・チャネルやコントロール・チャネルからのリクエストです。FIFO RAMは3つの共有部分に分かれています。RxFIFO，TxFIFOは周期的な転送用，TxFIFOは非周期的な転送用です。

12

STM32ライブラリでのUSBクラスのサポート
USB
クラス

13

Windowsドライバのサポート

デバイス
サポート

ホスト
サポート

MSC

はい

はい

はい

MTP

はい

はい

はい

CDC

はい

はい

Windows10/STドライバを使用

HID

はい

はい

はい

AUDIO

はい

はい

はい

DFU

はい

いいえ

STドライバを使用

このスライドでは、STM32ライブラリによる標準USBクラスのサポートを示します。

13

低電力モード(OTG_FS)
モード

14

説明

PHY:パワーダウン

PHYのフルスピード･トランシーバ･モジュールのオン/オフを切り替える

PHY:VBUS検出

OTG動作に関連するVBUSセンシング･コンパレータをオン / オフ

サスペンド:PHYクロック停止

OTGフルスピード･コアに内蔵されている48MHzのクロック･ドメインの大部分は、クロック･ゲーティングによってオフになる

サスペンド:HCLKをゲート

OTGフルスピード･コア内部のシステムクロック･ドメインの大部分は、クロック･ゲーティングによってオフにされるサスペンド:USBシステム停止

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

ここでは、USBの物理層（PHY）とコントローラーのさまざまな低電力モードについて簡単に説明します。
PHYでは、VBUSが存在せず、セッションがOTGではないと認識されている場合などに、パワーダウンモードを使用することができます。また、OTG機能が使用されていない場合は、OTG（A-およびB-セッション）に関連するVBUSセンシングを無効にすることも可能です。
サスペンドモード中は、USBインタフェース上でのダイナミックな信号伝達が行われないため、アプリケーションの要求に応じて消費電力を下げるために、3つの異なるコントロールが提供されます。

14

低電力モード(OTG_HS)

モード

15

説明

サスペンド：HCLKをゲート

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

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

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

ハイスピードコアの低消費電力モードは、フルスピードのものと似ていますが、PHY（またはトランシーバー）が外付け部品である場合には、PHYに関するモードはリストされていません。

15

MCU低電力モード
MCUのモード

説明

16USB

RUN

MCUは完全にアクティブUSBがサスペンド･モードに入るまで必要

SLEEP

ペリフェラルの割込みにより、デバイスがSLEEPモードを終了ペリフェラル･レジスタの内容は保持USBがサスペンド･モードの間、使用可能

STOP

ペリフェラル割込みにより、デバイスがSTOPモードを終了ペリフェラル･レジスタの内容は保持USBがサスペンド･モードの間に利用可能で、最適な電力削減が可能

STANDBY

パワーダウンSTANDBYモードを解除した後は、ペリフェラルを再初期化する必要がある

USBアプリケーションには対応していない

USBペリフェラルは、RUNモードとSLEEPモードでアクティブになります。STOPモードでは、USBは使用できませんが、そのレジスタの内容は保持されます。STANDBYモードでは、USBペリフェラルはパワーダウンしており、高い電力状態に戻る際には再初期化する必要があります。

16

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

デバッグビット

説明

OTG_FS(/HS)受信ステータスデバッグ読取り/OTGステータス読取りとポップレジスタ

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

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

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

USBモジュール内では、USBアプリケーションでデバッグ機能を使用できるように、特定の専用ビットが実装されています。
これらは、FIFOのステータスと内容、およびホストモードでの定期キューのスケジューリングに関連しています。
これらのデバッグビットの詳細については、この表に示します。

17アプリケーション:低電力デバイス• この回路図は、「デバイスのみ」
アプリケーションの低電力設計の例を示している

VBUSからの電力をシンク

クリスタル未使用（CRSモード）
電圧レギュレータ• この例では、デバイスはバスパワーで、USB VBUSからのみ電力を供給

STM32H7

EMC
保護DP
DM

USB Micro-B
レセプタクル

VBUS

FS_DP
FS_DM

18

• このクリスタルレス設計は、正確なUSBクロックを供給するためにクロック回復システム(CRS)を使用

ここでは、低消費電力デバイスのアプリケーション例をご紹介します。
電源はUSB VBUS信号から直接引き出されます。
ハイスピード通信に必要な精度のクロック信号を得るために、USBクロックはクロックリカバリーシステムから供給され、外付けの共振器を必要としないため、このようなアプリケーションではクリスタルレスの設計が可能です。

18

参照

19

• 詳しくは、以下のソースページをご覧ください• www.usb.org: usb20_docs (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• www.usb.org: devclass_docs• Battery Charger v1.2 specification

完全なUSB仕様の関連資料については、USB.orgを参照してください。
USB2.0関連資料のホームページには、USB2.0とOTG2.0仕様、およびLPMのECNを含むZIPファイルがあります。
USBデバイスクラスのドキュメントページには、バッテリ充電器の仕様が掲載されています。

19