[time-nuts] Adding PTP or NTP to my GPSDO

Pluess, Tobias tpluess at ieee.org
Sun May 30 19:09:16 UTC 2021


Hi together

I am still working on my GPSDO and Jeremy with his "amazing $5 timestamper"

https://febo.com/pipermail/time-nuts_lists.febo.com/2021-February/102892.html

inspired me to do again some tests by using the internal PLL of my STM3F407
microcontroller. And guess what, it works perfectly! I don't know why the
PLL of the STM32F303 I used for my first experiments was so bad.

What my GPSDO does at the moment is:
on one connector, it outputs directly the 10 MHz from the OCXO (with a
buffer amplifier in between).
The 10 MHz also go to the microcontroller and the internal PLL is used to
boos this to 160 MHz; from these 160 MHz, the 1PPS output is achieved
(using a hardware timer with prescaler). Compared to a couple different
commercial oscillators, the stability is quite good and it appears that the
PLL does not introduce as much phase shift as I feared.
I will post more data on my long-term tests later, if interested - my GPSDO
is running now sine almost a year being tested, and is connected to a
laptop that records the data it outputs (e.g. DAC value and phase error
etc.).

Having now the PLL working nicely offers a whole bunch of new
possibilities. I rewrote my software to use FreeRTOS, which makes the
software a lot easier to understand (will upload on Github).
And I even do have some additional computing power available to do more
awesome stuff.

For instance I thought about adding PTP to my GPSDO. I will design a more
advanced PCB anyways, so I could add ethernet. Now I have read that the PTP
implementation of STM32 is not so well documented. Has anybody made some
experience with it and can give some comments?

Besides that, I also thought about adding a NTP. That would not require a
MAC with PTP capability. Any thoughts on that? has anyone ever written
their own NTP server on a microcontroller?

And then, one further option would be to output hte $GNRMC data and the
1PPS signal on the serial port, which could then be read by a PC. I don't
have experience with this and wonder how well that works. Has anyone ever
tried it? what caveats are there?

I think for either solution, I will need to implement some sort of calendar
and clock inside my software. And here comes the tricky part; I don't know
how I should deal with leap seconds and so forth. What would be the correct
approach? just read out the time information once a second from the GPS
module? how should I proceed then during holdover?


Thanks,
Tobias
HB9FSX




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