// TestFFT1024iq.ino for Teensy 3.x, 4.x // Bob Larkin 3 March 2021// Rev to include xAxis control. 6 Mar 2021 // Generate Sin and Cosine pair and input to IQ FFT. // Serial Print out powers of all 1024 bins in // dB relative to Sine Wave Full Scale // Public Domain #include "OpenAudio_ArduinoLibrary.h" #include "AudioStream_F32.h" // GUItool: begin automatically generated code AudioSynthSineCosine_F32 sine_cos1; //xy=76,532 AudioAnalyzeFFT1024_IQ_F32 FFT1024iq1; //xy=243,532 AudioOutputI2S_F32 audioOutI2S1; //xy=246,591 AudioConnection_F32 patchCord1(sine_cos1, 0, FFT1024iq1, 0); AudioConnection_F32 patchCord2(sine_cos1, 1, FFT1024iq1, 1); // GUItool: end automatically generated code void setup(void) { float* pPwr; Serial.begin(9600); delay(1000); AudioMemory_F32(50); Serial.println("FFT1024IQ Test"); sine_cos1.amplitude(1.0f); // Initialize Waveform Generator // Pick T3.6 bin center //sine_cos1.frequency(689.33); // or pick T4.x bin center sine_cos1.frequency(689.0625f); // or pick any old frequency //sine_cos1.frequency(7100.0); // elect the output format FFT1024iq1.setOutputType(FFT_DBFS); // Select the wndow function //FFT1024iq1.windowFunction(AudioWindowNone); //FFT1024iq1.windowFunction(AudioWindowHanning1024); //FFT1024iq1.windowFunction(AudioWindowKaiser1024, 55.0f); FFT1024iq1.windowFunction(AudioWindowBlackmanHarris1024); // Uncomment to Serial print window function //float* pw = FFT1024iq1.getWindow(); // Print window //for (int i=0; i<512; i++) Serial.println(pw[i], 4); FFT1024iq1.setNAverage(4); // xAxis, bit 0 left/right; bit 1 low to high; default 0X03 FFT1024iq1.setXAxis(0X02); delay(1000); // Print output, once if( FFT1024iq1.available() ) { pPwr = FFT1024iq1.getData(); for(int i=0; i<1024; i++) Serial.println(*(pPwr + i), 8 ); } Serial.println(""); } void loop(void) { }