LCD ディスプレイに出力する 8 ビット Atmega32 用のスペクトラム アナライザを開発しています。最大サンプリング周波数は 40kHz であるため、最大周波数は fs > 2B に準拠して 20kHz です。現在、内部で信号を生成してから、この信号に FFT を適用し、LCD でスペクトルを表示しています。
これは疑似コードで書かれていることに注意してください。
#define SIG_N 128 //Number of samples in signal buffer
#define FFT_N 64 //2*Output bins
uint_8 signal[SIG_N];
uint_8 spektrum[FFT_N];
for (int i = 0; i < SIG_N; i++){
signal[i] = 255*sin(2*3.14*f*i / SIG_N);
}
computeFFT(signal,spektrum,FFT_N); //arbitrary method computes signal outputs spektrum
現在、出力スペクトルには FFT_N/2 = 32 個のビンがあり、それぞれが 1Hz を表しています。したがって、私のスペクトルが現在表している最高周波数 (私はこれをテストしました) - 32Hz. 各ビンが 625Hz を表すように、これらのビンの「周波数幅」を増やすにはどうすればよいですか? メモリの制限があるため、FFT_N のサイズを 64 ~ 128 を超えて増やすことはできません。