Skip to main content
Explorer
February 16, 2024
Question

16384 points of FFT(Fast Fourier Transform)

  • February 16, 2024
  • 8 replies
  • 3971 views
Hello community, In my project requires upto 16384 points of FFT(Fast Fourier Transform) . I found out that I can’t perform this number of FFT points using arm CMSIS DSP library since it is limited to 4096 point Max. Due to this I have to use external library So I dont have any external library idea guide me to achive this  on the micro-controller (STM32H745ZI).CMSIS DSP It works well up to 4098 point.  I need to perform 16384 point so any library files,links , ideas or any video links could helpfull...
    This topic has been closed for replies.

    8 replies

    Super User
    February 16, 2024
    SA V.1Author
    Explorer
    February 19, 2024

    By looking above links i didnt get any. mainly i am looking for library file is it possible to share ??

    Super User
    February 19, 2024

    Go on.

    The FFT is a very long-established and widely used algorithm - there must be plenty of general implementations that could be ported to any target ...

    SA V.1Author
    Explorer
    February 22, 2024

    *.I want to perform a 16384 or 32768 points FFT  we cant perform this much of points using CMSIS_DSP library  clear this point .

    *. So i need to choose a library which will support ( to perform 16384 or 32768 points in STM32H745xx microcontroller and the sotware STM32CubeIDE )  

    which library should i choose ?how to adopt that? Any library name or library file or library link ?

      so will resolve this step first later will move further .

    Super User
    February 22, 2024

    Have you actually tried searching the interwebs?

    Again, the FFT is a very long-standing and widely-used algorithm - there must be plenty that can do this; eg,

    https://www.google.com/search?q=16384+or+32768+points+FFT+C+code

    Also, for finding source code, GitHub is a good place to search; eg,

    https://github.com/search?q=FFT&type=repositories 

     

    Super User
    September 24, 2024
    Visitor II
    April 14, 2025

    HI,I want to ask you if you find solution for getting more than 4098 points FFT ?

     

    Super User
    April 14, 2025

    @Ayaa  - see the thread linked immediately before your post

    SA V.1Author
    Explorer
    April 15, 2025

    Hii, Please go to below link and download the complete project clearly understand the project and whichever the files required to your project copy and add to your project then perform FFT.

    link--->https://github.com/Treeed/Long_FFTs_for_CMSIS_DSP/tree/master

    Explorer
    April 15, 2025

    You can try to port fftw (recent version fftw3) to your target MCU : https://www.fftw.org/

    > Hello community, In my project requires upto 16384 points of FFT(Fast Fourier Transform) .

    I'm not so sure of that.

    There are less costly algorithms to evaluate specific spectral components.

    Graduate II
    April 15, 2025

    You can do this with cmsis-dsp but you'll have to add your own implementation using the cmsis-dsp framework. Specifically, you'll need to provide your own twiddle factor and bit-reversal tables. There is a python script in cmsis-dsp that you can use to generate these:

     DSP_Lib/SupportFunctions/arm_cfft_radix4_init_f32_gen.py

    Then you can quite easily build up the 16k FFT following ARM's existing functions as a reference template.

    Regarding performance, memory requirement will be something to pay attention to and you'll need to ensure that optimisation is on for speed and size, and I- and D- cache enabled.

    A key thing will be to choose your input number format before starting the implementation. Words (accumulated variables) grow according to log2(FFT length) and unless you're doing a full floating point implementation your implementation will need to use specific cmsis-dsp functions for your data type. e.g. If you were processing data from an ADC you may want to take a q15 as the input number format, but care would then be taken to avoid saturation/overflow, which you could avoid by converting to q32 at the cost of RAM usage and cycles.

    Unfortunately this isn't the kind of turn-key solution that you might have hoped for, but even if you're not very familiar with the FFT there are a huge number of very good resources that explain how it works. The algorithms used boil down to simple adds/subtracts and cmsis-dsp has all of the required primitives (butterfly operations).