STM32H7 - MDIOS
マネージメント･データ･インプット / アウトプット･スレーブ･インタフェース

1.0版

こんにちは、STM32マネジメントデータインプット/アウトプット
スレーブコントローラ、MDIOSコントローラモジュールのプレゼンテーションへようこそ。これは、ホストデバイスと管理データを交換するために使用されるコントローラの主な機能をカバーしています。

1

概要

2

• MDIOSはデバイス･マネｰジメントインタフェースを提供• IEEE RFC802.3 第22章に準拠• 32x16ビット幅の読取り/書込みレジスタ

アプリケーション側の利点• 構成可能なスレーブポート･アドレス• 最大20MHzの速度をサポート• MDIOSレジスタの書込みと読取りの割込み• プロトコル･エラーチェック• 必要なピンは2本のみ• デバイス･パラメータをホストと交換• STM32 STOPモードでも動作

STM32製品に内蔵されたMDIOSコントローラは、ホストがSTM32の構成を管理できるデバイスマネジメントインタフェー
スを提供します。それは32x16ビットのワイドレジスタを提供しています。アプリケーションは、デバイスの構成を管理するために、ピン数の少ない標準的なインタフェースを利用することができます。通信速度は20MHzにも上がります。

2ブロック図3

MDIOS
非同期ウェイクアップ
リクエスト
割込みリクエスト
スレーブ
APB

APBインタ
フェース
コントロー
ル

MDIOSアダプタ
フレームデコーダ

DIN
レジスタ

データ受信

DOUT
レジスタ

データ送信

PCLK

MDIOS_MDCMDIOS_MDIOPCLKクロック周波数はMDCクロック周波数より1.5倍以上にする必要がある

MDIOSコントローラは、ホストとのインターフェイスに必要なIEEE RFC 802.3 章 22で指定されたすべての機能を提供します。
それは「MDIOSアダプタ」と「アドバンスドペリフェラルバスまたはAPBインタフェース」で構成されています。
「MDIOSアダプタ」は、フレームデコードとチェック、非同期ウェイクアップと割込み生成などの機能を提供し、「APBイン
タフェーイス」は、コントロールレジスタとステータスレジスタ、データインレジスタとデータアウトレジスタのデータ、同期割込みリクエストを管理します。
MDIOSコントローラでは、APBクロック(PCLK)、“APBインタ
フェース”用の2つのクロックと、“MDIOSアダプタ”のバスク
ロックMDIOS_MDC 2つ使用可能です。
PCLKクロック周波数は、MDCクロック周波数よりも少なくとも1.5倍速くなければならないことに注意してください。MDC
ビットレートが20MHzの場合、PCLKは少なくとも30MHz以上実行する必要があります。

3フレーム･フォーマット

4

サポートされているフレーム･フォーマット
開始
プリアンブル(32ビット値は1)

0

書込み
10

1

書込みフレーム
ターンアラウンド
PHYアドレス

A4 A3 A2 A1 A0

レジスタアドレス10

レジスタデータ(ホストからデバイス)

D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
R4 R3 R2 R1 R0

読取りフレーム
プリアンブル(32ビット値は1)

開始

読取り

01

10

末尾
ターンアラウンド

ターンアラウンド
PHYアドレス

A4 A3 A2 A1 A0

レジスタアドレス

Z 0

レジスタデータ(デバイスからホスト)

Z

D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
R4 R3 R2 R1 R0

MDIOフレーム形式は、アクティブなMDCクロックとともにMDIOピンを介して送信されます。クロックはフレーム形式の外側で停止できます。
ホストは、MDCクロック信号の立下がりエッジでMDIOデータを送信します。

