セクション 27. usb on-the-go (otg)ww1.microchip.com/downloads/jp/devicedoc/61126f_jp.pdfファ...

72
© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-1 USB On-The-Go (OTG) 27 セクション 27. USB On-The-Go (OTG) ハイライト 本セクションには以下の主要項目を記載しています。 27.1 はじめに....................................................................................................................... 27-2 27.2 制御レジスタ ............................................................................................................... 27-4 27.3 動作............................................................................................................................ 27-36 27.4 ホストモードの動作................................................................................................... 27-51 27.5 割り込み..................................................................................................................... 27-59 27.6 I/O ピン ...................................................................................................................... 27-62 27.7 デバッグモードおよび省電力モードでの動作 ........................................................... 27-64 27.8 リセットの影響.......................................................................................................... 27-66 27.9 関連アプリケーション ノート ................................................................................... 27-67 注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジ ナルの英語版をご参照願います。

Upload: others

Post on 07-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジナルの英語版をご参照願います。

セクション 27. USB On-The-Go (OTG)

US

B O

n-T

he-G

o

(OT

G)

27

ハイライト

本セクションには以下の主要項目を記載しています。

27.1 はじめに....................................................................................................................... 27-2

27.2 制御レジスタ ............................................................................................................... 27-4

27.3 動作............................................................................................................................ 27-36

27.4 ホストモードの動作................................................................................................... 27-51

27.5 割り込み..................................................................................................................... 27-59

27.6 I/O ピン ...................................................................................................................... 27-62

27.7 デバッグモードおよび省電力モードでの動作 ........................................................... 27-64

27.8 リセットの影響.......................................................................................................... 27-66

27.9 関連アプリケーション ノート ................................................................................... 27-67

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-1

Page 2: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.1 はじめにPIC32 の USB OTG モジュールは下記の特長を備えます。

• USB ホストおよびデバイスでフルスピードをサポート

• USB ホストではロースピードもサポート

• USB On-The-Go (OTG) をサポート

• 信号ラインのプルアップ / プルダウン抵抗を内蔵

• VBUS 監視用にアナログ コンパレータを内蔵

• USB トランシーバを内蔵

• ハードウェアによるトランザクション ハンドシェイクの実行

• システム RAM の任意位置でのエンドポイント バッファリング

• 内蔵バスマスタでシステム RAM とフラッシュメモリにアクセス

• USB OTG モジュールの動作に PIC32 DMA モジュールは不要

USB OTG モジュールは、USB 組み込みホスト (USB 2.0 フルスピードおよびロースピード )、USB デバイス(フルスピード)、USB OTG を最小限の外付け部品で実装できるアナログおよびデジタル構成要素を内蔵しています。このモジュールは、ホストモードでは組み込みホストとしての使用を目的とするため、UHCI または OHCI コントローラを実装していません。

USB OTG モジュールはクロック ジェネレータ、USB 電圧コンパレータ、トランシーバ、シリアル インターフェイス エンジン (SIE)、専用 USB バスマスタ、プルアップおよびプルダウン抵抗、レジスタ インターフェイスにより構成されます。USB OTG モジュールのブロック図を図 27-1 に示します。

クロックジェネレータは、USB フルスピードおよびロースピード通信に必要な 48 MHz クロックを生成します。電圧コンパレータは、VBUS ピンの電圧を監視してバスの状態を判別します。トランシーバは、USB バスとデジタルロジック間のアナログ転送を提供します。SIE はエンドポイント バッファとの間でデータを双方向に転送するステートマシンであり、データ転送用のハードウェア プロトコルを生成します。USB バスマスタは、RAM 内のデータバッファと SIE間でデータを転送します。モジュールはプルアップおよびプルダウン抵抗を内蔵するため、信号ラインに外付け部品は不要です。CPU はレジスタ インターフェイスを介してモジュールを設定し、モジュールと通信します。

Note: ファミリ リファレンス マニュアルの本セクションは、デバイス データシートの補足を目的としています。本書の内容は PIC32 ファミリの一部のデバイスには対応していません。

本書の内容がお客様のご使用になるデバイスに対応しているかどうかは、最新デバイス データシート内の「USB On-The-Go (OTG)」の冒頭に記載している注意書きでご確認ください。

