The STM32 can do a 1024 point FFT in 5ms. There's also the unknown matter of computing magnitude, normalizing, making it probably 10ms. At 10 sweeps per second, that gives only 10 FFTs per sweep.
That comes with a 8192 byte tag.
2048 bytes: analog capture window
2048 bytes: imaginary value window
2048 bytes: simultaneous capturing of next window
2048 bytes: normalization table
Then, the 1st 256 samples from each window are stacked on a polar projection. Only the 1st 1/4 of the window has had useful range. That comes with a 2560 byte tag for the current projection & 2560 bytes for the previous projection for 10 FFT's per sweep. 50 FFT's per sweep would take 12800 * 2 bytes.
Motion tracking in a polar projection would take some doing, but be the most efficient solution. An additional 5120 bytes of ROM might be required for a lookup table to convert the polar pixels to square pixels for motion tracking.
Then, some 1024 bytes of scratch memory might be required, bringing it to 60416 for the 50 FFTs per sweep or 19456 for the 10 FFTs per sweep.
To rotate the FFT's & motion track a square projection would take 256kbytes to retain the full resolution. It would involve a similar lookup table to only track filled pixels.
No matter how limited the microcontroller, the resolution & speed of the sampling can always be scaled down to fit. The difference is only in the resolution of the output, not whether it can
...Continue Reading