フレーム開始の前に、MDIO信号をハイレベルにした32ビットからなるプリアンブルがクロックインされます。
フレーム開始は2ビットの値(0b01)で符号化されます(発音は"ゼロ""ワン"です。"0b"については触れないでください)。
フレーム動作は2ビットのフィールドで選択されます。0b01はレジスタの書き込み、0b10はレジスタの読出しを意味します。
その後、MDIOスレーブのデバイスアドレスとレジスタアドレスが送信されます。最大32個のデバイスレジスタをアドレス指定できます。
続いて，書込みフレームでは，ホストは2ビットのターンアラウンドコード（0b10）に続いて16ビットのレジスタデータを送信します。
ホストが読出しコマンドを発行すると、最初のターンアラウンドサイクルでMDIOの方向を入力に変更し、スレーブデバイスは2番目のサイクルでMDIOを'0'にドライブします。
スレーブはMDCクロック信号の立ち上がりエッジでデータを出力します。
2回目のターンアラウンドビットに続いて、スレーブデバイスはレジスタデータを送信し、終了すると後続のターンアラウンド期間で再びMDIOの方向を入力に変更します。

4

フレーム処理5

プリアンブル検出• 各フレーム前の32ビット･プリアンブル• スレーブフレームの同期に使用

プリアンブル(32ビットの値1)

0

1

0

1

PHYアドレス

レジスタアドレス10

レジスタデータ(ホストからデバイス)

この機能を有効にすると，MDIOSはMDIOインタフェースに入力されるプリアンブルを監視します。
MDIO上の少なくとも32ビットは、有効なプリアンブルを検出するために、値'1'で受信される必要があります。これにより、スレーブデバイスはMDIOバスと同期できます。
同期化後は、受信フレームの後に32ビットプリアンブルが必要になります。
MDIOSが同期された後にのみ、受信したフレーム間のプリアンブルエラーはPERFビットによって報告されます。
MDIOSがMDIOインタフェースと同期されると、プリアンブルチェックはDPCビットによって無効にされ、ホストはプリアンブルなしでフレームを送信できます。

5

フレーム処理6

開始コンディションの検出• 4ビット･フレーム開始• フレーム開始とフレーム操作(書込みまたは読取り)の検出

プリアンブル(32ビットの値1)0101PHYアドレス

レジスタアドレス10

レジスタデータ(ホストからデバイス)

MDIOビットが'0'に設定されると，開始条件が検出されます。

有効な開始コンディションは、書込みフレームでは0b0101、読出しフレームでは0b0110です。
開始コンディションのエラーはSERFビットで報告されます。
開始コンディションは、有効なプリアンブルが検出された場合、またはプリアンブル検出が無効になっている場合にのみ、MDIOSによって処理されます。

6

フレーム処理

7

スレーブPHY（物理）アドレスの検出• 5ビット･スレーブPHY（物理）アドレス• 複数のデバイスが存在する可能性があるため、フレームが正しいデバイスをアドレスしているかどうかを判断することが可能

プリアンブル(32ビットの値1)0101PHYアドレス

レジスタアドレス10

レジスタデータ(ホストからデバイス)

PHY（物理）アドレスにより、同じMDIOバス上の異なるデバイスにフレームを送信することができます。
MDIOデバイスのスレーブアドレスは、MDIOSPORT_ADDRESSレジスタにプログラムされます。

一致するPHY（物理）アドレスを持つフレームを受信すると、そのフレームはデバイスによってさらに処理されます。
異なるPHY（物理）アドレスを持つフレームは廃棄されます。
PHY（物理）アドレスは、有効な開始条件が検出されたときにのみ、MDIOSによって処理されます。

7

フレーム処理8

スレーブ･レジスタ･アドレス• 5ビット･スレーブ･レジスタ･アドレス• 32スレーブ･デバイス･レジスタの1つにアクセス可能

プリアンブル(32ビットの値1)

0

1

0

1

PHYアドレス

レジスタアドレス10

レジスタデータ(ホストからデバイス)