デバイス データシートとファミリ リファレンス マニュアルの各セクションは、マイクロチップ社のウェブサイト (http://www.microchip.com) でご覧になれます。

重要 : 他のサードパーティ仕様や技術と同様に、USB の実装と使用に際しては使用許諾が必要とされる場合があります。詳細は USB implementers forum (USB-IF) 等を参照してください。使用許諾義務に関する調査と履行は全てユーザの責任となります。

DS61126F_JP - p. 27-2 © 2013 Microchip Technology Inc.

Page 3: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

図 27-1: PIC32 USB OTG の接続図

Note 1: PB クロックは、EC モードを選択している場合にのみ、このピンで出力できます。

2: USB を有効にしない場合、これらのピンはデジタル入力として使えます。

3: このビットフィールドは OSCCON レジスタ内にあります。

4: このビットフィールドは OSCTRM レジスタ内にあります。

5: USB PLL UFIN の要件 : 4 MHz UFIN 5 MHz6: このビットフィールドは DEVCFG2 レジスタ内にあります。

7: USB 動作には 48 MHz クロックが必要です。

8: USB OTG モジュールを無効にしている場合、これらのピンは GPIO として使えます。

9: USB OTG モジュールを有効にしている場合、このピンは内部で HIGH に設定されます。

OSC1

OSC2

Primary Oscillator

8MHzTypical

FRCOscillator

TUN<5:0>(4)

PLL

48 MHz USB Clock(7)

Divx

UPLLEN(6)

(PBOUT)(1)

UFRCEN(3)

(POSC)

FUPLLIDIV(6)

UFIN(5)

Div2

VUSB

D+(2)

D-(2)

ID(8,9)

VBUS

Transceiver

SIE

VBUSON(8)

Comparators

USBSRPCharge

SRPDischarge

Registersand

ControlInterface

Transceiver Power 3.3V

To Clock Generator for Core and Peripherals

Sleep or Idle

Sleep

USBEN

USB Suspend

CPU Clock Not POSC

USB OTG Module

Voltage

SystemRAM

USBSuspend

Full-SpeedPull-up

HostPull-down

Low-SpeedPull-up

HostPull-down

ID Pull-up

Bus Master

24xPLL

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-3

Page 4: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.2 制御レジスタUSB OTG モジュールは下記の特殊機能レジスタ (SFR) を備えます。

• U1OTGIR: USB OTG 割り込みステータス レジスタ

このレジスタは ID データおよび VBUS ピンの状態変化を記録します。ソフトウェアは、このレジスタを使って、割り込みの原因となったイベントを判別できます。割り込みビットをクリアするには、対応する割り込みに「1」を書き込む必要があります。

• U1OTGIE: USB OTG 割り込みイネーブル レジスタ

このレジスタは、U1OTGIR レジスタで定義されている各割り込みステータスビットに対応する割り込みの生成を有効にします。

• U1OTGSTAT: USB OTG ステータス レジスタ

このレジスタは、VBUS 電圧コンパレータのステータスと ID ピンのステータス ( デバウンス処理後 ) を提供します。

• U1OTGCON: USB OTG 制御レジスタ

このレジスタは、VBUS ピンとプルアップおよびプルダウン抵抗の動作を制御します。

• U1PWRC: USB 電源制御レジスタ

このレジスタは、省電力モードの制御とモジュールの有効化 / 無効化を行います。

• U1IR: USB 割り込みレジスタ

このレジスタは保留中のエラー割り込みに関する情報を格納します。割り込みビットがセットされた場合、対応するビットに「1」を書き込む事によりクリアできます。

• U1IE: USB 割り込みイネーブル レジスタ (1)

このレジスタの値は、個々の割り込み信号を USB 割り込み信号に反映させるかどうかを指定します。これらの値は USB OTG モジュール自体の動作には影響しません。これらのビットをセットすると、U1IR レジスタ内の対応する割り込み要因が有効になります。

• U1EIR: USB エラー割り込みステータス レジスタ

このレジスタは保留中の割り込みに関する情報を格納します。割り込みビットがセットされた場合、対応するビットに「1」を書き込む事によりクリアできます。

• U1EIE: USB エラー割り込みイネーブル レジスタ (1)

このレジスタの値は、個々の割り込み信号を USB 割り込み信号に反映させるかどうかを指定します。これらの値は USB OTG モジュール自体の動作には影響しません。UERRIE ビット (U1IE<1>) をセットした状態でこれらのビットをセットすると、U1EIR レジスタ内の対応する割り込み要因が有効になります。

• U1STAT: USB ステータスレジスタ (1)

U1STAT は 16 段の先入れ先出し (FIFO) レジスタです。このレジスタは、CPU からは読み出し専用ですが、USB OTG モジュールからは読み / 書き可能です。U1STAT は、TRNIF ビット (UxIR<3>) がセットされている場合にのみ有効です。

• U1CON: USB 制御レジスタ

このレジスタは、モジュールに関するその他の制御と情報を提供します。

• U1ADDR: USB アドレスレジスタ

U1ADDR は、CPU からは読み / 書き可能ですが、USB OTG モジュールからは読み出し専用です。このレジスタの値は USB OTG モジュールの設定に影響しますが、アクセス中にレジスタの内容は変化しません。

デバイスモードの場合、このレジスタはセットアップ フェイズ中にホストによって割り当てられる USB デバイスアドレスを格納します。このアドレスは、セットアップが要求された時に、ファームウェアによってこのレジスタに書き込まれます。USB バスのリセットを検出すると、このアドレスは自動的にリセットします。ホストモードの場合、モジュールはこのレジスタ内のアドレスを、対応するトークンパケットと一緒に送信します。これにより、USBOTG モジュールは接続されているデバイスを一意にアドレス指定できます。

DS61126F_JP - p. 27-4 © 2013 Microchip Technology Inc.

Page 5: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

• U1FRML: USB フレーム番号 LOW レジスタ、U1FRMH: USB フレーム番号 HIGH レジスタ

U1FRML と U1FRMH は読み出し専用レジスタです。これらの 8 ビットレジスタを連結する事でフレーム番号を形成します。U1FRMH は上位バイトを格納し、U1FRML は下位バイトを格納します。

• U1TOK: USB トークンレジスタ

U1TOK は、モジュールがホストとして動作する場合に使用する読み / 書き可能レジスタです。このレジスタは、トークンのタイプ (PID<3:0>)( パケット ID) とホストプロセッサがアドレッシングするエンドポイント (EP<3:0>) を指定します。このレジスタに書き込むとホスト トランザクションが始まります。

• U1SOF: USB SOF しきい値レジスタ

U1SOF は、SOF (Start of Frame) しきい値のカウントビットを格納するホストモード専用の読み / 書き可能レジスタです。

パケットデータと SOF トークン (1 ms 周期で送信 ) 間の衝突を防ぐため、USB OTG モジュールはSOF直前のU1SOFバイト時間内では新しいトランザクションを送信しません。USB OTGモジュールは処理中のトランザクションを全て完了させます。ホストモードでは、このしきい値に達した時点で、SOF 割り込みが発生します (SOF が発生した時点ではありません )。デバイスモードでは、SOF を受信した時点で割り込みが発生します。SOF しきい値内で開始したトランザクションは、SOF トークンの送信が完了するまで USB OTG モジュールによって保留されます。

• U1BDTP1: USB BDT レジスタ、U1BDTP2: USB BDT PAGE 2 レジスタ、U1BDTP3: USBBDT PAGE 3 レジスタ

これらの読み / 書き可能レジスタは、システムメモリ内に配置されたエンドポイント バッファ ディスクリプタ (BDT) の 32 ビット ベースアドレスの上位 23 ビットを定義します。BDTは 512 バイト境界に配置されます。このレジスタは、BDT のリアルタイムな再配置を可能にします。

• U1CNFG1: USB コンフィグレーション 1 レジスタ

U1CNFG1 は、デバッグおよびアイドル中のモジュールの挙動を制御する読み / 書き可能レジスタです。このレジスタは、モジュールを有効にする前に設定しておく必要があります。

• U1EP0-U1EP15: USB エンドポイント 制御レジスタ

これらのレジスタは、対応するエンドポイントの挙動を制御します。

27.2.1 関連レジスタ

USB PLL および USB FRC クロック源を有効にするレジスタビットについては、『セクション06. オシレータ』(DS61112) を参照してください。

USB OTG モジュール割り込みを有効にするレジスタビットと、発生した割り込みを判別するためのレジスタビットについては、『セクション 08. 割り込み』(DS61108) を参照してください。

USB PLL を有効にするレジスタビットと、分周比を設定するコンフィグレーション ビットについては、『セクション 32. コンフィグレーション』(DS61124) を参照してください。本書には、USB OTG モジュールが USBID および VBUSON ピンを使わないモードでのみ動作する場合に、それらのピンを I/O 用に再設定する方法についても記載しています。

27.2.2 USB OTG 割り込みのクリア

他のデバイスレベルの割り込みとは異なり、USB OTG割り込みステータスフラグはソフトウェアで自由に書き込む事はできません。全ての USB OTG フラグビットは、ハードウェアによるセットのみが可能です。これらのビットはソフトウェアで「1」を書き込む事によってのみクリアできます。フラグビットに「0」を書き込んでも効果はありません。

Note: 本書全体を通して、「1」を書き込む事によってのみクリア可能なビットを「「1」書き込みクリアビット」と呼びます。この後のレジスタの説明では、このビット機能を「K」で表します。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-5

Page 6: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.2.3 レジスタファイルのまとめ

全ての USB OTG レジスタを表 27-1 にまとめて示します。

表 27-1: USB OTG レジスタのまとめ (1)

レジスタ

ビット

レンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

U1OTGIR 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 IDIF T1MSECIF LSTATEIF ACTVIF SESVDIF SESENDIF — VBUSVDIF

U1OTGIE 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 IDIE T1MSECIE LSTATEIE ACTVIE SESVDIE SESENDIE — VBUSVDIE

U1OTGSTAT 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 ID — LSTATE — SESVD SESEND — VBUSVD

U1OTGCON 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 DPPULUP DMPULUP DPPULDWN DMPULDWN VBUSON OTGEN VBUSCHG VBUSDIS

U1PWRC 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 UACTPND — — USLPGRD USBBUSY(2) — USUSPEND

USBPWR

U1IR 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0STALLIF ATTACHIF RESUMEIF IDLEIF TRNIF SOFIF UERRIF

URSTIF

DETACHIF

U1IE 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0STALLIE ATTACHIE RESUMEIE IDLEIE TRNIE SOFIE UERRIE

URSTIE

DETACHIE

U1EIR 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0BTSEF BMXEF DMAEF BTOEF DFN8EF CRC16EF

CRC5EFPIDEF

EOFEF

U1EIE 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0BTSEE BMXEE DMAEE BTOEE DFN8EE CRC16EE

CRC5EEPIDEE

EOFEE

U1STAT 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 ENDPT<3:0> DIR PPBI — —

凡例 : — = 未実装、「0」として読み出し、アドレス オフセット値は 16 進数で表記

Note 1: SET、CLR、INV レジスタが割り当てられていないレジスタもあります。詳細は各デバイスのデータシートを参照して

ください。

2: 一部のデバイスではこのビットを利用できません。詳細は各デバイスのデータシートを参照してください。

DS61126F_JP - p. 27-6 © 2013 Microchip Technology Inc.

Page 7: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

U1CON 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0JSTATE SE0

PKTDISUSBRST HOSTEN RESUME PPBRST

USBEN

TOKBUSY SOFEN

U1ADDR 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 LSPDEN DEVADDR<6:0>

U1BDTP1 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 BDTPTRL<15:9> —

U1FRML 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 FRML<7:0>

U1FRMH 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — — — FRMH<2:0>

U1TOK 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 PID<3:0> EP<3:0>

U1SOF 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 CNT<7:0>

U1BDTP2 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 BDTPTRH<23:16>

U1BDTP3 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 BDTPTRU<31:24>

U1CNFG1 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 UTEYE UOEMON USBFRZ USBSIDL — — — UASUSPND(2)

U1EP0 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 LSPD RETRYDIS — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP1 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

表 27-1: USB OTG レジスタのまとめ (1) ( 続き )レジスタ

ビット

レンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

凡例 : — = 未実装、「0」として読み出し、アドレス オフセット値は 16 進数で表記

Note 1: SET、CLR、INV レジスタが割り当てられていないレジスタもあります。詳細は各デバイスのデータシートを参照して

ください。

2: 一部のデバイスではこのビットを利用できません。詳細は各デバイスのデータシートを参照してください。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-7

Page 8: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

U1EP2 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP3 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP4 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP5 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP6 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP7 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP8 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP9 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP10 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP11 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP12 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP13 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

表 27-1: USB OTG レジスタのまとめ (1) ( 続き )レジスタ

ビット

レンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

凡例 : — = 未実装、「0」として読み出し、アドレス オフセット値は 16 進数で表記

Note 1: SET、CLR、INV レジスタが割り当てられていないレジスタもあります。詳細は各デバイスのデータシートを参照して

ください。

2: 一部のデバイスではこのビットを利用できません。詳細は各デバイスのデータシートを参照してください。

DS61126F_JP - p. 27-8 © 2013 Microchip Technology Inc.

Page 9: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

U1EP14 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

U1EP15 31:24 — — — — — — — —

23:16 — — — — — — — —

15:8 — — — — — — — —

7:0 — — — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

表 27-1: USB OTG レジスタのまとめ (1) ( 続き )レジスタ

ビット

レンジ

Bit31/23/15/7

Bit30/22/14/6

Bit29/21/13/5

Bit28/20/12/4

Bit27/19/11/3

Bit26/18/10/2

Bit25/17/9/1

Bit24/16/8/0

凡例 : — = 未実装、「0」として読み出し、アドレス オフセット値は 16 進数で表記

Note 1: SET、CLR、INV レジスタが割り当てられていないレジスタもあります。詳細は各デバイスのデータシートを参照して

ください。

2: 一部のデバイスではこのビットを利用できません。詳細は各デバイスのデータシートを参照してください。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-9

Page 10: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.2.4 レジスタの定義

以下に、各 USB OTG レジスタの詳細を記載します。

レジスタ 27-1: U1OTGIR: USB OTG 割り込みステータス レジスタU-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/K-0 R/K-0 R/K-0 R/K-0 R/K-0 R/K-0 U-0 R/K-0

IDIF T1MSECIF LSTATEIF ACTVIF SESVDIF SESENDIF — VBUSVDIF

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット K=「1」書き込みクリアビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 IDIF: ID 状態変化インジケータ ビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。1 = ID の状態変化を検出した0 = ID の状態変化は検出していない

bit 6 T1MSECIF: 1 ms タイマビット 割り込みをクリアするには、このビットに「1」を書き込む必要があります。1 = 1 ms タイマがタイムアウトした0 = 1 ms タイマはタイムアウトしていない

bit 5 LSTATEIF: ライン状態安定インジケータビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。1 = USB ラインの状態は直前の変化から 1 ms 間安定していた0 = USB ラインの状態は 1 ms 間安定していない

bit 4 ACTVIF: バス アクティビティ インジケータ ビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = D+、D-、ID、V バスピン上のバス アクティビティによってデバイスが復帰した0 = バス アクティビティは検出していない

bit 3 SESVDIF: セッション有効変化インジケータ ビット 割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = Vbus 電圧がセッション終了レベルよりも低下した0 = Vbus 電圧はセッション終了レベルよりも低下していない

bit 2 SESENDIF: B デバイス VBUS 変化インジケータ ビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = セッション終了入力で変化を検出した0 = セッション終了入力で変化は検出していない

bit 1 未実装 :「0」として読み出し

bit 0 VBUSVDIF: A デバイス VBUS 変化インジケータ ビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = セッション有効入力で変化を検出した0 = セッション有効入力で変化は検出していない

DS61126F_JP - p. 27-10 © 2013 Microchip Technology Inc.

Page 11: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-2: U1OTGIE: USB OTG 割り込みイネーブル レジスタU-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0

IDIE T1MSECIE LSTATEIE ACTVIE SESVDIE SESENDIE — VBUSVDIE

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 IDIE: ID 割り込みイネーブルビット

1 = ID 割り込みを有効にする0 = ID 割り込みを無効にする

bit 6 T1MSECIE: 1 ms タイマ割り込みイネーブルビット

1 = 1 ms タイマ割り込みを有効にする0 = 1 ms タイマ割り込みを無効にする

bit 5 LSTATEIE: ライン状態割り込みイネーブルビット

1 = ライン状態割り込みを有効にする0 = ライン状態割り込みを無効にする

bit 4 ACTVIE: バス アクティビティ割り込みイネーブルビット

1 = ACTIVITY 割り込みを有効にする0 = ACTIVITY 割り込みを無効にする

bit 3 SESVDIE: セッション有効割り込みイネーブルビット

1 = セッション有効割り込みを有効にする0 = セッション有効割り込みを無効にする

bit 2 SESENDIE: B セッション終了割り込みイネーブル ビット

1 = B セッション終了割り込みを有効にする0 = B セッション終了割り込みを無効にする

bit 1 未実装 :「0」として読み出し

bit 0 VBUSVDIE: A-VBUS 有効割り込みイネーブルビット

1 = A-VBUS 有効割り込みを有効にする0 = A-VBUS 有効割り込みを無効にする

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-11

Page 12: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

レジスタ 27-3: U1OTGSTAT: USB OTG ステータス レジスタU-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R-0 U-0 R-0 U-0 R-0 R-0 U-0 R-0

ID — LSTATE — SESVD SESEND — VBUSVD

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 ID: ID ピンステート インジケータビット

1 = USB レセプタクルにケーブルは接続されていない、またはタイプ B ケーブルが接続されている0 = USB レセプタクルに「タイプ A」OTG ケーブルが接続されている

bit 6 未実装 :「0」として読み出し

bit 5 LSTATE: ラインステート安定インジケータビット

1 = USB ラインの状態 (U1CON<SE0> と U1CON<JSTATE>) は 1 ms 間安定していた0 = USB ラインの状態 (U1CON<SE0> と U1CON<JSTATE>) は 1 ms 間安定していない

bit 4 未実装 :「0」として読み出し

bit 3 SESVD: セッション有効インジケータビット

1 = A または B デバイスの Vbus 電圧はセッション有効電圧よりも高い0 = A または B デバイスの VBUS 電圧はセッション有効電圧よりも低い

bit 2 SESEND: B セッション終了インジケータビット

1 = B デバイスの VBUS 電圧はセッション有効電圧よりも低い0 = B デバイスの VBUS 電圧はセッション有効電圧よりも高い

bit 1 未実装 :「0」として読み出し

bit 0 VBUSVD: A-VBUS 有効インジケータビット

1 = A デバイスの VBUS 電圧はセッション有効電圧よりも高い0 = A デバイスの VBUS 電圧はセッション有効電圧よりも低い

DS61126F_JP - p. 27-12 © 2013 Microchip Technology Inc.

Page 13: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-4: U1OTGCON: USB OTG 制御レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

DPPULUP DMPULUP DPPULDWN DMPULDWN VBUSON OTGEN VBUSCHG VBUSDIS

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 DPPULUP: D+ プルアップ イネーブルビット

1 = D+ データラインのプルアップ抵抗を有効にする0 = D+ データラインのプルアップ抵抗を無効にする

bit 6 DMPULUP: D- プルアップ イネーブルビット

1 = D- データラインのプルアップ抵抗を有効にする0 = D- データラインのプルアップ抵抗を無効にする

bit 5 DPPULDWN: D+ プルダウン イネーブルビット

1 = D+ データラインのプルダウン抵抗を有効にする0 = D+ データラインのプルダウン抵抗を無効にする

bit 4 DMPULDWN: D- プルダウン イネーブルビット

1 = D- データラインのプルダウン抵抗を有効にする0 = D- データラインのプルダウン抵抗を無効にする

bit 3 VBUSON: VBUS パワーオンビット

1 = VBUS ラインに給電する0 = VBUS ラインに給電しない

bit 2 OTGEN: OTG 機能イネーブルビット

1 = ソフトウェアが DPPULUP、DMPULUP、DPPULDWN、DMPULDWN ビットを制御する0 = USB ハードウェアが DPPULUP、DMPULUP、DPPULDWN、DMPULDWN ビットを制御する

bit 1 VBUSCHG: VBUS 充電イネーブルビット

1 = プルアップ抵抗を介して VBUS ラインを充電する0 = 抵抗を介して VBUS ラインを充電しない

bit 0 VBUSDIS: VBUS 放電イネーブルビット

1 = プルダウン抵抗を介して VBUS ラインを放電する0 = 抵抗を介して VBUS ラインを放電しない

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-13

Page 14: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

レジスタ 27-5: U1PWRC: USB 電源制御レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

HS, HC-x U-0 U-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0

UACTPND — — USLPGRD USBBUSY(1) — USUSPEND USBPWR

bit 7 bit 0

凡例 :

HC = ハードウェアでクリア HS = ハードウェアでセット

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 UACTPND: USB アクティビティ未完了ビット

1 = USB バス アクティビティを検出したが、割り込みは保留中 ( 未生成 )0 = 割り込みは保留中ではない

bit 6-5 未実装 :「0」として読み出し

bit 4 USLPGRD: USB スリープ移行抑止ビット

1 = USB バス アクティビティを検出した場合、または通知が保留中である場合、スリープへの移行を抑止する

0 = USB OTG モジュールはスリープへの移行を抑止しない

bit 3 USBBUSY: USB OTG モジュール ビジービット (1)

1 = USB OTG モジュールは既にアクティブ、または非アクティブだが現在有効にできる状態ではない

0 = USB OTG モジュールは非アクティブであり、有効にできる

Note : USBPWR = 0かつ USBBUSY = 1の場合、他の全てのレジスタからのステータスは無効であり、全ての USB OTG モジュール レジスタへの書き込みによって生じる結果は未確定です。

bit 2 未実装 :「0」として読み出し

bit 1 USUSPEND: USB サスペンドモード ビット

1 = USB OTG モジュールはサスペンド中 (48 MHz USB クロックは供給されず、トランシーバは低消費電力状態になる )

0 = USB OTG モジュールは通常動作する

bit 0 USBPWR: USB 動作イネーブルビット

1 = USB OTG モジュールを有効にする0 = USB OTGモジュールを無効にする (出力を非アクティブに保持、USBはデバイスピンを使用しな

い、アナログ機能をシャットダウンして消費電力を低減 )

Note 1: 一部のデバイスではこのビットを利用できません。詳細は各デバイスのデータシートを参照してください。

DS61126F_JP - p. 27-14 © 2013 Microchip Technology Inc.

Page 15: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-6: U1IR: USB 割り込みレジスタU-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/K-0 R/K-0 R/K-0 R/K-0 R/K-0 R/K-0 R/K-0 R/K-0

STALLIF ATTACHIF(1) RESUMEIF(2) IDLEIF TRNIF(3) SOFIF UERRIF(4) URSTIF(5)

DETACHIF(6)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット K = 「1」書き込みクリアビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 STALLIF: STALL ハンドシェイク割り込みビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = ホストモードの場合 : トランザクションのハンドシェイク フェイズ中にSTALLハンドシェイクを

受信したデバイスモードの場合 : トランザクションのハンドシェイク フェイズ中に STALL ハンドシェイクを送信した

0 = STALL ハンドシェイクは送信されていない

bit 6 ATTACHIF: ペリフェラル接続割り込みビット (1)

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = USB OTG モジュールがペリフェラルの接続を検出した0 = ペリフェラルの接続は検出されていない

bit 5 RESUMEIF: レジューム割り込みビット (2)

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = D+ または D- ピンで 2.5 µs 間の K ステートを検出した0 = K ステートは検出していない

bit 4 IDLEIF: アイドル検出割り込みビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = アイドル状態を検出した ( アイドル状態が 3 ms 以上持続した )0 = アイドル状態は検出していない

Note 1: このビットは HOSTEN ビット ( レジスタ 27-11 参照 ) がセットされ、かつ USB で 2.5 µs 間アクティビティが発生せず、かつ現在のバスステートが SE0 ではない場合にのみ有効です。

2: この割り込みは、サスペンドモード中以外は無効になります。

3: このビットをクリアすると STAT FIFO が次に進みます。

4: U1EIE レジスタで有効にされているエラー条件だけがこのビットをセットします。

5: デバイスモード

6: ホストモード

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-15

Page 16: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

bit 3 TRNIF: トークン処理完了割り込みビット (3)

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = 実行中のトークン処理が完了した (U1STAT レジスタからエンドポイント情報を読み出せる )0 = 実行中のトークン処理は完了していない

bit 2 SOFIF: SOF トークン割り込みビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = ペリフェラルが SOF トークンを受信した、またはホストが SOF しきい値に達した0 = 上記のどちらも発生していない

bit 1 UERRIF: USB エラー条件割り込みビット (4)

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = マスクされていないエラー条件が発生した0 = マスクされていないエラー条件は発生していない

bit 0 URSTIF: USB リセット割り込みビット ( デバイスモード )(5)

1 = 有効な USB リセットが発生した0 = USB リセットは発生していないDETACHIF: USB 切断割り込みビット ( ホストモード )(6)

1 = USB OTG モジュールがペリフェラルの切断を検出した0 = ペリフェラルの切断は検出していない

レジスタ 27-6: U1IR: USB 割り込みレジスタ ( 続き )

Note 1: このビットは HOSTEN ビット ( レジスタ 27-11 参照 ) がセットされ、かつ USB で 2.5 µs 間アクティビティが発生せず、かつ現在のバスステートが SE0 ではない場合にのみ有効です。

2: この割り込みは、サスペンドモード中以外は無効になります。

3: このビットをクリアすると STAT FIFO が次に進みます。

4: U1EIE レジスタで有効にされているエラー条件だけがこのビットをセットします。

5: デバイスモード

6: ホストモード

DS61126F_JP - p. 27-16 © 2013 Microchip Technology Inc.

Page 17: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-7: U1IE: USB 割り込みイネーブル レジスタ (1)

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

STALLIE ATTACHIE RESUMEIE IDLEIE TRNIE SOFIE UERRIEURSTIE(2)

DETACHIE(3)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値(「0」、「1」または x = ビットは未知)

bit 31-8 未実装 :「0」として読み出し

bit 7 STALLIE: STALL ハンドシェイク割り込みイネーブルビット

1 = STALL 割り込みを有効にする0 = STALL 割り込みを無効にする

bit 6 ATTACHIE: ATTACH 割り込みイネーブルビット

1 = ATTACH 割り込みを有効にする0 = ATTACH 割り込みを無効にする

bit 5 RESUMEIE: RESUME 割り込みイネーブルビット

1 = RESUME 割り込みを有効にする0 = RESUME 割り込みを無効にする

bit 4 IDLEIE: アイドル検出割り込みイネーブルビット

1 = アイドル割り込みを有効にする0 = アイドル割り込みを無効にする

bit 3 TRNIE: トークン処理完了割り込みイネーブルビット

1 = TRNIF 割り込みを有効にする0 = TRNIF 割り込みを無効にする

bit 2 SOFIE: SOF トークン割り込みイネーブルビット

1 = SOFIF 割り込みを有効にする0 = SOFIF 割り込みを無効にする

bit 1 UERRIE: USB エラー割り込みイネーブルビット

1 = USB エラー割り込みを有効にする0 = USB エラー割り込みを無効にする

Note 1: 割り込みを USBIF ビット (IFS1<25>) に反映するには、UERRIE ビット (U1IE<1>) をセットする必要があります。

2: デバイスモード

3: ホストモード

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-17

Page 18: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

bit 0 URSTIE: USB リセット割り込みイネーブルビット (2)

1 = URSTIF 割り込みを有効にする0 = URSTIF 割り込みを無効にする

DETACHIE: USB 切断割り込みイネーブルビット (3)

1 = DATTCHIF 割り込みを有効にする0 = DATTCHIF 割り込みを無効にする

レジスタ 27-7: U1IE: USB 割り込みイネーブル レジスタ (1) ( 続き )

Note 1: 割り込みを USBIF ビット (IFS1<25>) に反映するには、UERRIE ビット (U1IE<1>) をセットする必要があります。

2: デバイスモード

3: ホストモード

DS61126F_JP - p. 27-18 © 2013 Microchip Technology Inc.

Page 19: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-8: U1EIR: USB エラー割り込みステータス レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/K-0 R/K-0 R/K-0 R/K-0 R/K-0 R/K-0 R/K-0 R/K-0

BTSEF BMXEF DMAEF(1) BTOEF(2) DFN8EF CRC16EFCRC5EF(3,4)

PIDEFEOFEF(5)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット K = 「1」書き込みクリアビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 BTSEF: ビットスタッフ エラー フラグビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = ビットスタッフ エラーが発生したためパケットは拒否された0 = パケットは受理された

bit 6 BMXEF: バスマトリクス エラー フラグビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = BDT のベースアドレスまたは BDT エントリが指すバッファのアドレスが無効 0 = アドレスエラーは発生していない

bit 5 DMAEF: DMA エラーフラグ ビット (1)

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = USB DMA エラー条件を検出した0 = DMA エラーは発生していない

Note 1: このエラーは、DMA バスに対するモジュールの要求が時間内に承認されなかった ( モジュールのメモリに対する要求がサービスされなかった )結果としてオーバーフローまたはアンダーフロー条件が発生した場合、および / または、割り当てられたバッファサイズが足りないために受信データパケットが切り詰められた場合に発生します。

2: このエラーは、直前の EOP からアイドル状態が 16 ビット時間を超えて持続すると発生します。

3: このエラーは、モジュールがデータを送信または受信中である時に SOF カウンタがゼロに達すると発生します。

4: デバイスモード

5: ホストモード

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-19

Page 20: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

bit 4 BTOEF: バス ターンアラウンド タイムアウト エラー フラグビット (2)

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = バス ターンアラウンド タイムアウトが発生した0 = バス ターンアラウンド タイムアウトは発生していない

bit 3 DFN8EF: データフィールド サイズエラー フラグビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = 受信したデータフィールドのバイト数が整数ではない0 = 受信したデータフィールドのバイト数は整数

bit 2 CRC16EF: CRC16 エラー フラグビット

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = CRC16 エラーが発生したためトークンパケットは拒否された0 = パケットは受理された

bit 1 CRC5EF: CRC5 ホストエラー フラグビット (3,4)

割り込みをクリアするには、このビットに「1」を書き込む必要があります。 1 = CRC5 エラーが発生したためトークンパケットは拒否された0 = トークンパケットは受理された

EOFEF: EOF エラーフラグ ビット (5)

1 = EOF エラー条件を検出した0 = EOF エラー条件は検出していない

bit 0 PIDEF: PID チェックエラー フラグビット

1 = PID チェックに合格しなかった0 = PID チェックに合格した

レジスタ 27-8: U1EIR: USB エラー割り込みステータス レジスタ ( 続き )

Note 1: このエラーは、DMA バスに対するモジュールの要求が時間内に承認されなかった ( モジュールのメモリに対する要求がサービスされなかった )結果としてオーバーフローまたはアンダーフロー条件が発生した場合、および / または、割り当てられたバッファサイズが足りないために受信データパケットが切り詰められた場合に発生します。

2: このエラーは、直前の EOP からアイドル状態が 16 ビット時間を超えて持続すると発生します。

3: このエラーは、モジュールがデータを送信または受信中である時に SOF カウンタがゼロに達すると発生します。

4: デバイスモード

5: ホストモード

DS61126F_JP - p. 27-20 © 2013 Microchip Technology Inc.

Page 21: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-9: U1EIE: USB エラー割り込みイネーブル レジスタ (1)

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BTSEE BMXEE DMAEE BTOEE DFN8EE CRC16EECRC5EE(2)

PIDEEEOFEE(3)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 BTSEE: ビットスタッフ エラー割り込みイネーブルビット

1 = BTSEF 割り込みを有効にする0 = BTSEF 割り込みを無効にする

bit 6 BMXEE: バスマトリクス エラー割り込みイネーブルビット

1 = BMXEF 割り込みを有効にする0 = BMXEF 割り込みを無効にする

bit 5 DMAEE: DMA エラー割り込みイネーブルビット

1 = DMAEF 割り込みを有効にする0 = DMAEF 割り込みを無効にする

bit 4 BTOEE: バス ターンアラウンド タイムアウト エラー割り込みイネーブルビット

1 = BTOEF 割り込みを有効にする0 = BTOEF 割り込みを無効にする

bit 3 DFN8EE: データフィールド サイズエラー割り込みイネーブルビット

1 = DFN8EF 割り込みを有効にする0 = DFN8EF 割り込みを無効にする

bit 2 CRC16EE: CRC16 エラー割り込みイネーブルビット

1 = CRC16EF 割り込みを有効にする0 = CRC16EF 割り込みを無効にする

Note 1: 割り込みを USBIF ビット (IFS1<25>) に反映するには、UERRIE ビット (U1IE<1>) をセットする必要があります。

2: デバイスモード

3: ホストモード

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-21

Page 22: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

bit 1 CRC5EE: CRC5 ホストエラー割り込みイネーブルビット (2)

1 = CRC5EF 割り込みを有効にする0 = CRC5EF 割り込みを無効にする

EOFEE: EOF エラー割り込みイネーブルビット (3)

1 = EOF 割り込みを有効にする0 = EOF 割り込みを無効にする

bit 0 PIDEE: PID チェックエラー割り込みイネーブルビット

1 = PIDEF 割り込みを有効にする0 = PIDEF 割り込みを無効にする

レジスタ 27-9: U1EIE: USB エラー割り込みイネーブル レジスタ (1) ( 続き )

Note 1: 割り込みを USBIF ビット (IFS1<25>) に反映するには、UERRIE ビット (U1IE<1>) をセットする必要があります。

2: デバイスモード

3: ホストモード

DS61126F_JP - p. 27-22 © 2013 Microchip Technology Inc.

Page 23: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-10:U1STAT: USB ステータスレジスタ (1)

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R-x R-x R-x R-x R-x R-x U-0 U-0

ENDPT<3:0> DIR PPBI — —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7-4 ENDPT<3:0>: 直前アクティビティ エンドポイント番号ビット( 直前の USB 転送で更新された BDT の番号を示す )1111 = エンドポイント 151110 = エンドポイント 14•••0001 = エンドポイント 10000 = エンドポイント 0

bit 3 DIR: 直前 BD 方向インジケータビット

1 = 直前のトランザクションで送信 (TX) した0 = 直前のトランザクションで受信 (RX) した

bit 2 PPBI: ピンポン BD ポインタ インジケータビット

1 = 直前のトランザクションは ODD BD バンクに対して実行された0 = 直前のトランザクションは EVEN BD バンクに対して実行された

bit 1-0 未実装 :「0」として読み出し

Note 1: U1STAT レジスタは、USB OTG モジュールが維持する 4 バイト FIFO へのウィンドウとして機能します。U1STAT の値は、TRNIF ビット (UxIR<3>) がセットされている場合にのみ有効です。TRNIF ビット(U1IR<3>) をクリアすると、FIFO は次の位置に進みます。TRNIF ビット (U1IR<3>) = 0の場合、このレジスタ内のデータは無効です。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-23

Page 24: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

レジスタ 27-11: U1CON: USB 制御レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R-x R-x R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

JSTATE SE0PKTDIS(4)

USBRST HOSTEN(2) RESUME(3) PPBRSTUSBEN(4)

TOKBUSY(1,5) SOFEN(5)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR 時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 JSTATE: ライブ差動レシーバ JSTATE フラグビット

1 = USB で JSTATE を検出した0 = JSTATE は検出していない

bit 6 SE0: ライブ シングルエンド ゼロ フラグビット

1 = USB でシングルエンド ゼロを検出した0 = シングルエンド ゼロは検出していない

bit 5 PKTDIS: パケット転送ディセーブル ビット (4)

1 = トークンとパケットの処理を無効にする (このビットはSETUPトークンを受信するとセットされる )0 = トークンとパケットの処理を有効にする

TOKBUSY: トークン ビジー インジケータビット (1,5)

1 = USB OTG モジュールはトークンを実行中0 = トークンを実行していない

bit 4 USBRST: モジュール リセットビット (5)

1 = USB リセットを生成する0 = USB リセットを終了する

Note 1: ソフトウェアは、U1TOK レジスタ ( レジスタ 27-15 参照 ) に対して次のトークン命令を実行する前に、このビットをチェックする必要があります。

2: 全てのホスト制御ロジックは、このビットの状態が変化するたびにリセットされます。

3: デバイスモードの場合、ソフトウェアは RESUME を 10 ms 間セットする必要があります。ホストモードの場合、ソフトウェアは RESUME を 25 ms 間セットした後にクリアして、リモート復帰を有効にする必要があります。ホストモードの場合、このビットをクリアすると、USB OTG モジュールは RESUME 信号にロースピード EOP をアペンドします。

4: デバイスモード

5: ホストモード

DS61126F_JP - p. 27-24 © 2013 Microchip Technology Inc.

Page 25: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

bit 3 HOSTEN: ホストモード イネーブルビット (2)

1 = USB ホスト機能を有効にする0 = USB ホスト機能を無効にする

bit 2 RESUME: RESUME 信号イネーブルビット (3)

1 = RESUME 信号を有効にする0 = RESUME 信号を無効にする

bit 1 PPBRST: ピンポンバッファ リセットビット

1 = EVEN BD バンクを指す全ての偶数 / 奇数バッファポインタをリセットする0 = 偶数 / 奇数バッファポイントをリセットしない

bit 0 USBEN: USB OTG モジュール イネーブルビット (4)

1 = USB OTG モジュールと関連回路を有効にする0 = USB OTG モジュールと関連回路を無効にする

SOFEN: SOF イネーブルビット (5)

1 = SOF トークンを 1 ms 周期で送信する0 = SOF トークンを無効にする

レジスタ 27-11: U1CON: USB 制御レジスタ ( 続き )

Note 1: ソフトウェアは、U1TOK レジスタ ( レジスタ 27-15 参照 ) に対して次のトークン命令を実行する前に、このビットをチェックする必要があります。

2: 全てのホスト制御ロジックは、このビットの状態が変化するたびにリセットされます。

3: デバイスモードの場合、ソフトウェアは RESUME を 10 ms 間セットする必要があります。ホストモードの場合、ソフトウェアは RESUME を 25 ms 間セットした後にクリアして、リモート復帰を有効にする必要があります。ホストモードの場合、このビットをクリアすると、USB OTG モジュールは RESUME 信号にロースピード EOP をアペンドします。

4: デバイスモード

5: ホストモード

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-25

Page 26: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

レジスタ 27-12:U1ADDR: USB アドレスレジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

LSPDEN DEVADDR<6:0>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 LSPDEN: ロースピード イネーブル インジケータビット

1 = 次のトークン命令はロースピードで実行する0 = 次のトークン命令はフルスピードで実行する

bit 6-0 DEVADDR<6:0>: 7 ビット USB デバイスアドレス ビット

DS61126F_JP - p. 27-26 © 2013 Microchip Technology Inc.

Page 27: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-13:U1FRML: USB フレーム番号 LOW レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0

FRML<7:0>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7-0 FRML<7:0>: 11 ビット フレーム番号下位ビット

これらのレジスタ ビットは、SOF トークンを受信するたびに、新しいフレーム番号に更新されます。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-27

Page 28: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

レジスタ 27-14:U1FRMH: USB フレーム番号 HIGH レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

U-0 U-0 U-0 U-0 U-0 R-0 R-0 R-0

— — — — — FRMH<2:0>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-3 未実装 :「0」として読み出し

bit 2-0 FRMH<2:0>: フレーム番号ビットの上位 3 ビット

これらのレジスタ ビットは、SOF トークンを受信するたびに、新しいフレーム番号に更新されます。

DS61126F_JP - p. 27-28 © 2013 Microchip Technology Inc.

Page 29: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-15:U1TOK: USB トークンレジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

PID<3:0>(1) EP<3:0>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7-4 PID<3:0>: トークンタイプ インジケータ ビット (1)

0001 = OUT (TX) トークンタイプのトランザクション1001 = IN (RX) トークンタイプのトランザクション1101 = SETUP (TX) トークンタイプのトランザクション

Note: これ以外の値は全て予約済みです ( 使用できません )。

bit 3-0 EP<3:0>: トークン コマンド エンドポイント アドレスビット

この 4 ビット値は有効なエンドポイントを指す必要があります。

Note 1: これ以外の値は全て予約済みです ( 使用できません )。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-29

Page 30: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

レジスタ 27-16:U1SOF: USB SOF しきい値レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

CNT<7:0>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7-0 CNT<7:0>: SOF しきい値ビット

標準的なしきい値 : 0100 1010 = 64 バイト パケット0010 1010 = 32 バイト パケット0001 1010 = 16 バイト パケット0001 0010 = 8 バイト パケット

DS61126F_JP - p. 27-30 © 2013 Microchip Technology Inc.

Page 31: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-17:U1BDTP1: USB BDT レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0

BDTPTRL<15:9> —

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7-1 BDTPTRL<15:9>: BDT ベースアドレス LOW ビット

この 7 ビット値は、BDT ベースアドレス ( システムメモリ内の BDT 先頭アドレス ) の bit 15-9 を提供します。

32 ビット BDT ベースアドレスは 512 バイト境界に配置されます。

bit 0 未実装 :「0」として読み出し

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-31

Page 32: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

レジスタ 27-18:U1BDTP2: USB BDT PAGE 2 レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BDTPTRH<23:16>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7-0 BDTPTRH<23:16>: BDT ベースアドレス HIGH ビット

この 8 ビット値は、BDT ベースアドレス ( システムメモリ内の BDT 先頭アドレス ) の bit 23-16 を提供します。

32 ビット BDT ベースアドレスは 512 バイト境界に配置されます。

DS61126F_JP - p. 27-32 © 2013 Microchip Technology Inc.

Page 33: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-19:U1BDTP3: USB BDT PAGE 3 レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

BDTPTRU<31:24>

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7-0 BDTPTRU<31:24>: BDT ベースアドレス上位ビット

この 8 ビット値は、BDT ベースアドレス ( システムメモリ内の BDT 先頭アドレス ) の bit 31-24 を提供します。

32 ビット BDT ベースアドレスは 512 バイト境界に配置されます。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-33

Page 34: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

レジスタ 27-20:U1CNFG1: USB コンフィグレーション 1 レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 R/W-0

UTEYE UOEMON USBFRZ USBSIDL — — — UASUSPND(1)

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P = プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 UTEYE: USB アイパターン テスト イネーブルビット

1 = アイパターン テストを有効にする0 = アイパターン テストを無効にする

bit 6 UOEMON: USB OE モニタ イネーブルビット

1 = OE 信号をアサートする ( この信号は D+/D- ラインが駆動している期間を示す )0 = OE 信号をアサートしない

bit 5 USBFRZ: デバッグ中フリーズビット

1 = エミュレータがデバッグモード中の場合、モジュールは動作をフリーズする0 = エミュレータがデバッグモード中でもモジュールは動作を継続する

bit 4 USBSIDL: アイドル中停止ビット

1 = デバイスがアイドルに移行するとモジュールは動作を停止する0 = アイドル中もモジュールは動作を継続する

bit 3-1 未実装 :「0」として読み出し

bit 0 UASUSPND: 自動サスペンド イネーブルビット (1)

1 = USB OTGモジュールはスリープへの移行時に自動的にサスペンドする(レジスタ27-5のUSUSPENDビット (U1PWRC<1>) を参照 )

0 = USB OTG モジュールはスリープへの移行時に自動的にサスペンドしない ( ソフトウェアで USUSPENDビット (U1PWRC<1>) をセットしてモジュール (USB 用 48 MHz クロックを含む ) をサスペンドする必要がある )

Note 1: 一部のデバイスではこのビットを利用できません。詳細は各デバイスのデータシートを参照してください。

DS61126F_JP - p. 27-34 © 2013 Microchip Technology Inc.

Page 35: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

レジスタ 27-21:U1EP0-U1EP15: USB エンドポイント 制御レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 31 bit 24

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 23 bit 16

U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0

— — — — — — — —

bit 15 bit 8

R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0

LSPD RETRYDIS — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK

bit 7 bit 0

凡例 :

R = 読み出し可能ビット W = 書き込み可能ビット P =プログラミング可能ビット r = 予約済みビット

U = 未実装ビット n = POR時のビット値 (「0」、「1」または x = ビットは未知 )

bit 31-8 未実装 :「0」として読み出し

bit 7 LSPD: ロースピード直接接続イネーブルビット ( ホストモードかつ U1EP0 専用 )

1 = ロースピード デバイスへの直接接続を有効にする0 = ロースピード デバイスへの直接接続を無効にする ( ハブと PRE_PID が必要 )

bit 6 RETRYDIS: リトライ ディセーブル ビット ( ホストモードかつ U1EP0 専用 )

1 = NAK が返されたトランザクションのリトライを無効にする0 = NAK が返されたトランザクションのリトライを有効にする ( リトライはハードウェアで実行 )

bit 5 未実装 :「0」として読み出し

bit 4 EPCONDIS: 双方向エンドポイント制御ビット

EPTXEN = 1かつ EPRXEN = 1の場合 :

1 = エンドポイント n でコントロール転送を無効にする (TX および RX 転送のみを許可 )0 = エンドポイント n でコントロール (SETUP) 転送を有効にする (TX および RX 転送も許可 )

上記以外の条件では、このビットは無視されます。

bit 3 EPRXEN: エンドポイント受信イネーブルビット

1 = エンドポイント n の受信を有効にする0 = エンドポイント n の受信を無効にする

bit 2 EPTXEN: エンドポイント送信イネーブルビット

1 = エンドポイント n の送信を有効にする0 = エンドポイント n の送信を無効にする

bit 1 EPSTALL: エンドポイント ストール ステータスビット

1 = エンドポイント n はストールした0 = エンドポイント n はストールしていない

bit 0 EPHSHK: エンドポイント ハンドシェイク イネーブルビット

1 = エンドポイントのハンドシェイクを有効にする0 = エンドポイントのハンドシェイクを無効にする ( 主にアイソクロナス エンドポイント用に使用 )

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-35

Page 36: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.3 動作以下では、USB 動作の概要を簡単に説明した後に、USB OTG モジュールの仕様と初期化要件について説明します。

27.3.1 USB 2.0 動作の概要

USB は階層スター型構成の非同期シリアル インターフェイスです。USB はマスタ / スレーブ構成として実装されます。1 つのバスに最大 127 のスレーブ ( デバイス ) を接続できますが、マスタ ( ホスト ) は 1 つのみです。

27.3.2 動作モード

ここでは、下記の USB 実装モードについて説明します。

• ホストモード

- USB 標準ホストモード : 主にパーソナル コンピュータ向けに使われる USB 実装方式

- 組み込みホストモード : 主にマイクロコントローラ向けに使われる USB 実装方式

• デバイスモード – 主にサムドライブ、キーボード、マウス等のペリフェラル向けに使われるUSB 実装方式

• OTG デュアルロール モード – アプリケーションでロール ( ホストまたはデバイス ) を動的に切り換える事ができる USB 実装方式

27.3.2.1 ホストモード

ホストは USB システムにおけるマスタであり、USB バスに接続された全デバイスの識別 ( エニュメレーション )、転送の開始、バス帯域幅の割り当て、ホストに直接接続されているバスパワー駆動式 USB デバイスへの給電を行います。

27.3.2.1.1 USB 標準ホスト

USB 標準ホストモードに関連する機能と要件は以下の通りです。

• 各種のデバイスを幅広くサポート

• 全ての USB 転送タイプをサポート

• USB ハブをサポート ( 複数デバイスを同時に接続可能 )

• デバイスドライバを更新可能 ( 新しいデバイスへの対応が可能 )

• 各ポートにはタイプ A のレセプタクルを使用

• 各ポートは設定済みまたは未設定デバイスに対して 100 mA 以上を供給 (オプションとして、設定済みデバイスに 500 mA まで供給 )

• フルスピードおよびロースピード プロトコルをサポート (オプションとしてハイスピードをサポート )

27.3.2.1.2 組み込みホスト

組み込みホストモードに関連する機能と要件は以下の通りです。

• TPL (Targeted Peripheral List) に記載されたデバイスのみをサポート

• TPL に記載されたデバイスが要求する転送タイプのみをサポート

• USB ハブは任意にサポート

• デバイスドライバの更新は要求されない

• 各ポートにタイプ A のレセプタクルを使用

• TPL に記載されたデバイスが要求する速度のみをサポート

• 各ポートは設定済みまたは未設定デバイスに対して 100 mA 以上を供給 (オプションとして、設定済みデバイスに 500 mA まで供給 )

Note: USB 開発者向けウェブサイトが提供する文書を読むと、USB に関する理解を深める事ができます。特に、『Universal Serial Bus Specification, Revision 2.0』(http://www.usb.org/developers/docs) を推奨します。

Note: USB OTG モジュールはハイスピードモードをサポートしません。

DS61126F_JP - p. 27-36 © 2013 Microchip Technology Inc.

Page 37: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

27.3.2.2 デバイスモード

USB デバイスはホストから命令とデータを受け取り、ホストからのデータ要求に応答します。USB デバイスはペリフェラル機能 ( マウス等の I/O 機器やデータストレージ等の機能 ) を実行します。

USB デバイスの一般的な特性は以下の通りです。

• クラスまたはベンダー固有の機能を実行

• 設定前にバスから消費する電流は 100 mA 以下

• ホストとのネゴシエーション完了後はバスから 500 mA まで消費可能

• ロースピード、フルスピード、ハイスピードをサポート可能 ( ハイスピードをサポートするには、エニュメレーションのためにフルスピード プロトコルの実装が必要 )

• 実装に必要な制御とデータ伝送のみをサポート

• セッション リクエスト プロトコル (SRP) は任意にサポート

• バスパワーまたはセルフパワーで動作可能

27.3.2.3 OTG デュアルロール モード

OTG デュアルロール デバイスは、USB ホストと USB デバイスの両方の機能をサポートします。OTG デュアルロール デバイスにはマイクロ AB レセプタクルを使います。このレセプタクルには、マイクロ A とマイクロ B のどちらのプラグでも接続できます。マイクロ A およびマイクロ B プラグには ID ピンが追加されており、接続されたプラグのタイプを識別できます。レセプタクルに接続されたプラグのタイプによって既定値のロール ( ホストまたはデバイス ) が決まります。OTG デバイスは、マイクロ A プラグを検出すると USB ホストのロールを実行し、マイクロ B プラグを検出すると USB デバイスのロールを実行します。

OTG デバイス同士を OTG ケーブル ( マイクロ A- マイクロ B) で直結すると、ケーブルを抜き差ししなくても、ホスト ネゴシエーション プロトコル (HNP)を使ってホストとデバイスのロールを交代できます。2 つの OTG デバイスを区別するために、マイクロ A プラグを接続した側のデバイスを「A デバイス」、マイクロ B プラグを接続した側のデバイスを「B デバイス」と呼びます。

27.3.2.3.1 A デバイス : 既定値のホスト

A デバイスは OTG デュアルロール モードでホストとして動作します。A デバイスの機能と要件は以下の通りです。

• TPL に記載されたデバイスをサポート ( クラス サポートは許容されない )

• TPL に記載されたデバイスが要求する転送タイプのみをサポート

• USB ハブは任意にサポート

• デバイスドライバの更新は要求されない

• 1 つのマイクロ AB レセプタクルを使用

• フルスピード プロトコルをサポート ( ハイスピード、ロースピード プロトコルは任意にサポート )

• USBポートは設定済みまたは未設定デバイスに対して 8 mA以上を供給 (オプションとして、設定済みデバイスには 500 mA まで供給 )

• HNP をサポート ( ロールをホストからデバイスに切り換え可能 )

• 少なくとも 1 形態の SRP をサポート

• HNP を使ってロールを交代した後も A デバイスが VBUS に給電する

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-37

Page 38: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.3.2.3.2 B デバイス : 既定値のデバイス

B デバイスは OTG デュアルモードで USB デバイスとして動作します。B デバイスの機能と要件は以下の通りです。

• クラスまたはベンダー固有の機能を実行

• 設定前の消費電流は 8 mA 以下

• 消費電流が小さいため通常はセルフパワーで動作 ( ただしホストとのネゴシエーション完了後は 500 mA まで消費可能 )

• 1 つのマイクロ AB レセプタクルを使用

• フルスピード プロトコルをサポート ( ロースピード、ハイスピード プロトコルは任意にサポート )

• コントロール転送と実装要件に応じたデータ転送をサポート

• 2 形態の SRP (VBUS パルシングとデータライン パルシング ) をサポート

• HNP をサポート

• HNP を使ってロールを交代しても B デバイスは VBUS に給電しない

27.3.3 プロトコル

USB 通信は一定のプロトコルに従う必要があります。以下では USB 通信の概要を説明します。

27.3.3.1 バス転送

USB バス上の通信は、ホストとデバイス間の転送として発生します。転送のタイプによって機能が異なります。組み込みホストまたは OTG ホストは、コントロール転送と実際に使用するタイプのデータ転送のみを実装します。

バスでは下記の 4 種類の転送を実行できます。

• コントロール転送

コントロール転送は、エニュメレーション中にデバイスを識別し、動作中にそのデバイスを制御するために使います。USB 帯域幅の一定割合がコントロール転送用に確保されます。データは巡回冗長検査 (CRC) によってチェックされ、ターゲットが正しく受信した事が確認されます。

• インタラプト転送

インタラプト転送はスケジュール化されたデータ転送です。この場合、ホストはデバイスのコンフィグレーションに応じたタイムスロットを転送用に割り当てます。このタイムスロットの割り当てにより、デバイスは周期的にポーリングされます。データは CRC によってチェックされ、ターゲットが正しく受信すると肯定応答が返されます。

• アイソクロナス転送

アイソクロナス転送はスケジュール化されたデータ転送です。この場合、ホストはデバイスのコンフィグレーションに応じたタイムスロットをトランザクション用に割り当てます。デバイスはデータの受信を知らせる肯定応答を返しませんが、CRC を使ってデータの整合性をチェックします。この転送タイプは主にオーディオおよびビデオ用に使われます。

• バルク転送

バルク転送は大量のデータを転送する場合に使います。この場合、トランザクションの時間は確保されません。バルク転送には、上記の 3 つの転送タイプに割り当てられなかった残りの時間が割り当てられます。データは CRC によってチェックされ、受信時に肯定応答が返されます。

「Universal Serial Bus Specification, Revision 2.0」は下記の転送速度を定義しています。

• 480 Mbps – ハイスピード

• 12 Mbps – フルスピード

• 1.5 Mbps – ロースピード

Note: デュアルロール デバイスで複数の USB レセプタクルを使って OTG 機能の一部だけをサポートする事は可能ですが、それらのデバイスを USB 規格に準拠させるには、特殊な要件が課せられる可能性があります。詳細は USB IF (implementersforum) を参照してください。

DS61126F_JP - p. 27-38 © 2013 Microchip Technology Inc.

Page 39: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

USB OTG デバイスは、ホストモードとデバイスモードでフルスピード動作をサポートし、ホストモードでのみロースピード動作をサポートします。

各タイプの転送 ( またはトランザクション ) の適時性とデータ整合性の保証、データサイズ、速度を表 27-2 に示します。

27.3.3.2 帯域幅の割り当て

コントロール転送 ( またはトランザクション ) には、フレーム内の帯域幅の少なくとも 10% が確保されます。残りの帯域幅は、インタラプト転送とアイソクロナス転送に割り当てる事ができます。バルク転送には、コントロール / 割り込み / アイソクロナス転送に割り当てられていない残りの帯域幅が割り当てられます。バルク転送の帯域幅は保証されません。しかし、フレームの全てが他の転送用に割り当てられる事はめったになく、実際にはバルク転送が最大の帯域幅を持ちます。

27.3.3.3 エンドポイントと USB ディスクリプタ

バスで転送される全てのデータはエンドポイントを経由して送受信されます。USB は、1 つのデバイスにつき最大 16 のエンドポイントをサポートします。各エンドポイントには送信 (TX)または受信 (RX) 機能を持たせる事ができます。各エンドポイントでは 1 つのトランザクション タイプだけが使えます。エンドポイント0は既定値のコントロール転送エンドポイントです。

27.3.4 物理バス インターフェイス

27.3.4.1 バス速度の選択

USB 仕様は、フルスピード動作の速度を 12 Mbps、ロースピード動作の速度を 1.5 Mbps と定義しています。デバイスの速度 ( フルスピード、ロースピード ) は、データラインのプルアップ抵抗を使って区別します。フルスピード動作では D+ ラインがプルアップされ、ロースピード動作では D- ラインがプルアップされます。

27.3.4.2 VBUS 制御

バスパワー駆動のデバイス向けに、ホストまたはハブから VBUS に 5 V の USB 電源を供給します。VBUS を制御する必要があるかどうかは、アプリケーションのロールによって決まります。VBUS への給電の有効 / 無効はファームウェアで制御する必要があります。

VBUS 動作の概要は以下の通りです。

• 通常、標準ホストは常時バスに給電する

• 省電力化のためにホストは VBUS を OFF にできる

• USB デバイスはバスに給電しない (SRP の一形態として VBUS パルシングをサポートする事は可能 )

• OTG A デバイスはバスに給電し、省電力化のために VBUS を OFF にできる

• OTG B デバイスは SRP 向けに VBUS をパルシングできる

表 27-2: トランザクションのタイプ ( フルスピード動作 )

トランザクション タイプ 適時性の保証 データ整合性の保証 最大パケットサイズ 最大スループット (1)

コントロール転送 Yes Yes 64 0.83 MB/s

インタラプト転送 Yes Yes 64 1.22 MB/s

アイソクロナス転送 Yes No 1023 1.28 MB/s

バルク転送 No Yes 64 1.22 MB/s

Note 1: この値はプロトコル オーバーヘッドを含む (またはエンプティ バス上の )理論的最大データ スループットです。NRZI (Non-Return to Zero Inverted) エンコーディングが要求するビット スタッフィング オーバーヘッドは計算に含めていません。

Note: PIC32 デバイスは VBUS 電源を供給しません。VBUS の電気的パラメータについては各デバイスのデータシートを参照してください。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-39

Page 40: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.3.5 PIC32 USB OTG の実装

以下では、PIC32 USB OTG モジュールにおける USB 仕様要件の実装について詳しく説明します。

27.3.5.1 バス速度

PIC32 の USB OTG モジュールは下記の速度をサポートします。

• フルスピード動作 ( ホストおよびデバイス )

• ロースピード動作 ( ホストのみ )

27.3.5.2 エンドポイントとディスクリプタ

USBエンドポイントは全てRAM内のバッファとして実装されます。CPUとUSB OTGモジュールはこのバッファにアクセスできます。USB OTG モジュールと CPU 間でこれらのバッファへのアクセスを調停するために、セマフォフラグ システムを使います。各エンドポイントは TXまたはRX (またはその両方 )向けに構成可能であり、TX用とRX用に別々のODDおよびEVENバッファを備えます。従って、エンドポイントあたり最大 4 つのバッファが存在します。

バッファ ディスクリプタ テーブル (BDT) を使う事で、バッファを RAM 内の任意位置に配置し、ステータスフラグと制御ビットを提供する事が可能となります。BDT は各エンドポイント データバッファのアドレスと、各バッファに関する情報を格納します ( 図 27-2、図 27-3、図 27-4 参照 )。各 BDT エントリはバッファ ディスクリプタ (BD) と呼ばれ、長さは 8 バイトです。各エンドポイントに対して 4 つのディスクリプタ エントリを使います。全てのエンドポイント ( エンドポイント 0 から使用中の最大番号のエンドポイントまで ) は、それぞれ 4 つのディスクリプタ エントリを持つ必要があります。一部のバッファだけを使う場合でも、各エンドポイントには 4 つのディスクリプタ エントリが必要です。

USB OTG モジュールは、BDT ポインタレジスタを使ってメモリ内のバッファ位置を計算します。BDT のベースアドレスは U1BDTP1 ~ U1BDTP3 レジスタで保持されます。目的のバッファのアドレスは、BDT 内のエンドポイント番号、転送方向 (RX/TX)、ODD/EVEN ビットから求まります。このエントリに格納されているアドレスが、目的のデータバッファのアドレスです。27.3.5.3「バッファ管理」を参照してください。

16 個のエンドポイントは、それぞれ 2 つのディスクリプタ ペアを持ちます ( 送信パケット用に 1 ペアと受信パケット用に 1 ペア )。各ペアは 2 つのバッファ (EVEN と ODD) を使うため、合計で最大 64 個のディスクリプタが必要です (16×2×2)。

転送方向ごとに EVEN バッファと ODD バッファを備えるため、USB OTG モジュールが一方のバッファを使ってデータを送信または受信している間に、CPU は他方のバッファにアクセスできます。USB OTG モジュールは 2 つのバッファを交互に使用し、一方のバッファのトランザクションが完了すると、バッファディスクリプタ内の UOWN ビットを自動的にクリアします。2 つのバッファを交互に使う事で、CPU からのデータアクセスとデータ転送を同時に実行できるため、データ スループットが最大限に向上します。この手法をピンポン バッファリングと呼びます。図 27-5 に、BDT 内のエンドポイントの配置を示します。

27.3.5.2.1 エンドポイント制御

各エンドポイントの制御にはエンドポイント制御レジスタ (U1EPn) を使います。このレジスタはエンドポイントの転送方向、ハンドシェイク、ストール属性を設定します。エンドポイント制御レジスタでは、コントロール転送のサポートを有効にする事もできます。

27.3.5.2.2 ホスト エンドポイント

ホストはエンドポイント 0 だけを使って全てのトランザクションを実行します。他のエンドポイントは全て無効に設定され、それらのエンドポイント バッファは使われません。

27.3.5.2.3 デバイス エンドポイントエンドポイント 0 は、USB デバイスのエニュメレーションと制御のために必ず実装する必要があります。通常、デバイスはエンドポイント 0 に加えてデータ転送用のエンドポイントも実装します。

Note: U1BDTP1 ~ U1BDTP3 レジスタは 32 ビットアドレスの上位 23 ビットを提供します。このため、BDT は 512 バイト境界に配置する必要があります ( 図 27-2 参照 )。このアドレスは物理メモリアドレスである事が必要です(仮想メモリアドレスではない )。

Note: ホストモードの場合、エンドポイント 0 には自動リトライおよびハブ サポート用のビットが追加されます。

DS61126F_JP - p. 27-40 © 2013 Microchip Technology Inc.

Page 41: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

27.3.5.3 バッファ管理

バッファはシステムメモリ内に実装され、CPU と USB OTG モジュール間で共有されます。このため、シンプルなセマフォ機構を使ってメモリ内の BD とバッファの現在の所有権を判別します。このセマフォ機構には、各 BD 内の UOWN ビットを使います。

USB OTG モジュールは、バッファのトランザクション完了時に、対応する UOWN ビットを自動的にクリアします。UOWN ビットがクリアされると、ディスクリプタの所有権は CPU に渡され、必要に応じてディスクリプタとバッファを変更できるようになります。

次のトランザクションを開始するには、ソフトウェアで BDT エントリを設定した後に、UOWNビットをセットして制御を USB OTG モジュールに戻す必要があります。

BD は、U1EPn レジスタで対応するエンドポイントが有効に設定されている場合にのみ有効です。BDT はデータメモリ内に実装されます。USB OTG モジュールをリセットしても BD は変更されません。BD は、U1EPn で有効にする前に初期化する必要があります。少なくとも、有効にする前に UOWN ビットをクリアしておく必要があります。

ホストモードでは、U1TOK レジスタに書き込んで転送を開始する前に BDT を初期化する必要があります。

図 27-2: BDT アドレスの生成

BDTBA<22:0> ENDPOINT<3:0> DIR PPBI FIELD

31:9 8:5 4 3 2:0

bit 31-9 BDTBA<22:0>: BDT ベースアドレス ビット

この 23 ビット値は U1BDTP3、U1BDTP2、U1BDTP1 レジスタの値により構成されます。

bit 8-5 ENDPOINT<3:0>: 転送エンドポイント番号ビット

1111 = エンドポイント 151110 = エンドポイント 14•

0001 = エンドポイント 10000 = エンドポイント 0

bit 4 DIR: 転送方向ビット

1 = 送信 : ホストの場合は SETUP/OUT、デバイスの場合は IN0 = 受信 : ホストの場合は IN、デバイスの場合は SETUP/OUT

bit 3 PPBI: ピンポンポインタ ビット

1 = ODD バッファ0 = EVEN バッファ

bit 2-0 USB OTG モジュールが操作BD 内のフィールドへのアクセスに使用

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-41

Page 42: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.3.5.3.1 バッファ ディスクリプタのフォーマット

バッファ ディスクリプタのフォーマットには下記の 2 種類があります。

• 制御

• ステータス

バッファ ディスクリプタの制御フォーマットを図 27-3 に示します。ソフトウェアは、このフォーマットでディスクリプタを書き込んで、ハードウェアに引き渡します。

図 27-3: USB バッファ ディスクリプタの制御フォーマット : ソフトウェアからハードウェアへ

アドレス オフセット +0

31 26 25 16 15 8 7 6 5 4 3 2 1 0

— BYTE_COUNT<9:0> —

UO

WN

DA

TA0/

1

KE

EP

NIN

C

DT

S

BS

TALL

アドレス オフセット +4

31 0

BUFFER_ADDRESS<31:0>(1)

アドレス オフセット +0

bit 31-26 予約済み

bit 25-16 BYTE_COUNT<9:0>: バイトカウント ビット

バイトカウントは送信バイト数または受信最大バイト数を表します。

bit 15-8 予約済み

bit 7 UOWN: USB オーナービット

1 = USB OTG モジュールが BD と、それに対応するバッファを所有している(CPUによるBDまたはバッファの変更は禁止されている )

0 = CPU が BD と、それに対応するバッファを所有している(USB OTG モジュールは BD 内のその他のフィールドを全て無視する )

USBFRZ はデバッグ例外モード中にのみ書き込めます。通常モードでは、このビットは「0」に固定されます。

Note: このビットは、CPU または USB OTG モジュールによって書き込まれる可能性があります。ユーザは、USB エンドポイントを有効にする前に、このビットを適切な値に初期化する必要があります。

bit 6 DATA0/1: データトグル パケットビット

1 = データ 1 パケットを送信する、または、DTS = 1の場合に受信 PID = DATA1 かどうかをチェックする0 = データ 0 パケットを送信する、または、DTS = 1の場合に受信 PID = DATA0 かどうかをチェックする

bit 5 KEEP: BD 保持イネーブルビット

1 = UOWN ビットがセットされると、USB は BD の所有権を無期限に保持する各トランザクションの終了時に U1STAT FIFO は更新されず、TRNIF ビットはセットされません。

0 = トークンの処理が完了すると、USB は BD の所有権を CPU に引き渡す

bit 4 NINC: DMA アドレス インクリメント ディセーブル ビット

1 = DMA アドレスのインクリメントを無効にする0 = DMA アドレスのインクリメントを有効にする

bit 3 DTS: データトグル同期イネーブルビット

1 = データトグル同期を有効にする ( 不正な同期値を持つデータパケットを無視する )0 = データトグル同期は実行しない

Note: DATA PID (DATA0/DATA1) の期待値は DATA0/1 フィールドで指定します。

DS61126F_JP - p. 27-42 © 2013 Microchip Technology Inc.

Page 43: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

bit 2 BSTALL: バッファストール イネーブルビット

1 = バッファのストールを有効にする特定位置の BD を使用するトークンを受信すると STALL ハンドシェイクを発行します (UOWN ビットはセットされたまま、BD の値は変化しない )。対応する EPSTALL ビットは、STALL ハンドシェイクのたびにセットされます。

0 = バッファのストールを無効にする

bit 1-0 予約済み

アドレス オフセット +4

bit 31-0 BUFFER_ADDRESS<31:0>: バッファアドレス ビット (1)

エンドポイント パケット データバッファの開始アドレス

Note 1: BDT 内の個々のバッファアドレスは、物理メモリアドレスである事が必要です。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-43

Page 44: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

バッファ ディスクリプタのステータス フォーマットを図 27-4 に示します。ハードウェアはこのフォーマットでディスクリプタを書き込んで、ソフトウェアに引き渡します。

図 27-4: USB バッファ ディスクリプタのステータス フォーマット : ハードウェアからソフトウェアへ

アドレス オフセット +0

31 26 25 16 15 8 7 6 5 4 3 2 1 0

— BYTE_COUNT<9:0> —

UO

WN

DA

TA0

/1 PID<3:0> —

アドレス オフセット +4

31 0

BUFFER_ADDRESS<31:0>

アドレス オフセット +0

bit 31-26 予約済み

bit 25-16 BYTE_COUNT<9:0>: バイトカウント ビット

バイトカウントは、実際に受信または送信したバイト数を反映します。

bit 15-8 予約済み

bit 7 UOWN: USB オーナービット

1 = USB OTG モジュールが BD と、それに対応するバッファを所有している(CPU による BD またはバッファの変更は禁止されている )

0 = CPU が BD と、それに対応するバッファを所有している

Note: このビットは、CPU または USB OTG モジュールによって書き込まれる可能性があります。ユーザは、USB エンドポイントを有効にする前に、このビットを適切な値に初期化する必要があります。

bit 6 DATA0/1: データトグル パケットビット

1 = データ 1 パケットを受信した0 = データ 0 パケットを受信した

Note: このビットはパケット送信時に変更されません。

bit 5-2 PID<3:0>: パケット ID ビット

転送完了時のトークン PID

USB 仕様に基づいて下記のトークン PID 値が書き戻されます :

OUT トークンの場合 : 0x1IN トークンの場合 : 0x9SETUP トークンの場合 : 0xdホストモードの場合、このフィールドは直前に返された PID または転送ステータス情報を提供します。

戻り値 : 0x3 DATA0、0xb DATA1、0x2 ACK、0xe STALL、0xa NAK、0x0 バスタイムアウト、0xf データエラー

bit 1-0 予約済み

アドレス オフセット +4

bit 31-0 BUFFER_ADDRESS<31:0>: バッファアドレス ビット

エンドポイント パケット データバッファの開始アドレス

DS61126F_JP - p. 27-44 © 2013 Microchip Technology Inc.

Page 45: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

図 27-5: バッファ管理の概要

27.3.5.4 バッファ ディスクリプタの構成

各 BDT エントリ内の UOWN、DTS、BSTALL ビットは、対応するバッファとエンドポイントに対するデータ転送を制御します。

DTS ビットをセットすると、USB OTG モジュールはデータトグル同期を実行します。DTS を有効にしている場合、不正な DTS を含む受信パケットは無視され ( バッファには書き込まれず )、そのパケットに対して NAK ( 否定応答 ) が返されます。

BSTALL ビットがセットされている場合、この位置の BD を使用するトークンを SIE が受信すると、USB は STALL ハンドシェイクを発行します。この際、対応する EPSTALL ビットがセットされ、STALLIF 割り込みが生成されます。BSTALL ビットがセットされている場合、USBOTG モジュールは BD を使用しません (UOWN ビットはセットされたままであり、他の BD の値は変化しません )。ストールしたエンドポイントに SETUP トークンが送られると、モジュールは対応する BSTALL ビットを自動的にクリアします。

バイトカウントは送信または受信した総バイト数を表します。バイトカウントの有効レンジは0 ~ 1023 です。全てのエンドポイント転送において、転送が完了すると USB OTG モジュールはバイトカウントの値を実際に送受信したバイト数に更新します。ファームウェアで書き込んだバイトカウントよりも実際に受信したバイト数が多い場合、オーバーフロー ビットがセットされ、BDT で定義されたバッファ サイズに合わせてデータが切り詰められます。

U1BDTP<1:3>

Pointer

BDTlocated in RAM(1)

EP0 RX EVEN Descriptor

EP0 RX ODD Descriptor

EP0 TX EVEN Descriptor

EP0 TX ODD Descriptor

EP1 RX EVEN Descriptor

EP1 RX ODD Descriptor

EP1 TX EVEN Descriptor

EP1 TX ODD Descriptor

EP2 RX EVEN Descriptor

EP2 RX ODD Descriptor

EP2 TX EVEN Descriptor

EP2 TX ODD Descriptor

...

EP15 TX ODD Descriptor

Transfer BuffersLocated in

RAM or Flash(2)

EP0 RX EVEN Buffer

EP0 RX ODD Buffer

EP0 TX EVEN Buffer

EP0 TX ODD Buffer

EP1 RX EVEN Buffer

EP1 RX ODD Buffer

EP1 TX EVEN Buffer

EP1 TX ODD Buffer

EP2 RX EVEN Buffer

EP2 RX ODD Buffer

EP2 TX EVEN Buffer

EP2 TX ODD Buffer

...

Note 1: 512 バイト境界に配置

2: 送信データは RAM またはフラッシュメモリに格納できます。受信データは RAM に格納する必要があります。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-45

Page 46: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.3.6 ハードウェア インターフェイス

27.3.6.1 電源要件

USB に関する電源要件は、下記のようにアプリケーションのタイプに応じて異なります。

• デバイス

デバイスとして動作する場合、PIC32 と USB トランシーバ用に電源が必要です。 デバイスとして USB を実装する場合の概要を図 27-6 に示します。

• 組み込みホスト

ホストとして動作する場合、PIC32、USB トランシーバ、USB VBUS 用に電源 ( 公称 5 V)が必要です。この電源は、TPL に記載されたデバイスの要求に応じて 100 mA または最大500mA まで供給できる必要があります。PIC32 アプリケーションが VBUS 電源を無効化またはバスから切断できるかどうかは、アプリケーションが決定します。ホストとしてUSB を実装する場合の概要を図 27-7 に示します。

• OTG デュアルロール

OTG デュアルロールとして動作する場合、PIC32、USB トランシーバ、USB VBUS 用の電源 ( 切り換え可能、公称 5 V) が必要です。OTG として USB を実装する場合の概要を図 27-8 に示します。

A デバイスとして動作する場合、VBUS に給電する必要があります。この電源は、TPL に記載されたデバイスの要求に応じて 8 mA、100 mA または最大 500mA まで供給できる必要があります。

B デバイスとして動作する場合、VBUS には給電しません。VBUS パルシングは USB OTGモジュールまたはパルシング対応電源を使って実行できます。

27.3.6.2 VBUS レギュレータ インターフェイス

外部の 5 V VBUS レギュレータは、VBUSON 出力を使って制御できます。VBUSON ピンはVBUSON ビット (U1OTGCON<3>) で制御します。VBUSON は図 27-7 と図 27-8 に記載しています。

図 27-6: USB デバイスとして実装する場合の概要

VUSB

D+

D-

VBUS

USB OTG

USB Type ‘B’Connector

2

3

1

4

3.3V

0.1 µF

(1)

Note 1: USB デバイスとして実装する場合の VBUS 容量値については、「Universal Serial Bus Specification, Revision 2.0」 内の

7.3「Physical Layer」を参照してください。

Module

DS61126F_JP - p. 27-46 © 2013 Microchip Technology Inc.

Page 47: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

図 27-7: USB ホストとして実装する場合の概要

VUSB

D+

D-

VBUS

USB OTG

External Power

USB Type ‘A’Connector

2

3

1

4

VBUSON

5V

3.3V

0.1 µF

(1)

Note 1: USB ホストして実装する場合の VBUS 容量値については、「Universal Serial Bus Specification, Revision 2.0」 内の

7.3「Physical Layer」を参照してください。

Module

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-47

Page 48: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

図 27-8: USB OTG ( デュアルロール ) として実装する場合の概要

VUSB

D+

D-

VBUS

USB OTG

External Power

2

3

1

5

VBUSON

5V

SRP Source

SRP Discharge

4

ID

3.3V

USB TypeMicro ‘AB’Connector

0.1 µF

(1)

Note 1: USB OTG として実装する場合の VBUS 容量値については、「Universal Serial Bus Specification, Revision 2.0」 内の

7.3「Physical Layer」を参照してください。

Module

DS61126F_JP - p. 27-48 © 2013 Microchip Technology Inc.

Page 49: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

27.3.7 モジュールの初期化

ここでは、USB OTG モジュールの初期化に必要な手順について説明します。

27.3.7.1 USB ハードウェアを有効にする

USB モジュールを使うには、ソフトウェアで USBPWR ビット (U1PWRC<0>) を「1」にセットする必要があります。これは起動時のブートシーケンスで行えます。

USBPWR のセットにより、下記の動作を開始します。

• USB クロック動作を開始する

• USB 割り込みの生成を許可する

• 必要な I/O ピンのオーナーとして USB を選択する

• USB トランシーバを有効にする

• USB コンパレータを有効にする

USBPWR ビットをクリアすると、USB OTG モジュールと内部レジスタがリセットされます。USB OTG モジュールを有効にするには、以下で説明する初期化処理を実行する必要があります。そうしないと、USB OTG モジュールが設定されるまで、モジュールにコンフィグレーション パケットを送信してもハードウェアは NAK を返します。

27.3.7.2 BDT の初期化

エンドポイントを有効にする前に、そのエンドポイントと転送方向に関する全てのディスクリプタを初期化する必要があります。リセット後は、全てのエンドポイントが無効になり、送受信どちらの方向にも EVEN バッファを使って転送を開始します。

送信ディスクリプタの UOWN ビットは「0」( ソフトウェアがオーナー ) にクリアしておく必要があります。その他の送信ディスクリプタの設定は、UOWN ビットを「1」にセットする前であればいつ実行しても構いません。

データを受信するには、受信ディスクリプタを完全に初期化する必要があります。つまり、パケットデータの受信用にメモリを予約しておく必要があります。ディスクリプタには、予約したメモリへのポインタ ( 物理アドレス ) と予約したメモリサイズ ( バイト数 ) を書き込んでおく必要があります。受信ディスクリプタの UOWN ビットは「1」( ハードウェアがオーナー ) に初期化しておく必要があります。DTS および STALL ビットも適切に設定する必要があります。

トランザクションを受信した時にディスクリプタの UOWN ビットが「0」( ソフトウェアがオーナー ) であった場合、USB OTG モジュールは NAK ハンドシェイクをホストに返します。この場合、通常、ホストはトランザクションをリトライします。

27.3.7.3 USB イネーブル / モード ビット

USB の動作モードは下記のイネーブルビットによって制御されます : OTGEN (U1OTGCON<2>)、HOSTEN (U1CON<3>)、USBEN/SOFEN (U1CON<0>)

• OTGEN: PIC32 が OTG として動作する (OTGEN = 1) かどうかを選択します。OTG デバイスはファームウェア管理によってハードウェアで SRP と HNP をサポートし、データラインのプルアップおよびプルダウン抵抗を直接制御します。

• HOSTEN: デバイスのロールを制御します (HOSTEN = 1: USB ホスト、HOSTEN = 0: USBデバイス )。OTG アプリケーションでは、このロールを動的に変更できます。

• USBEN/SOFEN: USB OTG モジュールがホストとして設定されていない場合、USBEN はD+ プルアップ抵抗を有効にする事によって USB への接続を制御します。

USB OTG モジュールがホストとして設定されている場合、 SOFEN はホストが USB リンク上で動作して SOF トークンを 1 ms 周期で送信するかどうかを制御します。

Note: 動作中の USB OTG モジュールを無効にした後に十分な時間を置かずにモジュールを再度有効にすると、モジュールは以前のバス アクティビティをまだ完了していない場合があります。この場合、ファームウェアは、モジュールを設定して有効にする前に、USBBUSY ビット (U1PWRC<3>) がクリアされるまで待機する必要があります。一部のデバイスではこの機能を利用できません。詳細は各デバイスのデータシートを参照してください。

Note: これらのビットを使って USB を有効にする前に、他の USB OTG モジュールの制御レジスタを正しく初期化しておく必要があります。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-49

Page 50: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.3.8 デバイスの動作

USB バス上の全ての通信はホストによって開始されます。従って、デバイスモードの場合、USB が有効 (USBEN ビット (U1CON<0>) = 1) にされた時点で、エンドポイント 0 がコントロール転送を受信可能である事が必要です。その他のエンドポイント、ディスクリプタ、バッファの初期化は、遅くともホストがデバイスのコンフィグレーションを選択するまでに行う必要があります。これについての詳細は、「Universal Serial Bus Specification, Revision 2.0」のChapter 9 を参照してください。

USB トランザクションに応答するには、下記の手順を実行します。1. ソフトウェアは適切な BD を事前に初期化し、UOWN ビットを「1」にセットしてトラン

ザクションの準備を完了する。2. ハードウェアは USB ホストから TOKEN PID (IN、OUT、SETUP) を受信し、該当する BD

をチェックする。3. トランザクションが送信 (IN) の場合、USB OTG モジュールはデータメモリからパケット

データを読み出す。4. ハードウェアは DATA PID (DATA0/1) を受信し、パケットデータを送信または受信する。5. トランザクションが受信 (SETUP、OUT) の場合、USB OTG モジュールはデータメモリに

パケットデータを書き込む。6. エンドポイントがアイソクロナス エンドポイントとして設定されている (EPHSHK ビット

(UEPMx<0>)がクリアされている)場合を除き、USBモジュールはハンドシェイクPID (ACK、NAK、STALL) を発行または待機する。

7. USB OTG モジュールは BD を更新し、UOWN ビットに「0」( ソフトウェアがオーナー )を書き込む。

8. USB OTG モジュールは U1STAT レジスタを更新し、TRNIF 割り込みをセットする。9. ソフトウェアは U1STAT レジスタを読み出し、エンドポイントとトランザクションの方向

を判別する。10. ソフトウェアは該当する BD を読み出し、全ての処理を完了した後に TRNIF 割り込みをク

リアする。

27.3.8.1 デバイスモードでの IN トークンの受信 デバイスモードで IN トークンを受信すると、下記の手順を実行します。

1. 「Universal Serial Bus Specification, Revision 2.0」の Chapter 9 に従って USB ホストに接続し、エニュメレートする。

2. ホストに送信するデータをデータバッファに格納する。 3. 目的のエンドポイントの送信バッファ ディスクリプタ (EVEN または ODD) で以下を設定

する。a) 制御ビットフィールドで、データトグル値 (DATA0/1) とデータバッファのバイト数を

設定する。b) アドレスビット フィールドで、データバッファの開始アドレスを設定する。c) UOWN ビットフィールドを「1」にセットする。

