ARM Radio: A Cheap SDR built out of an ARM Processor and not much more
A software defined radio can theoretically be made out of little more than a microprocessor with an onboard ADC and some DSP code. This is exactly what Alberto di Bene (I2PHD) achieved by connecting an antenna directly to the on board 12-bit ADC on a STM32F429 Discovery board.
To make it actually work as an SDR he also wrote some code to utilize the development board’s ARM processor which processes the ADC input into a radio signal, demodulates it and then turns it into audio via the boards DAC and speaker. The radio can tune from 8 kHz up to about 900 kHz.
The only real extra hardware in Alberto’s system is a low pass filter for anti-aliasing and impedance transformation, and a reconstruction filter to get sound to the speakers from the DAC. He also used the boards LCD screen to implement a full GUI tuning system.
A PDF document detailing his work can be downloaded here.
Hello Raul,
late answer, but anyway. Yes, I made the same experience. It is exactly this mixture making problems. It only works with the old 2015 versions STM32F4xx_DFP 2.4.0, Middleware and CMSIS 4.3.0. Unfortunately file stm32_hal_legacy.h is missing in 2.4.0. The legacy file must be version 1.3.0.
Walter
Ok, I have downloaded the zip file and ttested de binary file into STM32F429 Discovery Board. I found 15Hz offset deviation from oscillator, the I decide to correct this offsetand recompile entire project changing the paths project compiler settings according to pdf file. But it doesn’t compile. There are plenty errors, i.e macro redefinition conflitcs , some unrecognized symbols… etc etc. I tried to repeat many times with no success. I hace keil v5.18a with CMSIS 4.5.0 and STM32F4xx_DFP version 2.7.0 drivers.
So I decide to analyce bit carefully the code and I found that the project has a mix of two Hardware Abstraction Layer versions, Iy you look at the folders in project, you will find for example stm32f4xx_hal_dma.c, h files and on the other part stm32f4xx_dma.c. Thats is a messy not recommended mixture of incompatible HAL versions that causes compiling conflicts. So, I have a question does anybody already face to this kind of problem? If yes, how resolve it?
Thanks.
If it’ll tune up to 900 kHz, it’d work as a demodulator in a 455 kHz IF system easily.
i see one of these on ebay for sale
8 kHz is the minimum specified frequency, the max is 900kHz.