この記事では、STマイクロエレクトロニクス(以下、ST)の汎用32ビットマイコン「STM32G0シリーズ」*1)に搭載されているDMAを例に、その仕組みと使用例を紹介します。
DMAコントローラーはバスに接続されるため、バスアーキテクチャの概要を理解しておく必要があります。そのため、まずはマイコン全体のバスアーキテクチャについて解説し、続いてDMAコントローラーを搭載したマイコン構成例、DMAコントローラーの構成、DMA転送の使用方法について解説します。
*1)STM32G0シリーズ
Armコア搭載マイコンでは、AMBA2.0仕様に準拠したバスが使用されることが多く、AMBA2.0仕様には以下のバス仕様が規定されています。
前述のAHBを例に、バス上のコンポーネントについて説明します。
AHB上には、下記のコンポーネントが存在します。
AHBマスターは、バスマスターです。バスマスターは、アドレスと制御情報を出力し、読み取り/書き込み操作を開始できます。一度にバスをアクティブに使用できるのは1つのバスマスターだけです。バスを使用する際、バスマスターは後述するAHBアービタにバスの使用権を要求し、使用権を取得できたバスマスターのみがバスにアクセスできます。
AHBスレーブはバススレーブです。バススレーブは、指定されたアドレス空間範囲内の読み取り/書き込み操作に応答します。バススレーブはバスマスターにデータ転送の成功、失敗、待機を応答します。
AHBアービターは、バスアービターです。バスアービターは、一度に1つのバスマスターだけがバスにアクセスされることを保証します。複数のバスマスターからバスの使用権の要求があった場合、ラウンドロビン方式や、固定優先度方式に従ってそれぞれのバスマスターに順番に使用権を与え、バス使用時に競合が発生しないようにします。AHBには、バスアービターが1つだけ含まれています。
AHBデコーダーは、バスデコーダーです。バスデコーダーは、各転送のアドレスをデコードするために使用されます。また、アドレスに対応するスレーブに選択信号を与えます。AHBでは単一の集中デコーダーが使用されます。
Copyright © ITmedia, Inc. All Rights Reserved.