4. USB OTG モジュールは、IN トークンを受信すると自動的にバッファ内のデータを送信する。送信が完了すると、USB OTG モジュールはステータス ビットフィールドを更新し、転送完了割り込みビット TRNIF(U1IR<3>) をセットする。

27.3.8.2 デバイスモードでの OUT トークンの受信

デバイスモードで OUT トークンを受信すると、下記の手順を実行します。

1. 「Universal Serial Bus Specification, Revision 2.0」の Chapter 9 に従って USB ホストに接続し、エニュメレートする。

2. ホストから受信するデータ量に見合ったサイズのデータバッファを作成する。 3. 目的のエンドポイントの送信バッファ ディスクリプタ (EVEN または ODD) で以下を設定

する。a) 制御ビット フィールドで、データトグル値 (DATA0/1) とデータバッファのバイト数を

設定する。b) アドレスビット フィールドで、データバッファの開始アドレスを設定する。c) 制御ビットフィールドの UOWN ビットを「1」にセットする。

4. USB OTG モジュールは、OUT トークンを受信すると、ホストが送信したデータを自動的にバッファに転送する。転送が完了すると、USB OTG モジュールはステータス ビットフィールドを更新し、転送完了割り込みビット TRNIF(U1IR<3>) をセットする。

Note: 送信 (IN) トランザクション ( ホストがデバイスからデータを読み出す ) の場合、ホストがUSBシグナリングを開始する前に読み出しデータの準備が完了している必要があります。そうでない場合、UOWN が「0」であれば、USB OTG モジュールは NAK ハンドシェイクを送信します。

