STM32 GPSDO
Posted: Wed Apr 28, 2021 8:50 am
I am working on an STM32 GPSDO. Or perhaps I should describe my project as "Yet another GPSDO, but this one uses an STM32 MCU" since there are so many GPSDO projects available on the internet. But I believe my project is the first one based on an STM32 MCU.
What is a GPSDO? A GPSDO is a GPS-disciplined oscillator, meaning it's an oscillator that has its frequency stabilized by a GPS signal. Usually, the oscillator is an OCXO* (oven controlled crystal oscillator), but it could be a TCXO (temperature controlled crystal oscillator) or even a rubidium oscillator.
In my project I am using a recycled 10 MHz, 5V, square wave OCXO, available on the internet for less than €10, a WeAct STM32F411CEU6 "Black Pill" development board, and a u-blox NEO-M8 GPS receiver module. Power is entirely provided by the USB C connector on the Black Pill, power consumption is 4W during OCXO warming and decreases to <2W in steady state operation.
A small OLED connected to the I2C bus provides some information, and I am thinking of adding a Bluetooth module to allow wireless connection to a smartphone or PC.
I am developing the firmware using Arduino IDE 1.8.13 with STM32 Core release 2.0.0. Flashing the firmware is done using the DFU method. The hardware prototype is implemented on a pair of breadboards, and the wiring is a mess! But hey, it works...

*: If anybody is interested in the subject, a good starting point for further reading is the Wikipedia page on OCXO's
: https://en.wikipedia.org/wiki/Crystal_oven
What is a GPSDO? A GPSDO is a GPS-disciplined oscillator, meaning it's an oscillator that has its frequency stabilized by a GPS signal. Usually, the oscillator is an OCXO* (oven controlled crystal oscillator), but it could be a TCXO (temperature controlled crystal oscillator) or even a rubidium oscillator.
In my project I am using a recycled 10 MHz, 5V, square wave OCXO, available on the internet for less than €10, a WeAct STM32F411CEU6 "Black Pill" development board, and a u-blox NEO-M8 GPS receiver module. Power is entirely provided by the USB C connector on the Black Pill, power consumption is 4W during OCXO warming and decreases to <2W in steady state operation.
A small OLED connected to the I2C bus provides some information, and I am thinking of adding a Bluetooth module to allow wireless connection to a smartphone or PC.
I am developing the firmware using Arduino IDE 1.8.13 with STM32 Core release 2.0.0. Flashing the firmware is done using the DFU method. The hardware prototype is implemented on a pair of breadboards, and the wiring is a mess! But hey, it works...


*: If anybody is interested in the subject, a good starting point for further reading is the Wikipedia page on OCXO's
