[time-nuts] Re: The STM32 GPSDO, a short presentation

André Balsa andrebalsa at gmail.com
Thu Mar 31 18:18:39 UTC 2022


Hello time-nuts,
This is a quick follow-up to my short presentation of the STM32 GPSDO
project, because as some of you noticed, the EEVblog thread is
unfortunately 27 pages long and growing... :(
A few pointers:
1. If you are interested in the technical details or further understanding
of the project, I suggest reading **only the first post** in the EEVblog
thread and then jumping straight to the schematics in post #378, page 16 in
the thread, and then reading the generously commented source code on GitHub
(download the zip file for the latest release and check the GPSDO.ino
sketch).
2. The core of this project is made of just three components:
a. The STM32F411CEU6 "Black Pill"
b. The 10 MHz OCXO
c. The ublox M8N GPS receiver module
These three components plus a few resistors, capacitors and an LED and
voila!, you have a working GPSDO. Everything else is optional. But of
course the optional parts are where the fun is, really.
3. Likewise the core of the firmware is just 15 lines of C code, which are
used to setup the 64-bit counter (10 lines) and the interrupt service
routine that reads the counter (5 lines). Everything else in the firmware
is built around these 15 lines of C code. Also to be honest, while these 15
lines of C code are well written, the rest... not so much. ;)
4. So how does it work? Essentially we measure the frequency of the OCXO
every second (the 64-bit counter), average it over the last 10/100/1000
seconds (data stored in circular buffers), and adjust the OCXO control
voltage Vctl accordingly: if the frequency is too high, we decrease Vctl,
and if the frequency is too low, we increase Vctl. In other words, it's a
simple frequency locked loop, which all of you are familiar with.
5. The performance? Hmmm... honestly I started working on this project with
the modest aim of 1ppb stability and that was achieved almost immediately,
also from the anecdotal data I and others have collected, the STM32 GPSDO
achieves 0.1ppb stability after a couple of hours and 0.01ppb is also
achievable, without any correction being applied from the various
environmental sensors. I think ultimately 0.001ppb should be achievable but
that will take some work on the firmware.
6. Those nice ADEV plots? Ouch: I don't have any. In the coming days I will
push to GitHub a new version of the firmware with reporting with proper
tab-delimited fields that will allow people to plot various charts and
study the correlation between supply voltages, OCXO power consumption, OCXO
frequency, atmospheric pressure, humidity, etc... A true smorgasboard for
statisticians!

Greetings from France,
Andre' (Andrew)




More information about the Time-nuts_lists.febo.com mailing list