レジスタアドレスは、ホストが32個のスレーブレジスタの1つにアクセスして、書込みまたは読出しを行うためのものです。
レジスタアドレスは、フレームのPHY（物理）アドレスが一致した場合にのみ、デバイスMDIOSで処理されます。
MDIOSが実装するレジスタが32未満のSTM32デバイスでは、ホストが実装されていないレジスタに書き込んだ場合、データが失われ、読み取り時に‘0’が返されることに注意してください。

8フレーム処理

9ターンアラウンド• ターンアラウンド･フィールド• 書込み時、ホストは0b10を送信• 読出し時、ホストはMDIOラインを入力、スレーブを出力として設定し、0b0を設定

プリアンブル(32ビットの値1)

0

1

0

1

10

PHYアドレス

レジスタアドレス1
Z 00

レジスタデータ(ホストからデバイス)
レジスタデータ(デバイスからホスト)

Z

ホストがスレーブからデータを読取る場合:• ターンアラウンドフィールドは、読出しフレームにおいて、MDIOラインをホストからスレーブに引き渡す際に使用されます。
• ターンアラウンド時間は1½サイクルしかありません。1½サイクルはホストがMDIOピンを入力に切り替え、1サイクルはスレーブがMDIOを'0'でドライブするために使用されます。リードフレームにはターンアラウンドエラーは発生しません。
ホストがスレーブにデータを書込む場合:• ホストは代わりに0b10コードを送信します。ターンアラウンド・
コード・エラーは、TERFビットによって報告されます。
• ターンアラウンドフィールドは、フレームの物理アドレスが一致する場合にのみ、MDIOSデバイスによって処理されます。

9

フレーム処理10

レジスタ･データ• 16ビット･レジスタ･データ• 書込み時に、データはホストからスレーブに送信• 読取り時に、データはスレーブからホストに送信

プリアンブル(32ビットの値1)

0

1

0

1

10

PHYアドレス

レジスタアドレス1
Z 00

レジスタデータ(ホストからデバイス)
レジスタデータ(デバイスからホスト)

Z

ホストから受信したMDIOデータは，アドレス指定されたMDIOSレジスタに書込まれます。
MDIOSが有効な場合、MDIOSはWRF(n)割込みを発生させ、デバイスをストップモードからウェイクアップさせることもできます。
受信したデータは，書込みフレームターンアラウンドコードが有効な場合にのみ，MDIOSデバイスによって処理されます。
ホストから要求されたMDIOデータは、アドレス指定されたMDIOSレジスタから読み出されます。
MDIOSが有効になると、RDF(n)割り込みが発生し、デバイスをSTOPモードからウェイクアップさせることができます。

10

フレーム処理11

トレーリング･ターン･アラウンド• トレーリング・ターン・アラウンド・フィールド• 読取り時に、ホストはMDIOラインを出力として設定し、スレーブを入力として設定

プリアンブル(32ビットの値1)

0

101

10

PHYアドレス

レジスタアドレス1
Z 00

レジスタデータ(ホストからデバイス)
レジスタデータ(デバイスからホスト)

Z

後続の（トレーリング）ターンアラウンドフィールドは、スレーブからホストに戻ってMDIOラインを渡すために、読取りフレーム内にのみ存在します。
詳細には、トレーリング・ターン・アラウンド・フィールドは1/2サイクルの長さしかなく、スレーブがMDIOピンを入力モードに切り替えるために使用します。

11

MDIOレジスタ12

レジスタ･マネｰジメント• 32の16ビット･ワイド･レジスタ

WRF[31:0]

16ビット幅• 32 MDIO書込みレジスタ• MDIOホストによって書き込まれる• APB経由のスレーブ･デバイスCPUによって読取られる

ライトフラグMDIOS_DIN[31:0]• 32 MDIO読出しレジスタ• APB経由のスレーブ･デバイスCPUによって書込まれる
MDIOS_DOUT[31:0]• MDIOホストによって読み取られる
RDF[31:0]

32レジスタ

DINレジスタ

MDIO受信データ

16ビット幅32レジスタ

DOUTレジスタ