DS61126F_JP - p. 27-50 © 2013 Microchip Technology Inc.

Page 51: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

27.4 ホストモードの動作 ホストモードではエンドポイント 0 だけを使います ( 他のエンドポイントは全て無効に設定します )。全ての転送はホストによって開始されるため、BD をただちに初期化する必要はありません。しかし、転送を開始する前に U1TOK レジスタで BD を設定する必要があります。

以下では、代表的なホストモード動作の実行方法について説明します。ホストモードの場合、ホスト ソフトウェアはUSB転送を明示的に開始します。全てのコントロール転送のセットアップ、データ、ステータス ステージは、ホスト ソフトウェアによって開始されます。応答 (ACKまたは NAK) は、CRC に基づいてハードウェアが自動的に生成します。ホスト ソフトウェアは、パケットが USB プロトコルに違反しないよう転送のスケジューリングも行います。全ての転送には、エンドポイント 0 制御レジスタ (U1EP0) と BD を使います。

27.4.1 SOF しきい値の設定

USB モジュールは、現在の USB フルスピード フレーム内で転送可能な残りのビット数をカウントダウンします。1 ms のフレーム時間内に 12,000 ビットを転送できるため、各フレームの開始時に値「12,000」がカウンタに書き込まれます。カウンタはフレーム内で 1 ビット時間ごとにデクリメントします。カウンタがゼロになると、次のフレームの SOF パケットが送信されます ( 図 27-9 参照 )。

