The mane concern for an embedded radar is the magic filtering which turns the harmonic frequencies in the IF output to a distance & velocity. That's still an area of research & it takes a lot of CPU power. It all but eliminates anything besides measuring velocity.

The method of choice is the fast fourier transform. A frequency counter doesn't seem to do the job.

There is the proprietary assembly language FFT for ARM. Then, there's the standard fixed point one, written in 1989. When the Arduino age began, someone ported it to 8 bits & discarded the 16 bit version so all Goog gives you is the 8 bit version. Fortunately, the 16 bit version is still available in the gstreamer source code.

It needs 3 * 2 * window_size of RAM, limiting you to 16384 samples.

MIT provides sample IF output from the

radar project. You can load it in an audio editor & see the ranging in a spectrogram. The mane problem is an audio editor can't perform the spectrogram just during the pings, so there's a lot of noise where the pinging is idle.

The IF output is not a simple sine wave corresponding to the nearest object, but many harmonics from many objects. You can play the IF output & hear the harmonics.

For detecting velocity, the MIT radar does a 11025 sample fourier transform. The sample rate is 44100.

For detecting distance, it does an 882 sample fourier transform. It has a lot of noise which is eliminated by taking only the difference between 2 pings.

After reviewing the functionality, most of the parts can be left out from a simple test of doppler & distance measurement, but it's good to be able to whack out a demo without worrying about missing anything.

That leaves a test of a simple 16384 sample, fixed point FFT frequency detector on the example MIT doppler data. The MIT data is crushed horizontally because the conversion of frequency to speed is logarithmic, but that would be the easy part. 16384 samples is probably far beyond what the STM32 can do in realtime.

The window size is going to be limited by speed before memory. The sample rate needs to be low enough for the window size to cover the desired frequency range in enough resolution.