Skip to content

时间同步与 IO ​

用途选择 ​

要做的事用哪个功能信号方向配置
外部设备发脉冲,模块在脉冲到来时输出一帧SYNC_IN 触发输出输入LOG <MSG> ONMARK 1
让模块的时间变成 UTCPPS 对时输入接 PPS 与 RMC,无需命令
让外部设备知道模块何时发出数据帧SOUT 同步输出输出COM1 输出 HI91/HI83 帧时自动产生

触发输出和 PPS 对时共用同一个输入引脚 SYNC_IN/PPS。引脚位置、电平和电气参数见产品硬件手册。

警告

SYNC_IN 触发输出与 PPS 对时不能同时使用。设置 ONMARK 后,该引脚的边沿可能只用于触发,导致对时静默失败、UTC_UNSYNC 不清零。需要 PPS 对时时,不要给任何串口的任何帧设置 ONMARK。

SYNC_IN 触发输出 ​

模块检测到 SYNC_IN/PPS 引脚的上升沿后,把设为触发模式的每种数据帧各输出一帧,这些帧不再按周期发送。

引脚内部下拉,只识别上升沿。触发输出和 PPS 对时都不用时,引脚悬空或接地。

配置与示例 ​

用 ONMARK 把目标帧设为触发模式,命令说明见数据帧输出。

text
LOG [<COM>] <MSG> ONMARK 1

<MSG> 为 HI91 或 HI83,<COM> 可省略。

命令作用
LOG <MSG> ONMARK 1把该帧设为外部脉冲触发,周期输出停止
LOG <MSG> ONMARK ONCE软件触发一次,等同一个脉冲上升沿:该串口上所有已设为 ONMARK 1 的帧各输出一帧。该命令不返回 OK,以收到数据帧为准
LOG <MSG> ONTIME <s>改回周期输出,<s> 为周期,单位 s

设置立即生效,SAVECONFIG 后掉电保持,流程见配置流程与保存。设置 ONMARK 后不能再用 PPS 对时,见用途选择的警告。

ONMARK ONCE 只用于已设为 ONMARK 1 的帧,并需要处于 LOG ENABLE 状态。没有帧设为 ONMARK 时,它不产生输出。

触发后没有数据时,依次检查:帧是否已设为 ONMARK 1;是否执行过 LOG DISABLE 而没有恢复输出;是否改过引脚映射却还没有重启(见多功能 IO 复用)。

触发边沿不是传感器采样时刻。ONMARK 触发帧的时间戳,是模块处理触发时最新一个样本的时刻,也不是边沿时刻,见各接口时间戳的含义。触发间隔应大于该帧的发送时间,帧长与带宽估算见输出带宽与波特率。

PPS 对时 ​

把 GNSS 接收机的 1PPS 秒脉冲接到 SYNC_IN/PPS,同时把接收机输出的 NMEA 语句接入模块串口(COM1 或 COM2,以型号提供的串口为准),模块就能把内部时钟对齐到 UTC。对时完成后,MAIN_STATUS 的 UTC_UNSYNC 位清零(见 MAIN_STATUS 状态字),system_time 和 HI83 的 utc 变为 UTC 时间,含义见各接口时间戳的含义。

信号要求 ​

参数说明要求
t0相邻秒脉冲上升沿间隔1000 ms,偏差在 ±10 ms 内
t1秒脉冲高电平时间推荐 10~50 ms,模块只识别上升沿
t2RMC 语句传输时间与波特率有关
t3RMC 到达时刻相对对应 PPS 上升沿的延迟小于 1 s,越靠近上升沿、相位越稳越好

NMEA 语句要求:

  • 接收机波特率与模块该串口当前配置一致,语句以 \r\n 结束,频率 1 Hz。
  • 建议 GNSS 接收机同时输出 GGA 与 RMC。
  • 建议 RMC 的状态字段为 A(有效定位);语句带模式指示字段(NMEA 2.3 及以上)时,建议为 A 或 D。模块只取 RMC 中的 UTC 时间和日期,其余字段不影响对时。
  • 每条 RMC 描述的是它之前最近一次 PPS 上升沿对应的整秒时刻,必须在该上升沿之后 1 s 内到达。

示例:下面这条 RMC 表示 2024-06-18 12:35:19 UTC。*70 是 $ 与 * 之间所有字符的异或校验。

text
$GNRMC,123519.000,A,3958.1234,N,11623.4567,E,0.0,0.0,180624,,,A*70

