Here's my code for fft, with 256 samples, 8000Hz sampling frequence
`
unsigned long timeLoop = 0;
void loop() {
mbegin = micros();
// Compute FFT
FFT.DCRemoval();
FFT.Windowing(FFT_WIN_TYP_HAMMING, FFT_FORWARD);
FFT.Compute(FFT_FORWARD);
FFT.ComplexToMagnitude();
timeLoop = (micros() - mbegin + timeLoop) / 2; // moving average value
if (countLoop % 100 == 0) {
USB_SERIAL.println("runFFT cost: " + String(timeLoop) + " micro seconds");
}
}
`
it works fine on esp8266(160MHz), cost 20ms and 10ms on esp32.
but on esp32-c3:
runFFT cost: 115538 micro seconds
runFFT cost: 115510 micro seconds
runFFT cost: 115474 micro seconds
runFFT cost: 115286 micro seconds
runFFT cost: 114535 micro seconds
that's unacceptable...
the code is the same, don't know what's wrong with it, anybody can help?
thanks.
Here's my code for fft, with 256 samples, 8000Hz sampling frequence
`
unsigned long timeLoop = 0;
void loop() {
mbegin = micros();
// Compute FFT
FFT.DCRemoval();
FFT.Windowing(FFT_WIN_TYP_HAMMING, FFT_FORWARD);
FFT.Compute(FFT_FORWARD);
FFT.ComplexToMagnitude();
timeLoop = (micros() - mbegin + timeLoop) / 2; // moving average value
if (countLoop % 100 == 0) {
USB_SERIAL.println("runFFT cost: " + String(timeLoop) + " micro seconds");
}
}
`
it works fine on esp8266(160MHz), cost 20ms and 10ms on esp32.
but on esp32-c3:
runFFT cost: 115538 micro seconds
runFFT cost: 115510 micro seconds
runFFT cost: 115474 micro seconds
runFFT cost: 115286 micro seconds
runFFT cost: 114535 micro seconds
that's unacceptable...
the code is the same, don't know what's wrong with it, anybody can help?
thanks.