SOF しきい値レジスタ (U1SOF) を使って、フレームの終了から次のトークンの開始までに適切な間隔を確保します。これにより、次のフレームの SOF パケットとの競合を防ぎます。カウンタが U1SOF レジスタのしきい値 ( バイト数で指定 ) に達した後、SOF の送信が完了するまで、次のトークンは始まりません。

USB OTG モジュールは、SOF トークンの送信が必要になると、USB リンクをアイドル状態にします。 従って、U1SOF レジスタには、最悪条件のトランザクションを完了可能な時間を確保できる値を書き込む必要があります。一般的に、最悪条件のトランザクションでは、IN トークンの後にターゲットから最大サイズのデータパケットが続き、その後にホストからの応答が続きます。ホストがフルスピードハブを介してロースピード デバイスと通信する場合、トランザクションには特殊な PRE トークンパケットも含まれます。

図 27-9: フルスピード フレームのビット割り当て

表 27-3 と表 27-4 に、最悪条件ビット時間の計算例を示します。

SOF SOF

U1SOF * 8bit times

0 ms 1 ms (12,000 bit times)

Note: 図は縮尺不定です。

SOF Threshold

1 Full-Speed Frame

Note 1: U1SOF レジスタの値はバイト数ですが、これらの計算例では結果をビット数で示しています。

