时间同步与 IO
用途选择
| 要做的事 | 用哪个功能 | 信号方向 | 配置 |
|---|---|---|---|
| 外部设备发脉冲,模块在脉冲到来时输出一帧 | SYNC_IN 触发输出 | 输入 | LOG <MSG> ONMARK 1 |
| 让模块的时间变成 UTC | PPS 对时 | 输入 | 接 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 把目标帧设为触发模式,命令说明见数据帧输出。
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,模块只识别上升沿 |
| t2 | RMC 语句传输时间 | 与波特率有关 |
| t3 | RMC 到达时刻相对对应 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 是 $ 与 * 之间所有字符的异或校验。
$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:
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 为引脚号。
| 功能号 | 名称 | 方向 | 说明 | 默认引脚 |
|---|---|---|---|---|
| PMUX1 | SYNC_IN | 输入 | 即 SYNC_IN/PPS 引脚,见SYNC_IN 触发输出、PPS 对时 | IO1 |
| PMUX2 | SOUT | 输出 | COM1 数据帧发送标记,见SOUT 同步输出 | IO2 |
可选引脚以产品硬件手册为准,并非所有 IO 引脚都在具体产品上引出。
操作步骤:
- 在硬件手册里确认目标引脚可用。
- 发送映射命令。例如硬件手册标明 IO3 可用时,把 SOUT 改到 IO3:
CONFIG PMUX2 IO3。 - 执行
SAVECONFIG,再REBOOT。映射重启后才生效,见配置流程与保存。 - 重启后实测:给 SYNC_IN 一个上升沿,看是否触发输出或对时;SOUT 用示波器看脉冲,或检查帧里的
SOUT_PULSE位。
一个引脚只能对应一种功能:把已映射的引脚再映射给另一功能,原功能就没有引脚了。CONFIG PMUX<n> IO<m> 返回 ERR,说明该引脚在本型号上不可用。生效与否以重启后的实测为准。
警告
映射错误会让 SYNC_IN 或 SOUT 在重启后静默失效,没有任何报错。改映射前记下原值,改完务必实测。
恢复出厂后,IO 映射回到该型号的出厂默认,见恢复出厂。
