STM32H7 - DMAMux
ダイレクト･メモリ･アクセス・マルチプレクサ

1.0版

STM32H7 DMAリクエスト・マルチプレクサ (DMAMUX) のプレゼンテーションへようこそ。このモジュールの主な機能をカバーします。

1

2• DMAリクエスト・ルータ(DMAMux)は:DMAMux• ペリフェラルへのDMAリクエスト・ラインの割当て
DMA チャンルへシンク ペリフェラルからのリクエト…

概要• 同期入力のイベントと同期を転送するリクエスト• DMAリクエスト・カウンタとDMA用イベント･ジェネレータを使ったリクエスト・チェイニング

アプリケーション側のメリット••

自由度の高いDMAリクエスト・マッピングの選択
外部および内部からのDMAリクエスト管理

DMAMUXリクエスト・マルチプレクサは、STM32H7のペリフェラルとDMAコントローラの間でDMAリクエスト・ラインをルーティングすることができます。このルーティング機能は、プログラマブルなマルチチャネルDMAリクエスト・ライン・マルチプ
レクサによって確保されています。各チャネルは、DMAMUXの同期入力から、無条件に、またはイベントに同期して、固有のDMAリクエスト・ラインを選択します。また、DMAMUXは、入力トリガ信号のプログラマブル・イベントからのDMAリクエスト・ジェネレータとしても使用できます。

2

主な機能

3

• DMAリクエスト・ライン・マルチプレクサ• ペリフェラル･リクエストをDMAコントローラ･チャネルに柔軟にマッピング可能• 最大107本のDMAリクエスト・ライン入力• 個別のイネーブル･ビットによる同期動作モード• 最大16個の同期入力セレクタ• 選択された同期入力のイベント・オーバーラン・フラグ• DMAリクエスト・ジェネレータ・チャネル:• 非同期イベントでのDMAリクエスト・ジェネレート
• 最大32個のDMAリクエスト・トリガ入力セレクタ• 選択されたDMAリクエスト・トリガ入力のイベント・オーバーラン・フラグ

DMAMUXの主な特徴を紹介します。


最大16チャネルのプログラム可能なDMAリクエスト・ライン・マルチプ
レクサ出力
最大8チャネルのDMAリクエスト・ジェネレータ
最大107本のDMAリクエスト・ライン
同期動作モード

DMAリクエスト・ジェネレータのチャンルごとに

DMAリクエスト・トリガ入力セレクタ
DMAリクエスト・カウンタ
選択されたDMAリクエスト・トリガ入力のイベント・オーバーラン・フラグ

DMAリクエストごとのライン・マルチプレクサ・チャネル出力




ペリフェラルからの最大107本の入力DMAリクエスト・ライン
1つのDMAリクエスト・ライン出力
同期入力セレクタ
DMAリクエスト・カウンタ
選択された同期入力のイベントオーバーラン・フラグ
DMAリクエスト・チェイニングのための1つのイベント出力
34

DMAリクエスト・ライン・マルチプレクサ
チャネルx
チャネルx
チャネル xDMAリクエストジェネレータDMA_CHx_Req
シンク

DMA_CHx_Evt

チャネル 0チャネル 1DMAコントローラへ

DMAリクエスト
トリガ入力

ペリフェラル
リクエスト

DMAMuxブロック図

チャネル N

同期入力

DMAMUXリクエスト・マルチプレクサは、STM32H7のペリフェラルとDMAコントローラの間でDMAリクエスト・ラインをルーティングすることを可能にします。
ルーティング機能は、プログラマブルなマルチチャネルDMAリク
エスト・ラインマルチプレクサによって確保されています。
各チャネルは、無条件に、またはイベントに同期して、DMAMUXの同期入力から固有のDMAリクエスト・ラインを選択します。
また、DMAMUXは、入力トリガ信号のプログラム可能なイベントからのDMAリクエスト・ジェネレータとしても使用できます。
ペリフェラルからのDMAリクエスト・ラインおよびDMAMUXリクエスト・ジェネレータ出力へのDMAMUXリクエスト・マルチプレクサ入力の割り当て、DMAコントローラ・チャネルへのDMAMUXリクエ
スト・マルチプレクサ出力の割り当て、内部および外部信号へのDMAMUX同期およびトリガ入力の割り当ては、STM32H7の実装によって異なります（STM32H7のリファレンス・マニュアルをご参照ください）。

