如何以纳秒为单位设置时间?

Pat*_*ook 2 linux clock raspberry-pi satellite

我有一个连接了 GPS 模块的 Raspberry Pi。由于所有 GPS 卫星上都有非常精确的原子钟,我想将 Pi 的时钟与卫星的时钟同步。我知道如何从卫星获取日期和时间,并通过以下方式设置我的 Pi 时间:

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

但这只是精确到秒,我想至少得到毫秒,但我更喜欢纳秒。

我知道date +%s%N以纳秒为单位返回时间。

如何以纳秒为单位设置时间?

Rui*_*iro 6

当数据通过 USB/RS232 接口到达您的 PC 时,分辨率和准确性将不会有任何好处。归根结底,没有专用设备,最好留在NTP。

从这个GPS 同步教程

市场上有许多廉价的 GPS 接收器。他们中的大多数使用 RS232 或 USB 连接将信息发送到连接的计算机。虽然接收器内部的时钟以几纳秒的精度运行,但将数据传输到计算机会导致如此大的延迟,以至于实际上不可能将本地计算机的时钟与该信号精确同步好于几毫秒。通过互联网连接到免费可用的 NTP 时间服务器,也可以获得这种精度。只有具有特殊的与计算机快速准确同步方法的 GPS 设备才能用作时间同步设备。最昂贵和最准确的方法是使用适合计算机本地 PCI 或 PCIex 插槽的 GPS 接收器。但是这些卡非常昂贵,而且不能广泛使用。另一种解决方案是使用速度慢且不准确的RS232或USB接口发送一般数据并用脉冲进行时间同步。

正如@dfc 正确指出的那样,带有 PPS 的 RS232 可以完成这项工作。但是,设备必须支持它。

在大多数具有脉冲功能的 GPS 设备上,脉冲每秒发送一次,从每一秒的开始开始。这就是为什么这些 GPS 设备通常被称为具有 PPS 的 GPS,即每秒脉冲数。

不幸的是,没有大量具有额外 PPS 输出的 GPS 接收器。我在哈萨克斯坦使用 Garmin GPS 接收器进行旅游活动,因此我首先查看了该制造商的可用设备。目前有两个 Garmin GPS 接收器可以与计算机直接连接使用:Garmin GPS 16x LVS 和 Garmin GPS 18x LVC。它们都使用可直接从计算机获得的 +5 伏电源电压,它们都通过 RS232 接口以 NMEA 协议发送一般数据,并且它们都具有 PPS 输出。