2: 表 27-4 は、ロースピード ( フルスピードの 1/8 の速度 ) で IN、DATA、HANDSHAKEパケットを送信する場合の計算例です。

3: これらの計算では、NRZI エンコーディング向けにパケットデータをビットスタッフする必要性を考慮していません。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-51

Page 52: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

.

表 27-3: SOF しきい値の計算例 : フルスピード

パケット フィールド ビット数

IN SYNC, PID, ADDR, ENDP, CRC5, EOP 35

ターンアラウンド (1) — 8

DATA SYNC, PID, DATA(2), CRC16, EOP 547

ターンアラウンド — 2

ハンドシェイク SYNC, PID, EOP 19

パケット間 — 2

合計 613

Note 1: パケット間遅延は 2 ビット時間ですが、5 つのハブを経由する最悪条件の伝播遅延として 5.5 ビット時間を追加しています。

2: この例では、64 バイトの最大パケットサイズを使って計算しています。

表 27-4: SOF しきい値の計算例 : ロースビード ( ハブ経由 )

パケット フィールド ビット数 FS ビット数

PRE SYNC, PID 16 16

ハブ セットアップ — 4 4

IN SYNC, PID, ADDR, ENDP, CRC5, EOP 35 280

ターンアラウンド (1) — 8 8

DATA SYNC, PID, DATA(2), CRC16, EOP 99 792

ターンアラウンド — 2 2

PRE SYNC, PID 16 16

ハンドシェイク SYNC, PID, EOP 19 152

パケット間 — 2 2

合計 1272

Note 1: パケット間遅延は 2 ビット時間ですが、5 つのハブを経由する最悪条件の伝播遅延として 5.5 ビット時間を追加しています。

2: ロースピード モードのパケットサイズは 8 バイト以下に制限されます。

Note: バス トランザクション時間の計算に関する詳細は、「Universal Serial Bus Specification」(Revision 2.0)内の 5.11.3「Calculating Bus Transaction Times」を参照してください。

DS61126F_JP - p. 27-52 © 2013 Microchip Technology Inc.

Page 53: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

27.4.2 ホストモードの有効化と接続デバイスの検出

ホストモードを有効にするには、下記の手順を実行します。

1. ホストモードを有効にする (HOSTEN ビット (U1CON<3>) = 1)。 これにより、D+ および D- のプルダウン抵抗が有効になり、プルアップ抵抗は無効になる。バスのノイズを低減するために、SOF イネーブルビットに「0」を書き込んで (SOFENビット (U1CON<0>) = 0)、SOF パケットの生成を無効にする。

2. デバイス接続割り込みを有効にする (ATTACHIE ビット (U1IE<6>) = 1)。

3. デバイス接続割り込み (ATTACHIF ビット (U1IR<6>) = 1) を待機する。 この割り込みが発生すると、USB デバイスは D+ または D- の状態を「0」から「1」(SE0から JSTATE) に変更する。接続割り込みが発生したら、デバイスの電源が安定するまで待機する ( 最小 10 ms、推奨 100 ms)。

4. USB 制御レジスタ (U1CON) の JSTATE および SE0 ビットの状態をチェックする。 JSTATE ビット (U1CON<7>) が「0」であれば、接続デバイスはロースピードで動作する( それ以外の場合はフルスピード )。

5. 接続デバイスがロースピードの場合、アドレスレジスタのロースピード イネーブルビットをセット (LSPDEN ビット (U1ADDR<7>)= 1) し、エンドポイント 0 制御レジスタのロースピード ビットをセットする (LSPD ビット (U1EP0<7>) = 1)。接続デバイスがフルスピードの場合、これらのビットをクリアする。

6. リセット信号 (USBRST ビット (U1CON<4>) = 1) を 50 ms 間以上送信して USB デバイスをリセットする。50 ms 以上経過した後にリセットを終了する (USBRST ビット(U1CON<4>) = 0)。

7. 接続デバイスがサスペンドモードに移行しないよう、SOF パケットの生成を有効にする(SOFEN ビット (U1CON<0>) = 1)。

8. デバイスがリセットから復帰するまで 10 ms 間待機する。

9. 「Universal Serial Bus Specification, Revision 2.0」の Chapter 9 に従ってエニュメレーションを実行する。

27.4.2.1 ホスト トランザクション

ホストとして動作する場合、トランザクションは下記により構成されます。

1. ソフトウェアは該当する BD を設定し、UOWN ビットを「1」( ハードウェアがオーナー )にセットする。

2. ソフトウェアは TOKBUSY ビット (U1CON<5>) の状態をチェックして前回のトランザクションが完了したかどうかを確認する。

3. ソフトウェアはターゲットデバイスのアドレスを U1ADDR レジスタに書き込む。

4. ソフトウェアはエンドポイント番号と TOKEN PID (IN、OUT、SETUP のいずれか ) をU1TOK レジスタに書き込む。

5. ハードウェアは BD を読み出して適切な動作を決定し、データメモリへのポインタを取得する。

6. ハードウェアは適切な TOKEN PID (IN、OUT、SETUP) を USB リンクに発行する。

7. 送信トランザクション (OUT、SETUP) の場合、USB OTG モジュールはデータメモリからパケットデータを読み出す。USB OTG ジュールは DATA PID (DATA0/DATA1) とパケットデータを送信する。

8. 受信トランザクション (IN) の場合、USB OTG モジュールは DATA PID とパケットデータの受信を待機する。ハードウェアはパケットデータをメモリに書き込む。

9. エンドポイントがアイソクロナス エンドポイントとして設定されている (EPHSHK ビット(U1EPx<0>) がクリアされている ) 場合を除き、ハードウェアはハンドシェイク PID (ACK、NAK、STALL のいずれか ) を発行または待機する。

10. ハードウェアは BD を更新し、UOWN ビットに「0」( ソフトウェアがオーナー) を書き込む。

11. ハードウェアは U1STAT レジスタを更新し、TRNIF 割り込みビット (U1IR<3>) をセットする。

12. ハードウェアは次の BD (EVEN または ODD) を読み出し、USB OTG モジュールがその BDを所有しているかどうかをチェックする。USB OTG ジュールが所有している場合、ハードウェアは次のトランザクションを始める。

13. ソフトウェアは U1STAT レジスタを読み出した後に TRNIF 割り込みをクリアする。

ソフトウェアが U1TOK レジスタに書き込む前に該当する BD の UOWN ビットを「1」にセットしなかった場合、モジュールはディスクリプタを読み出しますが一切の動作を行いません。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-53

Page 54: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.4.3 接続デバイスに対するコントロール トランザクションの実行

接続されたデバイスを探索するには下記の手順を実行する必要があります。

1. エンドポイント制御レジスタで双方向のコントロール転送を有効にする(U1EP0<4:0> = 0x0D)。

2. 8 バイトのデバイス セットアップ パケットを適切なメモリバッファに格納する。デバイスフレームワーク命令セットについては、「Universal Serial Bus Specification, Revision 2.0」の Chapter 9 を参照してください。

3. 8 バイトのデバイス フレームワーク命令 (GET DEVICE?DESCRIPTOR命令等 ) を送信するよう現在の TX EP0 BD (EVEN または ODD) を初期化する。

a) BD 制御オフセット 0 を 0x8008 に設定する (UOWN ビットをセット、バイトカウントを 8 に設定 )。

b) BD データバッファ アドレス (BD0ADR) が初期化されていない場合、命令を格納している 8 バイト メモリバッファの開始アドレスに設定する。

4. アドレス レジスタ (U1ADDR<6:0>) にターゲット デバイスの USB アドレスを設定する。USB バスのリセット後、デバイスの USB アドレスは 0 となる。エニュメレーション後、ホスト ソフトウェアはこの値を別の値 (1 ~ 127) に変更する。

5. トークンレジスタに、エンドポイント 0 ( ターゲットデバイスの既定値制御パイプ ) に対する SETUP 命令を書き込む (U1TOK = 0xD0)。これにより、バスに SETUP トークンが発行され、続いてデータパケットが転送される。パケットの転送が完了すると、BD ステータスの PID フィールドにデバイスのハンドシェイクが返される。モジュールが BD ステータスを更新する際に、転送完了割り込み (U1IR<TRNIF>) がアサートされる。以上により、USB仕様書の Chapter 9 の記載に従ったセットアップ転送の準備が完了する。

6. セットアップ トランザクションのデータステージを開始する ( 例 : GET DEVICE DESCRIPTOR命令のデータを取得する ) ために、メモリ内に受信データ格納用バッファを配置する。

7. データを転送できるよう、現在の RX または TX (IN の場合は RX、OUT の場合は TX) EP0BD (EVEN または ODD) を初期化する。

a) BD 制御 UOWN ビットを「1」にセットし、データトグル (DTS) を DATA1 に設定し、バイトカウントをデータバッファ長に設定する。

b) BD データバッファ アドレス (BD0ADR) が初期化されていない場合、データバッファの開始アドレスに設定する。

8. トークンレジスタに、エンドポイント 0 ( ターゲットデバイスの既定値制御パイプ ) に対する適切な IN または OUT トークンを書き込む ( 例 : GET DEVICE DESCRIPTOR 命令の INトークン (U1TOK = 0x90))。これにより、バスに IN トークンが発行され、続いてデバイスからホストへデータパケットが転送される。データパケットの転送が完了すると、BD ステータスが書き込まれ、転送完了割り込み (TRNIF ビット (U1IR<3>)) がアサートされる。パケット データフェイズが 1 つしかないコントロール転送の場合、セットアップ トランザクションのデータフェイズはこれで完了する。さらにデータ転送が必要な場合、手順 6 に戻る。

9. セットアップ トランザクションのステータス ステージを開始するために、ステータス フェイズ データパケット ( 長さ 0) の送信または受信用バッファをメモリ内に配置する。

10. ステータス データを転送できるように、以下の手順で現在の TX EP0 BD (EVEN またはODD) を初期化する。

a) BD コントロールを 0x8000 (UOWN ビットを「1」、データトグル (DTS) を DATA0、バイトカウントを「0」) に設定する。

b) BDT バッファアドレス フィールドをデータバッファ開始アドレスに設定する。

11. トークンレジスタに、エンドポイント 0 ( ターゲットデバイスの既定値制御パイプ ) に対する適切な IN または OUT トークンを書き込む ( 例 : GET DEVICE DESCRIPTOR命令の OUTトークン (U1TOK = 0x10))。これにより、バスにトークンが発行され、続いてホストからデバイスへ長さ 0 のデータパケットが転送される。データパケットの転送が完了したら、デバイスからのハンドシェイク情報によって BD が更新され、転送完了割り込み (TRNIF ビット (U1IR<3>)) がアサートされる。セットアップ トランザクションのステータス フェイズはこれで完了する。

Note: 一部のデバイスは、フレームあたり 1 回のトランザクションにしか応答できません。

DS61126F_JP - p. 27-54 © 2013 Microchip Technology Inc.

Page 55: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

27.4.4 ターゲットデバイスとのデータ転送

接続されたデバイスを探索して設定するには下記の手順を実行する必要があります。

1. EP0 制御レジスタ (U1EPn) で、ハンドシェイクを有効にし ( アイソクロナス転送を使用しない場合 )、送信および受信転送を適切に有効にする。ターゲット デバイスがロースピード デバイスである場合、ロースピード イネーブルビット (LSPD ビット (U1EPn<7>)) もセットする。転送時にターゲット デバイスから NAK が返された場合にハードウェアがリトライを無限に繰り返すよう設定するには、リトライ ディセーブル ビット(RETRYDISビット (U1EPn<6>)) をクリアする。

2. 必要なバイト数を転送するよう、該当する転送方向の現在のバッファ ディスクリプタ (EVENまたは ODD) を設定する。

3. アドレス レジスタ (U1ADDR<6:0>) にターゲット デバイスのアドレスを設定する。

4. トークンレジスタ (U1TOK) に、目的のエンドポイントに対応する IN または OUT トークンを書き込む。これはモジュールの送信ステートマシンをトリガし、トークンとデータの送信が始まる。

5. 転送完了割り込み (TRNIF ビット (U1IR<3>) = 1) を待機する。この割り込みは、転送が完了してBDの所有権がマイクロプロセッサに返された事を示す。リトライディセーブル ビットがセットされている場合、ハンドシェイク (ACK、NAK、STALL、ERROR (0xf)) が BDの PID フィールドに返される。ストール割り込みが発生した場合、未完了のパケットをキューから外し、ターゲット デバイスのエラー状態をクリアする必要がある。切断割り込み (2.5 s 以上 SE0 が持続 ) の発生 (DETACHIF ビット (U1IR<0>)) は、ターゲットの接続が絶たれた事を示す。

6. 転送完了割り込み (TRNIF ビット (U1IR<3>)) が発生した場合、BD をチェックして手順 2に戻り、次のデータパケットをキューに入れる。

27.4.4.1 USB リンク ステート

下記の 3 つのリンクステートについて順番に説明します。

• リセット

• アイドルとサスペンド

• レジューム信号

27.4.4.1.1 リセット

ホストの場合、ソフトウェアでリセット信号を駆動する必要があります。これを行うには、USBRST ビット (U1CON<4>) をセットします。USB 仕様に従い、ホストはリセット信号を少なくとも 50 ms 間駆動する必要があります ( 連続的なリセット信号でなくても構いません )。詳細は「Universal Serial Bus Specification, Revision 2.0」を参照してください。リセット後 10 ms が経過するまで、ホストはダウンストリーム トラフィックを開始できません。

デバイスとして動作する場合、USB OTG モジュールは 2.5 s 間のリセット信号を検出するとURSTIF (U1IR<0>) 割り込みをアサートします。この際、ソフトウェアは全てのリセット初期化処理を実行する必要があります。これには、アドレス レジスタを 0x00 に設定し、エンドポイント 0 を有効にする処理が含まれます。リセット信号が途絶えた後に再び 2.5 s 間のリセット信号が検出されるまで、URSTIF 割り込みは再セットされません。

Note: 無限リトライを使用する場合、デバイスがいつまでも応答しないと、デッドロック条件に陥る可能性があります。

Note: USB の速度、トランシーバ、プルアップ抵抗はモジュール セットアップ フェイズ中に設定する必要があります。USB モジュールを有効にしたままこれらの設定を変更する事は推奨しません。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-55

Page 56: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.4.4.1.2 アイドルとサスペンド

USB のアイドル状態とは、J ステートが持続する状態を指します。USB のアイドル状態が 3 ms間続くと、デバイスはサスペンド状態に移行します。USB がアクティブな間、USB ホストは1 ms 周期で SOF トークンを送信してデバイスがサスペンド状態に移行する事を防ぎます。

USB リンクがサスペンド状態に移行した場合、次にバス アクティビティを開始する前に、USBホストまたはデバイスはレジューム信号を駆動する必要があります (USB リンクが切断している可能性もあります )。

USB ホストの場合、ソフトウェアで SOFEN ビット (U1CON<0>) をクリアするとただちにリンクがサスペンド状態に移行すると考える必要があります。

USB デバイスの場合、バスのアイドル状態が 3 ms 間持続した事を検出すると、ハードウェアは IDLEIF 割り込みビット (U1IR<4>) をセットします。ソフトウェアは、IDLEIF 割り込みがセットされたらリンクはサスペンド状態であると見なす必要があります。

サスペンド状態を検出すると、ソフトウェアは USUSPEND ビット (U1PWRC<1>) をセットして、USB ハードウェアのサスペンドモードへの移行を要求できます。ハードウェア サスペンドモードは、USB OTG モジュールの 48 MHz クロックを遮断し、USB トランシーバを省電力モードに移行させます。

また、リンクがサスペンド状態になれば、ユーザは PIC32 をスリープに移行させる事ができます。

27.4.4.1.3 レジューム信号の駆動

ソフトウェアは、RESUME ビット (U1CON<2>) をセットする事で、USB のサスペンド状態からの復帰を要求できます。これにより、ハードウェアはレジューム信号を生成します ( ホストモードの場合、ロースピード EOP による終了処理を含む )。

USB デバイスは、アイドル状態が 5 ms 以上持続しない限りレジューム信号を駆動すべきではありません。また、USB ホストはリモート復帰用の機能を有効にしておく必要があります。

リモート復帰を有効にするには、ソフトウェアで RESUME ビットを一定時間 (USB デバイスの場合は 1 ~ 15 ms、USB ホストの場合は 20 ms より長く ) セットした後に、クリアする必要があります。RESUME 信号の詳細については、 「Universal Serial Bus Specification, Revision2.0」内の 7.1.7.7、11.9、11.4.4 を参照してください。

RESUME ビットに書き込むと、特殊ハードウェア サスペンド ( 低消費電力 ) ステートが自動的にクリアされます。

USB モジュールがホストとして動作している場合、レジューム信号を駆動した後に少なくともソフトウェアで SOFEN ビット (U1CON<0>) をセットする必要があります。これを行わないと、USB リンクは 3 ms 間非アクティブになった後にサスペンド状態に戻ってしまいます。また、レジューム信号が終了してから10 msの間は、ソフトウェアでダウンストリーム トラフィックを開始する事はできません。

27.4.4.1.4 レジューム信号の受信

USB ロジックが USB バス上で 2.5 s 間のレジューム信号を検出すると、ハードウェアはレジューム割り込みビット (RESUMEIF (U1IR<5>)) をセットします。

レジューム信号を受信したデバイスは、通常の USB アクティビティを受信できるよう準備する必要があります。レジューム信号を受信したホストは、ただちに自らもレジューム信号の駆動を開始する必要があります。USB リンクで何らかのアクティビティを受信すると、特殊ハードウェア サスペンド ( 低消費電力 ) ステートは自動的にクリアされます。

PIC32 がスリープ中である時に、USB リンクで何らかのアクティビティ ( 例えばレジューム信号やリンク切断等 ) を受信すると、ACTVIF 割り込みビット (U1OTGIR<4>) がセットされます。これによりデバイスはスリープから復帰します。

