Skip to content

DMAのモードとリクエスト

DMAとは?

DMA(Direct Memory Access)はCPUを介さずにメモリ間やペリフェラル間でデータを転送する機能。 これによりCPUの負荷を軽減しつつ高速なデータ転送が可能になる。

DMAのモード

DMAにはいくつかの転送モードがあり、用途に応じて使い分ける。

1. 通常モード(Normal Mode)

  • データ転送が完了するとDMAは自動で無効化される。
  • 1回の転送が終わるたびに再設定が必要。
  • 用途: 単発のデータ転送(ADCの単発測定など)。

NOTE

I2CのHALライブラリはNormal Modeのみ対応している。 Circular Modeの動作は保証されない。 各機能については各マイコンの公式リファレンスを参照すること。

2. 循環モード(Circular Mode)

  • 転送が完了すると自動で次の転送が始まる。
  • 転送を継続して行えるため、リアルタイム処理に向く。
  • 用途: ADCの連続測定、UARTの連続受信など。

DMAのリクエスト

DMAは特定のペリフェラル(UART、SPI、ADCなど)からのリクエストでデータ転送を開始する。

ペリフェラルリクエスト

  • 各ペリフェラル(ADC、UART、SPIなど)はデータ送受信時にDMAへリクエストを送る。
  • DMAが有効になると、自動でメモリとの間でデータ転送を行う。