複数チャネル連続AD変換(DMA)アプリ【STM32のADC】

STM32マイコンのADCで複数チャネルのアナログ信号を連続で自動変換してメモリに取得する実用的なアプリです。完全に理解してぜひ活用してください。

めかのとろ

これまでは1つのチャネルのAD変換を扱ってきました。
ここではピンPA0とPA1に入力したアナログ電圧を読み込むために複数のチャネルをレギュラー変換グループに登録してからDMAによりメモリに転送するプログラムを解説します。

 2チャンネル分のアナログ変換値をDMAでメモリに変換する場合: 

  • AD変換値を格納する変数(メモリ)をチャネル数分準備する。
    2CHの場合は、ADCValue[0]ADCValue[1]の2個分。
  • DMA設定(DMA_AD1_Configuration関数)で格納変数のアドレス&ADValueを指定
  • DMA.BufferSize(バッファサイズ)にチャネル数2を指定
  • DMA.MemoryInc(メモリインクリメント)を有効に指定
めかのとろ

2チャンネル分のアナログ変換値を格納するメモリを配列で準備し、その先頭アドレスをDMA設定時に指定しておきます。

めかのとろ

DMAのバッファサイズを準備した配列と同じ数2に指定して、メモリインクリメントを有効にすると、自動的にADCのチャンネルに応じてメモリへ転送を繰り返します。