4

DMAMux動作モード

5

無条件動作モード• 無条件で動作するモードでは、1つの入力DMAリクエストのマルチプレクサ・チャネルの出力への接続は、以下の方法で選択される• チャネル・コントロール・レジスタ（DMAMUX_CxCR）のDMAREQ_IDフィールドにあるプログラムされたリクエストID番号• ペリフェラルのリクエスト・ラインごとに、IDが割り当てられている• DMAREQ_ID = 0x00は、DMAリクエスト・ラインが選択されていないことを示す• DMAMUXチャネルを設定した後、そのチャネルがルーティングされる
DMAコントローラ・チャネルを設定することが可能• 同じDMAリクエスト・ソースを選択するために、2つの異なるDMAMUXチャネルを構成することは出来ない

DMAMUXリクエスト・マルチプレクサは、無条件に動作するモードにおいて、ペリフェラルとDMAチャネル間のDMAリクエスト・ラインのルーティングを可能にします。マルチプレクスが設定されていると、DMAリクエスト/アック・ノウレッジ制御信号の実際のルーティングが保証されます。
マルチプレクサ・チャネルの出力への1つのペリフェラル・リクエストの接続
は、チャネル・コントロール・レジスタ（DMAMUX_CxCR）のDMAREQ_ID
フィールドにプログラムされたリクエストIDによって選択されます。


ペリフェラルのリクエスト・ラインごとに、IDが割り当てられています。
DMAREQ_ID = 0x00は、DMAリクエスト・ラインが選択されていないことを示します。

DMAMUXチャネルを設定した後、そのチャネルがルーティングされる、DMAコントローラ・チャネルを設定することができます。同じDMAリクエス
ト・ソースを選択するために、2つの異なるDMAMUXチャネルを構成することはできません。

5

DMAMux動作モード

6

同期動作モード・• 同期動作モードでは、入力DMAリクエストのマルチプレクサ・チャネルの出力への接続が条件となる• 制御レジスタのSYNC_IDフィールドで選択された同期入力イベント• 同期イベントは、立ち上がりエッジ、立ち下がりエッジ、または選択された入力のいずれかのエッジ• また、内蔵のDMAリクエスト・カウンタ• 同期イベントの後、各DMAリクエストはDMAリクエスト・カウンタをデクリメント
そのアンダーランでは:• DMAリクエスト・カウンタは、コントロールレジスタのNBREQフィールドの値で自動的にロードされる• そして、DMAリクエスト・ラインはマルチプレクサ・チャネルの出力から切り離される

各DMAリクエスト・ライン・マルチプレクサは、対応するマルチプレクサ・チャネル制御レジスタ(DMAMUX_CxCR)の同期化イネーブル(SE)ビットを設定することで、個別に同期動作モードに設定できます。
DMAリクエスト・ルータには複数の同期入力があります。同期入力は、すべてのマルチプレクサ・チャネルに並列に接続されています。
マルチプレクサ・チャネルが同期動作モードの場合、選択された入力DMAリクエスト・ラインのマルチプレクサチャネルの出力への有効な接続は、選択された同期入力上のイベントと内蔵DMAリクエスト・カウンタ上のイベントによって条件付けられます。
同期イベントが発生すると、選択されたDMAリクエスト・ラインがマルチプレクサ・チャネルの出力に接続されます。この時点から、選択されたDMAリクエスト・ラインの各サービスDMAリクエスト(トランジション1-0)がDMAリクエスト・カウンタをデクリメントします。
アンダーラン時には、DMAリクエストが自動的にロードされ、DMAリクエス
ト・ラインはマルチプレクサ・チャネルの出力から切断されます。したがって、同期イベント後にマルチプレクサ・チャネルの出力に転送されるDMAリクエ
ストの数は、NBREQフィールドの値に1を加算した値となります。

6

DMAMux同期モード

7

DMAリクエスト・ペンディング選択されたDMA
リクエスト・ライン

出力DMA
リクエスト・ライン

同期イベント: 出力に接続された入力ライン

同期信号入力カウンタ･アンダーラン : 入力ラインが出力から切断

DMAリクエスト・カウンタ

4

3

2

