📶

Q2557-11:ハードウェアFFT内蔵マイコンでスペアナを作る・ハード解説

に公開
2026/05/23

今回のトピック

ロームのマイコン「ML63Q2500」シリーズのハードウェアFFTを使い、役に立つかわからないオーディオ帯域のスペアナを作ってみました。マイコンの応用例とでもいうお遊びの代物です。ハードウェアとソフトウェアで2部に分けました。今回はハードウェア編です。
https://youtu.be/u3YaAkrQtn4

ハードウェアの仕様

お遊びなので部品はブレッドボードに実装しています。
マイコンは電源ICと水晶振動子をセットにしてブレッドボードに刺さる小さな基板を作りました。

入力

  • アナログ入力、オペアンプでVcc/2オフセットと10倍ゲインを構成
  • 入力フィルタ:HPF:CR一次カットオフ159Hz、LPF:CR一次カットオフ15.9kHz
  • ADC:マイコン内蔵の12bit SAR ADC

サンプリング周波数を可変にしたので、申し訳程度の緩いローパスフィルタを入れてあります。

出力

  • DAC:ディスクリート 8bitパラレル R-2Rラダー
  • 表示デバイス:オシロスコープ (しかもアナログ)

引き出しにあった適当な抵抗を組み合わせて作ったDACです。8bitのパラレル出力ならGPIOを使って一発で出力できるので、ちょっとした実験にはもってこいですね。我が家のオシロはアナログです。デジタルのように止められないのが難点ですが、高速にスイープできたり変なところで重宝します。デジタルサンプリングした生波形をオシロスコープで表示していると、「一体これは何をやってるんだ」と思いましたね。

左は生波形表示、右はFFT表示。左上に映っている点は255の値で画面の同期トリガーでもあります。

内部処理

  • サンプリングレート:250Hz~50kHz 無段階設定
  • 波形バッファ:ADCバッファ16bit×1024サンプル、FFT用16bit×1024サンプル、合計4KB
  • 表示バッファ:8bit×1024サンプル、合計1KB

大まかな動作

  • サンプリングはリアルタイム、50Hz/20msの周期で最新の最大1024サンプル分を表示
  • 波形表示 または FFT後のレベル表示のどちらかを選択
  • 波形表示:最大1024サンプル 256段階
  • FFT表示:最大512点 リニアスケール 256段階
  • UART経由でサンプリングやFFTパラメータを変更可能にする

使用ペリフェラル
ADC・タイマー×2・DMA×2・FFTエンジン(Solist-AI)・UART・優先度付き割り込み×4・水晶クロック+PLL発振回路・ウォッチドッグタイマー

処理のポイント
50kHz/20μs周期で音声をサンプリングして蓄積し、古いものから順番に破棄。並行して50Hz/20ms周期で蓄積した2KBのデータをFFTバッファへ送り、戻ってきた2KBの結果を表示バッファに転送して5msで表示する。表示中もサンプリングが途切れないようにしないと波形やFFT結果が乱れてしまう。これを浮動小数点ユニットが無い48MHzクロックで内蔵RAMが16KBしかないマイコンでやるのだ。

次回へ続く

ソフトウェア関係は次回へ続きます。
https://zenn.dev/gadget_factory/articles/86c3ef48f24fdd

Discussion