Linux

如何以納秒為單位設置時間?

  • March 1, 2018

我有一個連接了 GPS 模組的 Raspberry Pi。由於所有 GPS 衛星上都有非常精確的原子鐘,我想將 Pi 的時鐘與衛星的時鐘同步。我知道如何從衛星獲取日期和時間,並設置我的 Pi 時間:

sudo date -s "MAR 14 2016 14:53:09"

但這僅精確到秒,我希望至少得到毫秒,但我更喜歡納秒。

我知道date +%s%N以納秒為單位返回時間。

如何以納秒為單位設置時間?

當數據通過 USB/RS232 介面到達您的 PC 時,解析度和精度都不會好。歸根結底,沒有專用設備,最好還是使用 NTP。

從這個GPS 同步教程

市場上有許多廉價的 GPS 接收器。他們中的大多數使用 RS232 或 USB 連接將他們的資訊發送到連接的電腦。儘管接收器本身的時鐘以幾納秒的精度執行,但將數據傳輸到電腦會導致如此大的延遲,以至於實際上無法將本地電腦的時鐘與該信號精確地同步優於幾毫秒。也可以通過通過 Internet 連接到免費提供的 NTP 時間伺服器來獲得這種準確性。只有與電腦具有特殊快速準確同步方法的 GPS 設備才能用作時間同步設備。最昂貴和最準確的方法是使用適合電腦本地 PCI 或 PCIex 插槽的 GPS 接收器。但是這些卡非常昂貴,並且沒有廣泛使用。另一種解決方案是使用速度慢且不准確的 RS232 或 USB 介面發送一般數據,並使用脈衝進行時間同步。

正如@dfc 正確指出的那樣,帶有 PPS 的 RS232 可以完成這項工作。但是,設備必須支持它。

在大多數具有脈衝功能的 GPS 設備上,脈衝每秒發送一次,從每一新的一秒開始。這就是為什麼這些 GPS 設備通常被稱為帶 PPS 的 GPS,即每秒脈衝數。

不幸的是,沒有大量 GPS 接收器具有額外的 PPS 輸出。我在哈薩克斯坦使用 Garmin GPS 接收器進行旅遊活動,因此我首先查看了該製造商的可用設備。目前有兩種 Garmin GPS 接收器可以直接與電腦連接使用:Garmin GPS 16x LVS 和 Garmin GPS 18x LVC。它們都在 +5 伏的電源電壓下工作,可直接從電腦獲得,它們都通過 RS232 介面以 NMEA 協議發送一般數據,並且都具有 PPS 輸出。

引用自:https://unix.stackexchange.com/questions/269751