27.4.4.2 SRP サポート

OTG 以外のアプリケーションでは、SRP のサポートは不要です。SRP はフルスピードの場合にのみ開始できます。SRP の詳細については、USB On-The-Go 補足仕様を参照してください。

USB リンクが未使用中であれば、OTG A デバイスまたは組み込みホストは VBUS への給電を停止できます。これを行うには、ソフトウェアで VBUSON ビット (U1OTGCON<3>) をセットします。VBUSへの給電が停止した時点で、AデバイスはUSBセッションを終了した事になります。

Note: A デバイスが VBUS への給電を停止すると、B デバイスはプルアップ抵抗を切断する必要があります。

DS61126F_JP - p. 27-56 © 2013 Microchip Technology Inc.

Page 57: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

OTG A デバイスまたは組み込みホストは、VBUS への給電をいつでも再開して新しいセッションを開始できます。また、OTG B デバイスは、VBUS への給電を再開して新しいセッションを開始するよう OTG A デバイスに対して要求する事もできます。これが SRP の目的です。

B デバイスは、新しいセッションを要求する前に、以前のセッションが完了している事を確認する必要があります。B デバイスが確認すべき事項は次の 2 点です。

1. VBUS 電圧がセッション終了電圧よりも低い

2. D+ と D- がどちらも 2 ms 以上 LOW を維持している

B デバイスは、SESENDIF 割り込みビット (U1OTGIR<2>) によって条件 1 を検出します。

条件2は、ソフトウェアでLSTATEIFビット(U1OTGIR<5>)と1 msタイマを使って検出できます。

B デバイスは、抵抗を介して VBUS ラインを放電する事により、条件 1 の成立を促進できます。これを行うには、ソフトウェアで VBUSDIS ビット (U1OTGCON<0>) をセットします。

これらの初期条件が成立すると、B デバイスは新しいセッションを要求できます。次に、B デバイスは D+ データラインをパルシングします。これを行うには、ソフトウェアで DPPULUP ビット (U1OTGCON<7>) をセットします。データラインは 5 ~ 10 ms 間 HIGH に保持する必要があります。

データライン パルシングの後に、B デバイスは VBUS 電源をパルシングして SRP 信号を完了する必要があります。これを行うには、ソフトウェアで VBUSCHG ビット (U1OTGCON<1>)をセットします。

A デバイスは、ATTACHIF 割り込みビット (U1IR<6>) または SESVDIF 割り込みビット(U1OTGIR<3>) によって SRP 信号を検出したら、VBUSON ビット (U1OTGCON<3>) をセットして VBUS ラインへの給電を再開する必要があります。

VBUS パルシングの実行中、B デバイスは VBUS の給電状態を監視しません。パルシングが終了した後、B デバイスは SESVDIF 割り込みビット (U1OTGIR<3>) によって VBUS 給電の再開を検出したら、D+ ラインをプルアップして USB リンクに再接続する必要があります。A デバイスが VBUS を有効にし、リセット信号を駆動すると、SRP は完了します。

詳細は、「Universal Serial Bus Specification, Revision 2.0」内の On-The-Go 補足仕様を参照してください。

27.4.4.3 HNP

マイクロ AB レセプタクルを使う OTG アプリケーションは、HNP をサポートする必要があります。HNP により、OTG B デバイスを一時的に USB ホストとして動作させる事ができます。最初に、A デバイスから B デバイスの HNP を有効にする必要があります。HNP はフルスピードの場合にのみ開始できます。

A デバイスが HNP を有効にすると、B デバイスは USB リンクがサスペンド状態であればいつでも切断を通知するだけでホストになる事を要求できます。これを行うには、ソフトウェアでDPPULUP ビット (U1OTGCON<7>) をクリアします。

A デバイスは、URSTIF (U1IR<0>) 割り込みによって切断状態を検出すると、B デバイスがホストになる事を許可できます。このために、A デバイスはフルスピード デバイスとしての接続をシグナリングします。ソフトウェアは、A デバイスのホスト動作を無効にし (HOSTEN(U1CON<3>) = 0)、デバイスとして接続 (USBEN = 1) する事で、これを完了できます。B デバイスからの要求に対して A デバイスがレジューム信号で応答した場合、A デバイスはホストとして動作し続けます。

B デバイスは、ATTACHIF 割り込みビット (U1IR<6>) によって接続状態を検出した時点で、ホストになります。B デバイスは、バスを使用する前にリセット信号を駆動します。

B デバイスは、ホストとしてのロールを終了する際に、ホスト動作を無効 (HOSTEN = 0) にする事によって全てのバス動作を停止し、D+ プルアップ抵抗を有効にした後に、デバイスとして再接続します (USBEN = 1)。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-57

Page 58: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

すると A デバイスはサスペンド状態 (3 ms 間のアイドル状態 ) を検出した後に、D+ ラインのプルアップ抵抗を無効にします。あるいは、A デバイスは VBUS の給電を停止してセッションを終了する事もできます。これ以外の場合、A デバイスは常時 VBUS を給電します。

A デバイスは、ATTACHIF によって接続状態を検出するとホスト動作を再開し、リセット信号を駆動します。

HNP の詳細については、USB On-The-Go 補足仕様を参照してください。

27.4.4.4 クロック要件

USB を正しく動作させるには、USB OTG モジュールに 48 MHz のクロックを供給する必要があります。このクロックを SIE のクロック源として使って、USB 転送のタイミングを生成します。制御レジスタは CPU と同じクロック速度で動作します ( 図 27-1 参照 )。

USB OTG モジュールの USB 動作用クロックは、プライマリ オシレータ (POSC) から生成されます。USB PLL と内部プリスケーラを備えるため、各種の入力周波数から 48 MHz クロックを生成できます。このため、CPU と USB OTG モジュールの両方が POSC をクロック源として使う場合でも、CPU は USB OTG モジュールとは異なる周波数で動作できます。バッファのオーバーランとタイミングの問題を防ぐため、CPU コアは 16 MHz 以上のクロック速度で動作する必要があります。

USB OTG モジュールのクロック源には、内蔵高速 RC オシレータ (FRC) も使えます。このクロック源を使った場合、USB OTG モジュールは USB 仕様のタイミング要件を満たしません。このため、FRC クロック源は省電力モード中にのみ使用します。これにより、USB OTG モジュールは省電力モード中に USB 復帰を検出し、その事を割り込みコントローラに知らせる事ができます。USB 送信を開始する前に、USB OTG モジュールのクロック源をプライマリ オシレータに切り換える必要があります。

DS61126F_JP - p. 27-58 © 2013 Microchip Technology Inc.

Page 59: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

27.5 割り込み USB OTG モジュールは割り込みを使って各種 USB イベント ( ステータスの変化、データ受信、バッファ エンプティ イベント等 ) を CPU に通知します。ソフトウェアはこれらの割り込みにタイムリーに応答できる必要があります。

27.5.1 割り込み制御

USB モジュールの各割り込み要因には、割り込みフラグビットとそれらに対応する割り込みイネーブルビットが割り当てられています。読み出し専用の UERRIF ビット (U1IR<1>) は、有効にされている全てのエラーフラグの論理 OR 値を格納します。割り込みサービスルーチン (ISR)では、UERRIFビットを使って、USBモジュールでエラーイベントが発生したかどうかをチェックできます。

27.5.2 USB OTG モジュールによる割り込み要求の生成

USB OTG モジュールは、各種のイベントから割り込み要求を生成できます。これらの割り込みを CPU に伝えるために、USB 関連の全ての割り込みは 1 つに集約され、有効な USB 割り込みが 1つでも発生すると割り込みコントローラに対して汎用USB割り込みを生成します (この割り込みが有効にされている場合 ) ( 図 27-11 参照 )。これに対し USB ISR は、CPU 割り込みの原因となった USB イベント ( 複数可 ) を判別して適切に対処する必要があります。USBOTG モジュールの割り込みレジスタは 2 レベルで構成されます。上位レベルのビットは、U1OTGIRおよびU1IRレジスタ内の全てのUSBステータス割り込みで構成されます。U1OTGIRおよび U1IR レジスタの各ビットは、U1OTGIE および U1IE レジスタ内の対応するイネーブルビットによって個別に有効にされます。また、U1EIR レジスタ内のいずれかの割り込み条件が発生し、その割り込み条件が U1EIE レジスタ内の対応するビットで有効にされている場合、USB エラー条件割り込みビット (UERRIF) によってエラー割り込みの発生が示されます。

27.5.3 割り込みタイミング

転送に関する割り込みは、転送の終了時に発生します。図 27-10 に、USB 割り込みが発生する可能性のある代表的なイベント シーケンスと、割り込みの生成タイミングを示します。ソフトウェアで強制的に割り込みビットをセットする手段は用意されていません。

割り込みイネーブル レジスタ (U1IE、U1EIE、U1OTGIE) 内の値は、割り込み条件の発生をCPU の割り込みコントローラに伝達するかどうかを指定する働きしかありません。イネーブルレジスタで割り込みを有効にしなくても、割り込みフラグビットをポーリングする事で割り込みの発生を検出してサービスできます。

27.5.4 割り込み処理

USB OTG モジュールが U1IR、U1EIR、U1OTGIR レジスタ内の割り込みビットをセットした場合、ソフトウェアで対応するビット位置に「1」を書き込んで割り込みをクリアする必要があります。USB 割り込みビット (USBIF (IFS1<25>)) は、ISR を終了する前にクリアする必要があります。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-59

Page 60: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

図 27-10: USB 割り込みイベントの代表例

USB <USBRST>

ACKSETUP TOKEN DATA

URSTIFInterrupt Generated

TRNIFInterrupt Generated

IN TOKEN DATA

ACKOUT TOKEN DATA

TRNIFInterrupt Generated

TRNIFInterrupt Generated

Control

ACK

=Host =Function

SOF

SOFIFInterrupt Generated

DS61126F_JP - p. 27-60 © 2013 Microchip Technology Inc.

Page 61: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

図 27-11: USB 割り込みロジック

DMAEFDMAEE

BTOEFBTOEE

DFN8EFDFN8EE

CRC16EFCRC16EE

CRC5EF/EOFEFCRC5EE/EOFEE

PIDEFPIDEE

ATTACHIFATTACHIE

RESUMEIFRESUMEIE

IDLEIFIDLEIE

TRNIFTRNIE

SOFIFSOFIE

DETACHIF/URSTIFDETACHIE/URSTIE

USB Interrupt

STALLIF STALLIE

BTSEFBTSEE

T1MSECIFT1MSECIE

LSTATEIFLSTATEIE

ACTVIFACTVIE

SESVDIFSESVDIE

SESENDIFSESENDIE

VBUSVDIFVBUSVDIE

IDIFIDIE

UERRIF

UERRIE

BMXEFBMXEE

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-61

Page 62: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.6 I/O ピン表 27-5 に、USB OTG モジュールに関連するピンの機能をまとめて示します。

表 27-5: USB OTG モジュールに関連するピン

モード ピン名 モジュール制御対応する

ビットフィールド(1)TRISビットの設定

ピンタイプ

概要

組み込みホストモード (4)

D+ USBEN — — U データライン (+)

D- USBEN — — U データライン (-)

VBUS USBEN — — A, I USB バスパワーモニタ

VBUSON USBEN VBUSON — D, O VBUS の給電制御出力

VBUSON USBEN FVBUSONIO(2,3) 1 D, I 汎用デジタル入力

VBUSON USBEN FVBUSONIO(2,3) 0 D, O 汎用デジタル出力

VUSB — — — P USB トランシーバの電源入力

ID USBEN — — R 予約済み ( 接続禁止 )

ID USBEN FUSBIDIO(2,3) 1 D, I 汎用デジタル入力

ID USBEN FUSBIDIO(2,3) 0 D, O 汎用デジタル出力

デバイス

D+ USBEN — — U データライン (+)

D- USBEN — — U データライン (-)

VBUS USBEN — — A, I USB バスパワーモニタ

VBUSON — — — R 予約済み

VBUSON USBEN FVBUSONIO(2,3) 1 D, I 汎用デジタル入力

VBUSON USBEN FVBUSONIO(2,3) 0 D, O 汎用デジタル出力

VUSB — — — P USB 内部トランシーバ電源

ID — — — R 予約済み

ID USBEN FUSBIDIO(2,3) 1 D, I 汎用デジタル入力

ID USBEN FUSBIDIO(2,3) 0 D, O 汎用デジタル出力

Legend: I = 入力 O = 出力 A = アナログ D = デジタル U = USB P = 電源 R = 予約済み

Note 1: 全てのピンは、デバイスピン優先度制御の影響を受けます。詳細は各デバイスのデータシートを参照してください。

2: これらのビットの詳細は、『セクション 32. コンフィグレーション』(DS61124) を参照してください。

3: 一部のデバイスはこれらのビットを実装していません。詳細は各デバイスのデータシートを参照してください。

4: ホストモードまたは OTG モードで動作している場合、VBUSON ピンは USB 動作に必要であるため、このピンを I/O 用に再設定する事はできません。

5: OTG モードで動作している場合、ID ピンは USB 動作に必要であるため、このピンを I/O 用に再設定する事はできません。

DS61126F_JP - p. 27-62 © 2013 Microchip Technology Inc.

Page 63: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

OTG(4,5)

D+ USBEN — — U データライン (+)

D- USBEN — — U データライン (-)

VBUS USBEN VBUSCHG, VBUSDIS

— A, I/O USB バスパワーモニタ

VBUSON USBEN VBUSCHG, VBUSDIS, VBUSON

— D, O USB ホストおよび OTG バスパワー制御出力

VBUSON USBEN FVBUSONIO(2,3) 1 D, I 汎用デジタル入力

VBUSON USBEN FVBUSONIO(2,3) 0 D, O 汎用デジタル出力

VUSB — — — P USB トランシーバの電源入力

ID USBEN — — D, I OTGモード ホスト /デバイス選択入力

ID USBEN FUSBIDIO(2,3) 1 D, I 汎用デジタル入力

ID USBEN FUSBIDIO(2,3) 0 D, O 汎用デジタル出力

USB 無効

D+ USBEN — 1 D, I 汎用デジタル入力

D- USBEN — 1 D, I 汎用デジタル入力

VBUS USBEN — — R 予約済み

VBUSON USBEN — 0 D, O 汎用デジタル入力

VBUSON USBEN — 1 D, I 汎用デジタル出力

VUSB USBEN — — R 予約済み

ID USBEN — 1 D, I 汎用デジタル入力

ID USBEN — 0 D, O 汎用デジタル出力

表 27-5: USB OTG モジュールに関連するピン ( 続き )

モード ピン名 モジュール制御対応する

ビットフィールド(1)TRISビットの設定

ピンタイプ

概要

Legend: I = 入力 O = 出力 A = アナログ D = デジタル U = USB P = 電源 R = 予約済み

Note 1: 全てのピンは、デバイスピン優先度制御の影響を受けます。詳細は各デバイスのデータシートを参照してください。

2: これらのビットの詳細は、『セクション 32. コンフィグレーション』(DS61124) を参照してください。

3: 一部のデバイスはこれらのビットを実装していません。詳細は各デバイスのデータシートを参照してください。

4: ホストモードまたは OTG モードで動作している場合、VBUSON ピンは USB 動作に必要であるため、このピンを I/O 用に再設定する事はできません。

5: OTG モードで動作している場合、ID ピンは USB 動作に必要であるため、このピンを I/O 用に再設定する事はできません。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-63

Page 64: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.7 デバッグモードおよび省電力モードでの動作

27.7.1 スリープ中の動作

スリープへの移行は下記の 2 つ場合にのみ推奨します。

• USB OTG モジュールが無効である場合

• USB モジュールがサスペンド状態である場合

バスがアクティブな時に USB OTG モジュールがスリープに移行すると、USB プロトコルに違反する可能性があります。

デバイスがスリープに移行しても、USB OTG モジュールにはクロックが供給されます。CPUクロック源への影響は、USB および CPU クロックの設定によって異なります。

• CPU と USB が共にプライマリ オシレータ (POSC) を使っている場合、スリープに移行すると CPU はクロック源から切り離されますが、オシレータは USB OTG モジュールにクロックを供給し続けます。

• CPU と USB が異なるクロック源を使っている場合、スリープに移行すると CPU 用クロック源は無効になりますが、USB 用クロック源は動作し続けます。

USB OTG モジュールをサスペンドモードに移行させると、消費電力をさらに低減できます。これを行うには、CPU がスリープに移行する前に USUSPEND ビット (U1PWRC<1>) をセットします。あるいは、あらかじめ UASUSPND ビット (U1CNFG1<0>) をセットしておけば、CPUがスリープに移行する際にモジュールは自動的にサスペンドモードに移行します。

• CPUと USBが共にプライマリ オシレータ (POSC) をクロック源として使っている場合、USBOTG モジュールがサスペンド中であれば、CPU がスリープに移行するとオシレータは無効になります。

• USB OTG モジュールが POSC を使い、CPU は別のクロック源を使っている場合、USB OTGモジュールがサスペンドに移行すると POSC が無効になり、CPU がスリープに移行するとCPU クロック源が無効になります。

27.7.1.1 バス アクティビティとスリープへの移行の同時発生

ソフトウェアはバス アクティビティを予測できないため、スリープへの移行に向けて USB リンクが安全な状態であると判断しても、その後にバス アクティビティが発生して USB が安全ではないリンク状態になる可能性があります。これを防ぐには、USLPGRD (U1PWRC<4>) および UACTPND (U1PWRC<7>) ビットを使います。問題が生じる可能性のあるコード領域を実行する前に、ソフトウェアで GUARD ビットをセットすると、バスアクティビティが検出された場合または保留中の通知が存在する場合にハードウェアが復帰イベントを生成するため、スリープへの移行を防ぐ事ができます。スリープへの移行を実行する前に、UACTPND ビットをポーリングして、保留中の割り込みが存在しない事を確認する必要があります。

27.7.2 アイドル中の動作

デバイスがアイドルに移行した場合の USB OTG モジュールの挙動は、PSIDL ビットで指定します。

27.7.2.1 PSIDL をクリアした場合のアイドル中の動作

