ADuC7026でFFT
の実験をしてみました。
DWM3月号のおまけ基板に、LM358で作った入力バッファと、DAC0及びDAC1の出力に簡単なRCフィルタを通して、オシロ(XYモード)に接続しただけの構成(^_^;)。
実験プログラムは、開発が楽なKEIL評価版上で作成することにし、とりあえずうまくいくかどうか確認するために、実験パラメータもすごく粗っぽいです。
<実験パラメータ>
・サンプリング周波数 fs = 約32kHz (スペクトラム表示範囲 ~16KHz)
・FFTサンプル数 256 (有効サンプル数 128)
・周波数分解能 125Hz
・窓関数 ハニング窓
で、横着にもアンチ・エイリアシング・フィルタも省略してしまったので、モジュラーシンセにあるVCFで帯域制限をした信号を入力して実験。
ちょっと粗っぽく、帰線の処理等もしてませんが、こんな感じで、ほぼリアルタイムに表示ができました(^O^)
入力信号のサンプリング及びFFTタイミングとオシロへの表示タイミングの兼ね合いが難しいところです…
FFTは手持ちのCコードを適当に直して使ったので全くチューニングしてませんが、ARMプロセッサの乗算や積和演算命令を上手に生かせるようなコーディングをすれば、性能的にまだまだ行けそうな気がします。
あ゛っ、dBスケールになってない…
<追記>
入力バッファはLM358とかではなく、Rail to Railなタイプにしましょう。