Q2557-11:ハードウェアFFT内蔵マイコンでスペアナを作る・ハード解説
今回のトピック
ロームのマイコン「ML63Q2500」シリーズのハードウェアFFTを使い、役に立つかわからないオーディオ帯域のスペアナを作ってみました。マイコンの応用例とでもいうお遊びの代物です。ハードウェアとソフトウェアで2部に分けました。今回はハードウェア編です。
ハードウェアの仕様
お遊びなので部品はブレッドボードに実装しています。
マイコンは電源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しかないマイコンでやるのだ。
次回へ続く
ソフトウェア関係は次回へ続きます。
Discussion