Skip to main content
Visitor II
October 16, 2014
Question

STM32F4 - FFT for 32768 input buffer

  • October 16, 2014
  • 4 replies
  • 2124 views
Posted on October 16, 2014 at 14:31

Hi everybody!

I'm going to use STM32f429 with external SDRAM (IS42S16400J 64MBit) in my project. I'm trying to make FFT for 32768 input buffer, my function calculate it in about 250ms.

Functions in CMSIS LIB do it much quicker but support only length 128, 512, 2048. How can I do long FFT with good performance?
    This topic has been closed for replies.

    4 replies

    Visitor II
    October 16, 2014
    Posted on October 16, 2014 at 16:42

    Functions in CMSIS LIB do it much quicker but support only length 128, 512, 2048. How can I do long FFT with good performance?

     

    You can try to extend the DSP lib functions for such buffer sizes, or port other FFT libraries to your platform. Performance will hardly be better. Runtime increases about by factor 4 (square) for doubling of buffer size, if I remember correctly.

    I'm trying to make FFT for 32768 input buffer, ...

     

    Why do you need such a high frequency resolution ?

    There are other algorithms to calculate single frequency points, which might be better suited to your problem. (Just can't remember the names, though ...)

    Explorer
    September 17, 2024

    How to extend the DSP lib for 32768  points fft or port other libraries Any suggestions ?

    Explorer
    September 17, 2024

    I did 32k using H7 & F7. Time to switch uCPU?

    https://www.youtube.com/watch?v=K7W7U3Dg8vg 

    Graduate II
    October 16, 2014
    Posted on October 16, 2014 at 18:22

    From a processor perspective SDRAM is the SLOWEST available memory to operate on. The CCMRAM is the less contested memory bus.

    Visitor II
    October 17, 2014
    Posted on October 17, 2014 at 09:55

    Why do you need such a high frequency resolution ?

     

    I set 32kHz sampling frequwncy and 1s time measurement.

    Visitor II
    October 17, 2014
    Posted on October 17, 2014 at 12:59

    I set 32kHz sampling frequwncy and 1s time measurement.

     

    So sample for a shorter time and use a 1024 or 2048 buffer size.

    Use DMA with the appropriate buffer size, and you will get notified by interrupt when a buffer is ready.

    This will save you from a lot of trouble.