10

4

DMAイベント出力
イベント生成 : 同期イベントとして使用可能

DMAMUXチャネルを同期モードで設定した場合の動作は以下のようになります。
リクエスト・マルチプレクサ入力(ペリフェラルからのDMAリクエス
ト)はアクティブになることができますが、同期信号を受信するまでDMAMUXリクエスト・マルチプレクサ出力には転送されません。
同期イベントを受信すると、リクエスト・マルチプレクサはその入出力を接続し、すべてのペリフェラルのリクエストを転送します。
転送される各DMAリクエストは、リクエスト・マルチプレクサ・カウンタ（ユーザーがプログラムした値）をデクリメントします。カウンタがゼロになると、DMAコントローラとペリフェラルとの接続が切断され、新しい同期イベントを待ちます。
カウンタの各アンダーランに対して、リクエスト・マルチプレクサラインは、第2のDMAMUXラインと同期するためのオプションのイベントを生成することができます。一部の低消費電力シナリオでは、同じイベントを使用して、CPUの介入なしにシステムを停止モードに戻すことができます。
同期モードは、例えばタイマなどでデータ転送を自動的に同期させたり、ペリフェラルイベントで転送をトリガしたりするために使用することができます。
7同期モードの検討

8• 同期イベント（エッジ）は、エッジの後の状態が2HCLKクロック期間以上安定している場合に検出• DMAMMUXチャネル･コントロール･レジスタ（DMAMUX_CxCR）への書き込み後、3HCLKサイクルの間、同期イベントがマスクされる

同期イベント(エッジ)は、エッジの後の状態がAHBの2クロック期間以上安定している場合に検出されます。
DMAMUX_CxCRコントロールレジスタへの書き込み後、3HCLKサイクルの間、同期イベントはマスクされます。

8

DMAMux動作モード

9

DMAリクエスト・ライン・マルチプレクサのイベント発生モード• DMAリクエスト・ライン・マルチプレクサの各チャネルは、イベント生成の動作モードに個別に設定することが可能• DMAMUXチャネル・コントロール・レジスタの個別イネーブルビット（EGEビット）• DMAMUXチャネルは、そのDMAリクエスト・カウンタが対応するNBREQフィールドの値で自動的にリロードされると、イベント（パルス）を生成• DMAMUXチャネルのイベント出力を、他のチャネルの同期イベントまたはトリガとして使用可能• これにより、異なるDMAチャネルでのリクエスト・チェイニングが可能になる有効にすると、DMAリクエスト・カウンタが対応するNBREQフィールドの値で自動的に再ロードされるときに、マルチプレクサ・チャネルがイベント(パルス)を生成します。
イベントジェネレータは、対応するマルチプレクサ・チャネルのコントロールレジスタにEGEビットを設定することで有効になります。

9

DMAMuxイベント・ジェネレート･モード

10

選択された
DMAリクエストライン
出力DMA
リクエスト・ライン
リクエスト・カウンタのオートリロード

DMAリクエストカ
ウンタ

32

10

32

1032

10

DMAイベント出力
イベント発生：同期イベントとして使用可能

転送ごとにリクエスト・カウンタがデクリメント

DMAMUXチャネルがイベント・ジェネレートモードの場合、DMAリ
クエスト・カウンタが自動的にリロードされるとイベント（パルス）を生成します。リクエスト・カウンタは、DMAリクエストの実行とともにデクリメントされます。
DMAMUXチャネルのイベント出力は、他のチャネルの同期イベントやトリガとして使用することができます。

10

DMAMux動作モード

11