确认对时 ​

接入后等待 UTC_UNSYNC 清零,再按 UTC 解释时间。首次对时或重新获取时间时,时间戳可能跳变。GNSS 中断或重新接入后,重新检查该位,不以等待时长判断对时成功。

PPS 必须与 RMC 配对。只接 RMC 不接 PPS 时无法对时;RMC 比对应脉冲晚到 1 s 以上时,UTC 会差整数秒,且没有提示。建议直接使用 GNSS 接收机同步输出的 PPS 与 RMC。

UTC_UNSYNC 一直不清零时,依次检查:PPS 间隔和 RMC 状态是否符合信号要求;RMC 是否在输出;是否有任何串口的任何帧设置了 ONMARK(与 PPS 互斥,见用途选择)。

CAN 输出的时间报文不能用来对时,说明见时间同步。

SOUT 同步输出 ​

SOUT 在模块发送 COM1 的 HI91 或 HI83 帧时输出一个高电平脉冲,平时为低电平。外部设备可用它把串口数据对齐到自己的时间轴。每个带脉冲的帧,其 MAIN_STATUS 的 SOUT_PULSE 位为 1,主机据此把脉冲和帧对应起来。

  • 范围:脉冲只与 COM1 的 HI91/HI83 帧对应;COM2 及其他帧不能用来匹配脉冲。
  • 时序:数据帧在脉冲下降沿之后开始发送。
  • 约束:启用 SOUT 时,COM1 只能配置一种周期帧。要在 HI91 与 HI83 之间切换,先用 LOG <MSG> ONTIME 0 关闭原周期帧。
  • 暂停:LOG DISABLE 只暂停输出,SOUT 脉冲随之停止;周期配置保留,重启后输出恢复。
  • 频率与电平:脉冲跟随 COM1 周期帧发出,不能单独设置频率。输出电平、脉宽和驱动能力见产品硬件手册。需要低于数据输出频率的脉冲时,请联系技术支持。

设置立即生效,SAVECONFIG 后掉电保持,流程见配置流程与保存。下面把 COM1 从 HI91 周期输出改为 HI83 100 Hz:

text
LOG HI91 ONTIME 0
LOG HI83 ONTIME 0.01
SAVECONFIG

没有脉冲时,依次检查:COM1 是否有周期帧且只配了一种;是否执行过 LOG DISABLE 而没有恢复输出;是否改过引脚映射却还没有重启(见多功能 IO 复用)。

SOUT 标记的是数据帧的发送,不是传感器采样时刻,也不是相机曝光时刻。周期帧的 system_time_us 按输出周期推进,不能用来反推采样时间,见各接口时间戳的含义。SOUT_PULSE 为 1 的帧,对应它之前最近的一个脉冲,以这个脉冲到来的时刻作为外部时间轴上的参考。

多功能 IO 复用 ​

SYNC_IN 与 SOUT 各占一个多功能引脚,默认映射如下。用 CONFIG PMUX<n> IO<m> 重新映射,n 为功能号,m 为引脚号。

功能号名称方向说明默认引脚
PMUX1SYNC_IN输入即 SYNC_IN/PPS 引脚,见SYNC_IN 触发输出、PPS 对时IO1
PMUX2SOUT输出COM1 数据帧发送标记,见SOUT 同步输出IO2

可选引脚以产品硬件手册为准,并非所有 IO 引脚都在具体产品上引出。

操作步骤:

  1. 在硬件手册里确认目标引脚可用。
  2. 发送映射命令。例如硬件手册标明 IO3 可用时,把 SOUT 改到 IO3:CONFIG PMUX2 IO3。
  3. 执行 SAVECONFIG,再 REBOOT。映射重启后才生效,见配置流程与保存。
  4. 重启后实测:给 SYNC_IN 一个上升沿,看是否触发输出或对时;SOUT 用示波器看脉冲,或检查帧里的 SOUT_PULSE 位。

一个引脚只能对应一种功能:把已映射的引脚再映射给另一功能,原功能就没有引脚了。CONFIG PMUX<n> IO<m> 返回 ERR,说明该引脚在本型号上不可用。生效与否以重启后的实测为准。

警告

映射错误会让 SYNC_IN 或 SOUT 在重启后静默失效,没有任何报错。改映射前记下原值,改完务必实测。

恢复出厂后,IO 映射回到该型号的出厂默认,见恢复出厂。

最后更新:

IMU · AHRS · INS · RTK 技术支持中心