リードフラグ

MDIO送信データ

Registers

MDIOSでは、書込みと読出しのレジスタが別々に用意されています。
書込みレジスタは，APBバスを介してMDIOホストが書込み，スレーブ機器のCPUが読出します。
読取りレジスタは，スレーブデバイスのCPUがAPB経由で書込み，MDIOホストが読出します。

各書込み/読取りレジスタには，割込みフラグWRF[31:0]およびRDF[31:0]が設定されており，MDIOホストがレジスタにアクセスしたときに割込みを発生させ，スレーブデバイスをストップモードからウェイクアップさせることができます。
DOUT[n]レジスタにDIN[n]データを反映させるためには，デバイスのCPUがAPBバスを介してデータをコピーする必要があります。
WRF[31:0]フラグは，MDIOホストによるライトレジスタの更新を検出するために使用することができます。デバイスCPUは，MDIOホストがDOUTレジスタを再び読出す前に，（32ビットプリアンブル＋4ビット開始コンディション＋5ビットPHY（物理）アドレス＋5ビットレジスタアドレス）MDCクロック分の時間をかけてデータをコピーします。
12

MDIOS割込み
割込みイベント13

説明

WRF[31:0]

MDIOレジスタ書込みイベント

RDF[31:0]

MDIOレジスタ読取りイベント

PERF

プリアンブルエラーの検出

SERF

開始コード･エラーの検出

TERF

コード･エラーを回避するフレームの書込み

MDIOSの割込みイベントの概要を説明します。
MDIOホストによるレジスタアクセスは，レジスタの書込みにはWRF[31:0]ビット，レジスタの読出しにはRDF[31:0]ビットで通知されます。
フレーム転送エラーは、PERF、SERF、TERF割り込みイベントで通知されます。

13

低電力モード
モード

14

説明

RUN

アクティブ

SLEEP

アクティブ
ペリフェラルの割込みにより、CPUはSLEEPモードを終了(D)STOPアクティブ
ペリフェラルは、デバイスをウェイクアップすることが可能(D)STANDBY

パワーダウン
ドメインおよびシステムのSTANDBYモードを終了した後に、ペリフェラルを再初期化する必要がある

ここでは、特定の低電力モードでの周辺機器の状態の概要を示します。デバイスは、ドメインまたはシステムのSTANDBYモードで通信を実行できません。MDIOSコント
ローラを無効にするか、ドメインまたはシステムをSTANDBYモードに切り替える前に、すべての転送が完了していることを確認することが重要です。

14アプリケーション例

15• MDIOバスは、ステーション管理デバイス(STA)とMDIO管理可能デバイス(MMD)間で制御情報とステータス情報を転送するために使用される• 一般的な使用方法:• MACレイヤを含むSTA• PHY層を含むMMD

STA
MDIO
ホスト

MDIO
MDC

MMD
MDIO
スレーブ

MMD
MDIO
スレーブ

ステーション管理デバイス(STA)とMDIO管理可能デバイス(MMD)間の通信に使用されるMDIOインタフェースの例を次に示します。
通常、MDIOバスは、物理層(PHY)バスと並行してイーサネットMACと物理層(PHY)の間で使用され、ケーブルの接続もしくは切断、イーサネットリンクの速度、CSMA/CDまたは全二重リンクの使用法、自動クロスオーバーなどを検出するために使用されます。

15

関連するペリフェラルおよびソフトウェア16• これは、MDIOSコントローラに関連するペリフェラルリストです
必要に応じて、これらのトレーニングを参照してください• リセットとクロック･コントロール(RCC)• 割込み(NVIC)• 拡張割り込みおよびイベント・コントローラ(EXTI)• 汎用入力/出力(GPIO)MDIOインタフェースに関連するペリフェラルの一覧を次に示します。MDIOSコントローラを正しく設定して使用するには、これらのペリフェラル間のすべての関係をユーザーが理解している必要があります。

16