DMAリクエスト・ジェネレータの動作モード• リクエスト・ジェネレータ・チャネルが有効な場合、トリガ・イベントに応じてDMAリクエストを生成することが可能• DMAジェネレータ・チャネルの出力は、DMAリクエスト・ライン・マルチプレクサの入力へ移動• 各ジェネレータ・チャネルは、それぞれ個別のコンフィギュレーション・レジスタを持つ• SIG_IDフィールドは、ジェネレータのリクエスト・トリガ入力に対応• GNBREQフィールドは、トリガイベントの後に生成するDMAリクエストの数に対応• GPOLフィールドは、トリガ入力のアクティブエッジに対応
トリガイベントは、トリガ入力の立ち上がりエッジ、立ち下がりエッジ、またはいずれかのエッジのいずれかDMAリクエスト・ジェネレータは、DMAリクエスト・トリガ入力のトリガ・イベントに応じてDMAリクエストを生成します。
DMAリクエスト・ジェネレータは複数のチャネルを持っています。
DMAリクエスト・トリガ入力は、すべてのチャネルに並列に接続されています。
DMAジェネレータ・チャネルの出力は、DMAリクエスト・ライン・マルチプレクサの入力に送られます。
各DMAリクエスト・ジェネレータ・チャネル（以下、ジェネレータチャネル）には、イネーブルビットがあります。
ジェネレータ・チャネルxのDMAリクエスト・トリガ入力は、対応するジェネレータ・チャネルのコントロール・レジスタのSIG_IDフィールドで選択されます。
DMAリクエスト・トリガ入力のトリガ・イベントは、立ち上がりエッジ、立ち下がりエッジ、またはいずれかのエッジが可能です。アクティ
ブエッジは、対応するジェネレータ・チャネルのコントロール・レジ
スタのPOLフィールドで選択します。

11

DMAリクエスト・ジェネレート・モード

12

DMAコントローラがリクエストを承認（シングル転送終了）

リクエスト・ジェネレータ
出力

出力DMAリクエストライン
カウンタのオートリロードを要求：新たなトリガを待つ
リクエスト・ジェネレート
カウンタ

32

1032

103

DMAトリガ入力
アクティブ･トリガイベント･エッジ 転送ごとにジェネレータ・リクエスト・カウンタが減少

DMAMUXをDMAリクエスト・ジェネレート・モードで使用すると、以下のようなペリフェラルDMAリクエストとは異なるイベントでDMA転送を実行することができます。
外部割込みイベント、コンパレータ出力、RTCウェイクアップ、その他のイベント(STM32H7リファレンスマニュアルをご参照ください。)
プログラム可能なDMAリクエスト・カウンタにより、1回のトリガで生成するリクエストの数を設定することができます。

12

DMAリクエスト・ジェネレータ・チャネル

13• トリガイベントが発生すると、対応するジェネレータ･チャネルは、その出力にDMAリクエストの生成を開始• トリガ･イベントの後、サービスされた各DMAリクエストは、DMAリクエスト・カウンタ
をデクリメント、そのアンダーランで• DMAリクエスト・ジェネレータ・カウンタは、ジェネレータ・コントロール・レジスタのGNBREQフィールドの値で自動的にロード• そして、ジェネレータ･チャネルはDMAリクエストの生成を停止

トリガイベントが発生すると、対応するジェネレータ・チャネルは、その出力にDMAリクエストの生成を開始します。生成されたDMAリクエスト（1から0への遷移）ごとに、内蔵のDMAリクエスト・カウンタが減少します。
アンダーランになると、DMAリクエスト・カウンタには、対応するジェネレータチャネルのコントロールレジスタのGNBREQフィールドの値が自動的にロードされ、ジェネレータチャネルはDMAリクエストの生成を停止します。
したがって、トリガイベント後に生成されるDMAリクエストの数は、GNBREQフィールドの値に1を加えたものになります。

13

DMAリクエスト・ジェネレートの検討

14• トリガ･イベント（エッジ）は、エッジ後の状態が2HCLKクロック期間以上安定している場合に検出される• DMAMMUXリクエスト・ジェネレータ・コントロール･レジスタ（DMAMUX_RGxCR）に書き込んだ後、3HCLKサイクルの間、トリガ･イベントがマスクされるトリガイベント(エッジ)は、エッジの後の状態がAHBの2クロック期間以上安定している場合に検出されます。
DMAMUX_RGxCRコントロールレジスタに書き込んだ後、3HCLKサイクルの間、トリガイベントがマスクされます。

14

オーバーランと割込み