このビットをクリアした場合、アイドル中に CPU へのクロック供給は停止しますが、USB モジュールにはクロックが供給され続けます。従って、CPU がアイドル中であっても USB OTGモジュールは動作を継続できます。有効にされている USB 割り込みが発生すると、CPU はアイドルから復帰します。

27.7.2.2 PSIDL をセットした場合のアイドル中の動作

PSIDL ビットをセットした場合、CPU と USB モジュールへのクロック供給はどちらも停止します。この場合、USB OTG モジュールは通常動作を停止するため、消費電力を節約できます。何らかの USB アクティビティが発生した時に CPU をアイドルから復帰させる事ができます。

アイドルに移行する前に CPU と USB のクロック源をどちらも FRC に切り換える事で、消費電力をさらに低減できます。この場合、POSC モジュールは停止します。POSC モジュールを再起動する際に、起動遅延が必要です。この動作モードは、バスがアイドル状態である時に実行する必要があります。

Note: 一部のデバイスは UASUSPND 機能を備えていません。詳細は各デバイスのデータシートを参照してください。

DS61126F_JP - p. 27-64 © 2013 Microchip Technology Inc.

Page 65: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

27.7.3 デバッグモード中の動作

27.7.3.1 アイパターン

USB モジュールは、USB ハードウェアのデバッグとテストを支援するアイパターン テストジェネレータを内蔵しています。UTEYEビット (U1CNFG1<7>)をセットすると、USBモジュールはアイパターンを生成します。これを行うには、USB OTG モジュールが有効 (USBPWR ビット (PWRC0) = 1) かつ 48 MHz の USB クロックが有効 (SUSPEND ビット (U1PWRC1) = 0) であり、USB モジュールがフリーズモード中ではない事が必要です。

UTEYE ビットをセットすると、USB モジュールは J-K-J-K ビットシーケンスの送信を開始します。このビットシーケンスは、アイパターン テスト モード中に繰り返し送信されます( 図 27-12 参照 )。

図 27-12:アイパターン生成タイミング

Note: USB モジュールを実際の USB システムに接続した状態では、UTEYE ビットを決してセットしないでください。アイパターン テスト モードは、USB 認証テストによるボードの検証を目的としています。

Vusb Value Vusb Value

usb_clk

UTEYE Bit

Output Enabled

D-

D+

Resampled UTEYE

UTEYE Resampled by Two USB Clock Edges

Every 4th USB Clock

Every 4th USB Clock

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-65

Page 66: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.8 リセットの影響全てのタイプのリセットは USB OTG モジュールのレジスタを既定値状態に戻します。

27.8.1 デバイスリセット (MCLR)

デバイスリセットが発生すると、USB OTG モジュールの全てのレジスタはリセット状態に戻り、USB OTG モジュールは OFF になります。

27.8.2 パワーオン リセット (POR)

POR が発生すると、USB OTG モジュールの全てのレジスタはリセット状態に戻り、USB OTGモジュールは OFF になります。

27.8.3 ウォッチドッグ タイマリセット (WDT)

WDT リセットが発生すると、USB OTG モジュールの全てのレジスタはリセット状態に戻り、USB OTG モジュールは OFF になります。

Note: USB OTG モジュールは、RAM に格納された BDT およびパケットデータ バッファのリセット後の状態を保証できません。

DS61126F_JP - p. 27-66 © 2013 Microchip Technology Inc.

Page 67: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

27.9 関連アプリケーション ノート本セクションに関連するアプリケーション ノートの一覧を下に記載します。一部のアプリケーション ノートは PIC32 デバイスファミリ向けではありません。ただし、概念は共通しており、変更が必要であったり制限事項が存在するものの利用が可能です。USB On-The-Go (OTG) モジュールに関連する最新のアプリケーション ノートは下記の通りです。

タイトル アプリケーション ノート番号

USB Embedded Host Stack AN1140

USB Embedded Host Stack Programmer’s Guide AN1141

USB Mass Storage Class on an Embedded Host AN1142

Using a USB Flash Drive with an Embedded Host AN1145

USB HID Class on an Embedded Device AN1163

USB CDC Class on an Embedded Device AN1164

USB Generic Function on an Embedded Device AN1166

USB Mass Storage Class on an Embedded Device AN1169

USB Device Stack for PIC32 Programmer’s Guide AN1176

Note: PIC32 ファミリデバイス関連のアプリケーション ノートとサンプルコードはマイクロチップ社のウェブサイト (www.microchip.com) でご覧になれます。

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-67

Page 68: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

27.10 改訂履歴

リビジョン A (2008 年 2 月 )

本書の初版

リビジョン B (2008 年 4 月 )

「Preliminary」ステータスに改訂、U-0 を r-x に改訂、図 27-1 を改訂、表 27-5 を改訂

リビジョン C (2008 年 7 月 )

レジスタ 27-23 (IFS1) とレジスタ 27-24 (IEC1) を改訂、図 27-3 と図 27-4 を改訂、予約済みビットを「Maintain as」から「Write」に変更

リビジョン D (2009 年 7 月 )

このリビジョンでの変更内容は以下の通りです。

•「DMA コントローラ」を全て「バスマスタ」に変更

• 27.2.19 「関連レジスタ」を更新

• USB レジスタのまとめ ( 表 27-1) で以下を変更 :

- クリア、セット、反転レジスタに関する全ての記述を削除

- OSCON、IFS1、IEC1、DEVCFG2 レジスタに関する記述を削除

- USBBUSY および UASUSPND ビットを追加

-「アドレス オフセット」列を追加

- クリア、セット、反転レジスタに関する Note 1、2、3 を追加

• 下記のレジスタにクリア、セット、反転レジスタに関する Note を追加

- U1OTGIR

- U1OTGIE

- U1OTGCON

- U1PWRC

- U1IR

- U1IE

- U1EIR

- U1EIE

- U1STAT

- U1CON

- U1ADDR

- U1FRML

- U1FRMH

- U1TOK

- U1SOF

- U1BDTP1、U1BDTP2、U1BDTP3- U1CNFG1

- U1EPn (n = 0 ~ 15)

• U1PWRC: USB 電源制御レジスタ ( レジスタ 27-5) に USBBUSY ビットの定義を追加

• U1CNFG1: USB コンフィグレーション 1 レジスタ ( レジスタ 27-20) に UASUSPND ビットの定義を追加

• 次のレジスタを削除 : OSCCON、IFS1、IEC1、DEVCFG2

• BDT アドレス生成 ( 図 27-2) の右端の列を「FSOTG」から「FIELD」に更新

• バッファ管理の概要 ( 図 27-5) に Note 1 と Note 2 を追加

• 27.3.7「モジュールの初期化」の最後の段落の後に注釈を追加

• 表 27-5: 「USB OTG モジュールに関連するピン」に FVBUSONIO と FUSBIDIO を制御するビットを追加

• 27.7.2「アイドル中の動作」で、「USBSIDL」ビットを「PSIDL」ビットに変更

DS61126F_JP - p. 27-68 © 2013 Microchip Technology Inc.

Page 69: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

セクション 27. USB On-The-Go (OTG)U

SB

On

-Th

e-Go

(O

TG

)

27

リビジョン D (2009 年 7 月 ) ( 続き )

• 27.7.3.2「USB OE モニタ」を削除

• 表 27-5 に Note 4 と Note 5 を追加

• 27.9「関連アプリケーション ノート」にアプリケーション ノート AN1140、AN1142、AN1145を追加

リビジョン E (2009 年 8 月 )

このリビジョンでの変更内容は以下の通りです。

• USB レジスタのまとめ ( 表 27-1) で以下を変更 :

- クリア、セット、反転レジスタに関する Note 1、2、3 を削除

• 下記のレジスタからクリア、セット、反転レジスタに関する Note を削除

- U1OTGIR

- U1OTGIE

- U1OTGCON

- U1PWRC

- U1IR

- U1IE

- U1EIR

- U1EIE

- U1STAT

- U1CON

- U1ADDR

- U1FRML

- U1FRMH

- U1TOK

- U1SOF

- U1BDTP1、U1BDTP2、U1BDTP3- U1CNFG1

- U1EPn (n = 0 ~ 15)

リビジョン F (2011 年 4 月 )

このリビジョンでの変更内容は以下の通りです。

• 本書のヘッダを「PIC32MX ファミリ リファレンス マニュアル」から「PIC32 ファミリ リファレンス マニュアル」に変更

•「PIC32MX」を全て「PIC32」に変更

• レジスタ 27-1 ~レジスタ 27-21 内の「r-0」と「r-x」を全て「U-0」に更新

• レジスタ 27-5 内の UACTPND ビットを HS、HC-x として更新

• 図 27-1 に、USB OTG モジュールを有効にすると ID ピンが内部で HIGH に駆動される事を記載した Note を追加

• 27.2「制御レジスタ」を再構成

• 表 27-1 に、セット / クリア / 反転レジスタに関する Note を追加し、「アドレス」列を削除

• 文章および体裁の変更等、本書全体の細部を修正

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-69

Page 70: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

PIC32 ファミリ リファレンス マニュアル

NOTE:

DS61126F_JP - p. 27-70 © 2013 Microchip Technology Inc.

Page 71: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

© 2013 Microchip Technology Inc. DS61126F_JP - p. 27-71

本書に記載されているデバイス アプリケーション等に関する

情報は、ユーザの便宜のためにのみ提供されているものであ

り、更新によって無効とされる事があります。お客様のアプ

リケーションが仕様を満たす事を保証する責任は、お客様に

あります。マイクロチップ社は、明示的、暗黙的、書面、口

頭、法定のいずれであるかを問わず、本書に記載されている

情報に関して、状態、品質、性能、商品性、特定目的への適

合性をはじめとする、いかなる類の表明も保証も行いません。

マイクロチップ社は、本書の情報およびその使用に起因する

一切の責任を否認します。マイクロチップ社の明示的な書面

による承認なしに、生命維持装置あるいは生命安全用途にマ

イクロチップ社の製品を使用する事は全て購入者のリスクと

し、また購入者はこれによって発生したあらゆる損害、クレー

ム、訴訟、費用に関して、マイクロチップ社は擁護され、免

責され、損害をうけない事に同意するものとします。暗黙的

あるいは明示的を問わず、マイクロチップ社が知的財産権を

保有しているライセンスは一切譲渡されません。

商標

マイクロチップ社の名称とMicrochipロゴ、dsPIC、FlashFlex、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、PIC32 ロゴ、rfPIC、SST、SST ロゴ、SuperFlash、UNI/O は、

米国およびその他の国におけるマイクロチップ・テクノロ

ジー社の登録商標です。

FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MTP、SEEVAL、Embedded Control Solutions Company は、

米国におけるマイクロチップ・テクノロジー社の登録商標で

す。

Silicon Storage Technology は、その他の国におけるマイクロ

チップ・テクノロジー社の登録商標です。

Analog-for-the-Digital Age、Application Maestro、BodyCom、

chipKIT、chipKIT ロゴ、CodeGuard、dsPICDEM、

dsP ICD EM. ne t、d s P IC wo rk s、dsSPE AK、E CAN、

ECONOMONITOR、FanSense、HI-TIDE、In-Circuit SerialProgramming、ICSP、Mindi、MiWi、MPASM、MPF、MPLAB認証ロゴ、MPLIB、MPLINK、mTouch、Omniscient CodeGeneration、PICC、PICC-18、PICDEM、PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、SQI、Serial QuadI/O、Total Endurance、TSHARC、UniWinDriver、WiperLock、ZENA、Z-Scale は、米国およびその他の国におけるマイクロ

チップ・テクノロジー社の登録商標です。

SQTP は、米国におけるマイクロチップ・テクノロジー社の

サービスマークです。

GestICとULPPは、その他の国におけるMicrochip TechnologyGermany II GmbH & Co. & KG ( マイクロチップ・テクノロ

ジー社の子会社 ) の登録商標です。

その他、本書に記載されている商標は各社に帰属します。

©2012, Microchip Technology Incorporated, Printed in theU.S.A., All Rights Reserved.

ISBN: 978-1-62077-059-7

マイクロチップ社製デバイスのコード保護機能に関して次の点にご注意ください。

• マイクロチップ社製品は、該当するマイクロチップ社データシートに記載の仕様を満たしています。

• マイクロチップ社では、通常の条件ならびに仕様に従って使用した場合、マイクロチップ社製品のセキュリティ レベルは、現

在市場に流通している同種製品の中でも最も高度であると考えています。

• しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解ではこうした手法は、

マイクロチップ社データシートにある動作仕様書以外の方法でマイクロチップ社製品を使用する事になります。このような行

為は知的所有権の侵害に該当する可能性が非常に高いと言えます。

• マイクロチップ社は、コードの保全性に懸念を抱くお客様と連携し、対応策に取り組んでいきます。

• マイクロチップ社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コー

ド保護機能とは、マイクロチップ社が製品を「解読不能」として保証するものではありません。

コード保護機能は常に進歩しています。マイクロチップ社では、常に製品のコード保護機能の改善に取り組んでいます。マイクロ

チップ社のコード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはそ

の他の著作物に不正なアクセスを受けた場合は、デジタル ミレニアム著作権法の定めるところにより損害賠償訴訟を起こす権利が

マイクロチップ社では、Chandler および Tempe ( アリゾナ州 )、Gresham ( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949:2009 認証を取得しています。マイクロチップ社の品質システム プロセスおよび手順は、PIC® MCU および dsPIC® DSC、KEELOQ®コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。さらに、開発システムの設計と製造に関するマイクロチップ社の品質システムは ISO 9001:2000 認証を取得しています。

QUALITY MANAGEMENT  SYSTEM CERTIFIED BY DNV 

== ISO/TS 16949 ==

Page 72: セクション 27. USB On-The-Go (OTG)ww1.microchip.com/downloads/jp/DeviceDoc/61126F_JP.pdfファ ディスクリプタ(BDT)の32ビット ベースアドレスの上位23 ビットを定義します。BDT

DS61126F_JP - p. 27-72 © 2013 Microchip Technology Inc.

北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel:480-792-7200 Fax:480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.com

アトランタDuluth, GA Tel:678-957-9614 Fax:678-957-1455

ボストンWestborough, MA Tel:774-760-0087 Fax:774-760-0088

シカゴItasca, IL Tel:630-285-0071 Fax:630-285-0075

クリーブランドIndependence, OH Tel:216-447-0464

Fax:216-447-0643

ダラスAddison, TX Tel:972-818-7423 Fax:972-818-2924

デトロイトFarmington Hills, MI Tel:248-538-2250Fax:248-538-2260

インディアナポリスNoblesville, IN Tel:317-773-8323Fax:317-773-5453

ロサンゼルスMission Viejo, CA Tel:949-462-9523 Fax:949-462-9608

サンタクララSanta Clara, CA Tel:408-961-6444Fax:408-961-6445

トロントMississauga, Ontario, CanadaTel:905-673-0699 Fax:905-673-6509

アジア / 太平洋

アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel:852-2401-1200Fax:852-2401-3431

オーストラリア - シドニーTel:61-2-9868-6733Fax:61-2-9868-6755

中国 - 北京Tel:86-10-8569-7000 Fax:86-10-8528-2104

中国 - 成都Tel:86-28-8665-5511Fax:86-28-8665-7889

中国 - 重慶Tel:86-23-8980-9588Fax:86-23-8980-9500

中国 - 杭州Tel:86-571-2819-3187 Fax:86-571-2819-3189

中国 - 香港 SARTel:852-2943-5100 Fax:852-2401-3431

中国 - 南京Tel:86-25-8473-2460Fax:86-25-8473-2470

中国 - 青島Tel:86-532-8502-7355Fax:86-532-8502-7205

中国 - 上海Tel:86-21-5407-5533 Fax:86-21-5407-5066

中国 - 瀋陽Tel:86-24-2334-2829Fax:86-24-2334-2393

中国 - 深圳Tel:86-755-8864-2200 Fax:86-755-8203-1760

中国 - 武漢Tel:86-27-5980-5300Fax:86-27-5980-5118

中国 - 西安Tel:86-29-8833-7252Fax:86-29-8833-7256

中国 - 厦門Tel:86-592-2388138 Fax:86-592-2388130

中国 - 珠海Tel:86-756-3210040 Fax:86-756-3210049

アジア / 太平洋

インド - バンガロールTel:91-80-3090-4444 Fax:91-80-3090-4123

インド - ニューデリーTel:91-11-4160-8631Fax:91-11-4160-8632

インド - プネTel:91-20-2566-1512Fax:91-20-2566-1513

日本 - 大阪Tel:81-6-6152-7160 Fax:81-6-6152-9310

日本 - 東京Tel:81-3-6880- 3770 Fax:81-3-6880-3771

韓国 - 大邱Tel:82-53-744-4301Fax:82-53-744-4302

韓国 - ソウルTel:82-2-554-7200Fax:82-2-558-5932 または 82-2-558-5934

マレーシア - クアラルンプールTel:60-3-6201-9857Fax:60-3-6201-9859

マレーシア - ペナンTel:60-4-227-8870Fax:60-4-227-4068

フィリピン - マニラTel:63-2-634-9065Fax:63-2-634-9069

シンガポールTel:65-6334-8870Fax:65-6334-8850

台湾 - 新竹Tel:886-3-5778-366Fax:886-3-5770-955

台湾 - 高雄Tel:886-7-213-7828Fax:886-7-330-9305

台湾 - 台北Tel:886-2-2508-8600 Fax:886-2-2508-0102

タイ - バンコクTel:66-2-694-1351Fax:66-2-694-1350

ヨーロッパ

オーストリア - ヴェルスTel:43-7242-2244-39

Fax:43-7242-2244-393

デンマーク - コペンハーゲンTel:45-4450-2828 Fax:45-4485-2829

フランス - パリTel:33-1-69-53-63-20 Fax:33-1-69-30-90-79

ドイツ - ミュンヘンTel:49-89-627-144-0 Fax:49-89-627-144-44

イタリア - ミラノ Tel:39-0331-742611 Fax:39-0331-466781

オランダ - ドリューネンTel:31-416-690399 Fax:31-416-690340

スペイン - マドリッドTel:34-91-708-08-90Fax:34-91-708-08-91

イギリス - ウォーキンガムTel:44-118-921-5869Fax:44-118-921-5820

各国の営業所とサービス

11/29/12