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

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

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

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

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

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

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

答案1

当数据通过 USB/RS232 接口到达您的 PC 时,分辨率和准确性将不再好。归根结底,如果没有专用设备,最好还是使用 NTP。

由此GPS同步教程

市场上有许多廉价的 GPS 接收器。他们中的大多数使用 RS232 或 USB 连接将信息发送到连接的计算机。尽管接收器内部的时钟本身的运行精度为几纳秒,但将数据传输到计算机会导致很大的延迟,以至于实际上不可能将本地计算机的时钟与该信号精确同步好于几毫秒。通过连接到互联网上免费提供的 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 输出。

相关内容