15• 割込みを生成可能• 各DMAリクエスト・ライン・マルチプレクサ・チャネルの同期イベント･オーバーラン• DMAリクエスト・カウンタの値がNBREQフィールドの値よりも小さい間に、新たな同期イベントが発生した場合に発生• ステータス･レジスタの同期オーバー･ランフラグSOFxを設定• 同期オーバーラン割込みイネーブル･ビットSOIEが設定されている場合に割込みを発生• 各DMAリクエスト・ジェネレータ・チャネルのトリガ・イベント・オーバーラン• DMAリクエスト・カウンタの値がGNBREQフィールドの値よりも小さい間に、新たなDMAリクエスト・トリガイベントが発生した場合に発生• ステータス･レジスタのトリガ・イベント・オーバーラン・フラグOFxを設定• DMAリクエスト・トリガ・イベントのオーバーラン割込みイネーブル･ビットOIEがセットされている場合に割り込みを発生

DMAリクエスト・カウンタの値がGNBREQフィールドの値よりも小さい間に新しいDMAリクエスト・トリガイベントが発生した場合、対応するジェネレータチャネルのステータスレジスタ
DMAMUX_RGSRにトリガ・イベント・オーバーランフラグOFxが設定されます。
オーバーラン・フラグOFxは、対応するDMAリクエスト・ライン・マルチプレクサ・チャネルのDMAMUX_RGCFRレジスタの関連するクリアビットCOFxを設定することでリセットされます。
DMAリクエスト・トリガのオーバーランフラグを設定すると、対応するジェネレータチャネルのコントロールレジスタでDMAリ
クエスト・トリガ・イベントのオーバーラン割込みイネーブルビットOIEが設定されている場合には、割込みが発生します。

15

DMAリクエスト・ルータの実装

16• 本製品は、DMAリクエスト・ルーターの2つのインスタンスを統合• DMA1およびDMA2のDMAMux1（D2ドメイン）• BDMAのDMAMux2（D3ドメイン）
DMAMux1

DMAMux2

DMAリクエスト・ライン・マルチプレクサ･チャネルの数

168

DMAリクエスト・ジェネレータのチャネル数

88

ペリフェラルDMAリクエスト入力数

107

12

DMAリクエスト・トリガ入力数832

同期入力の数

816

特徴

STM32H7マイクロコントローラは、DMAリクエスト・ルータの2つのインスタンスを統合しています。


D2ドメインのDMA1およびDMA2用のDMAMUX1
D3ドメインのBDMA用DMAMUX216

DMAMUX入力の例RQ ID

リソース

RQ ID

リソース

RQ ID

リソース

1

Req. Gen. ch040

SPI2_TX

79

UART7_RX

2

Req. Gen. ch1

41

USART1_RX

80

UART7_TX

3

Req. Gen. ch2

42

USART1_TX

81

UART8_RX

4

Req. Gen. ch3

43

USART2_RX

82

UART8_TX

5Req. Gen. ch444

USART2_TX

83

SPI4_RX

6

Req. Gen. ch545

USART3_RX

84

SPI4_TX

7Req. Gen. ch646

USART3_TX

85

SPI5_RX

8Req. Gen. ch747

TIM8_CH1

86

SPI5_TX

9

ADC148

TIM8_CH287

SAI1_A10

ADC249

TIM8_CH3

88

SAI1_B…
39

SPI2_RX…
78

HASH_IN

17…
115

ADC3

これは、DMAMUX入力の例です。DMAMUX入力、同期イベン
ト、リクエスト・ジェネレータ・トリガの詳細なリストについては、
STM32H7xxリファレンス・マニュアルをご参照ください。

17

割込み
割込みイベント

18

説明SOFxDMAリクエスト・ライン･マルチプレクサのチャネルxで同期イベントのオーバーランが検出されたときに設定

OFx

DMAリクエスト・ジェネレータのチャネルxでトリガ・イベント・オーバーランが検出された場合に設定割り込みは以下の場合に発生します。
• 各DMAリクエスト・ライン・マルチプレクサ・チャネルでの同期イベント・オーバーラン• 各DMAリクエスト・ジェネレータ・チャネルでのトリガ・イベント・オーバーラン
いずれの場合も、チャネルごとに個別の割り込みイネーブルビットが用意されています。

18

関連ペリフェラル

19• 詳細は、この周辺機能にリンクされているトレーニングをご参照ください。
• STM32H7 DMAコントローラ(DMA)• STM32H7 基本DMAコントローラ(BDMA)

詳しくは、この周辺機能にリンクされているこれらのトレーニングをご参照ください。



STM32H7 DMAコントローラ(DMA)
STM32H7 基本DMAコントローラ(BDMA)

19