APEX AD10 PPS接口#
PPS接口,是指米文设备将自己的系统时间转换为高精度的PPS信号,对外输出。该接口无法编程,主要用于脱离GPS设备,来构建整个传感器系统的同步。

硬件定义#

引脚定义:

Pin |
Signal |
|---|---|
1 |
GND |
2 |
PPS_A_RX |
3 |
PPS_A_TX |
5 |
GND |
6 |
PPS_A_SYNC |
Pin |
Specification |
|---|---|
PPS_SYNC |
3.3V |
UART |
RS232 |
使用方式#
PPS OUT功能使用说明#
PPS OUT规格#
默认波特率为9600
PPS OUT功能#
设备输出PPS信号(每秒产生一个脉冲,脉宽50ms),并通过串口(UART/RS232)的Tx引脚发送该脉冲上升沿产生时间的NMEA GPRMC消息,消息示例:
$GPRMC,060249.000,A,3949.63046,N,11616.48565,E,0.296,,291118,,,A*4d
其中“060249.000”为每秒产生脉冲时的时间戳(UTC时间),格式为“时分秒.000”,正常时间都是整秒格式。支持PPS同步模式的传感器会通过收到的PPS以及GPRMC消息对自身时钟系统进行校时,使之与设备的系统时钟保持一致。传感器的采样时间会作为时间戳(timestamp),与数据一起被发送至设备。至此,系统获取了传感器采样的系统时间,完成同步。
PPS同步原理图#

同步功能验证方法(以RS-LiDAR-16激光雷达为例):
当传感器只有数据输入接口与设备相连,未连接设备的PPS_A_SYNC口和PPS_A_TX时,传感器的ROS node向操作系统上传数据中的时间戳为硬件时间戳(hardware timestamp),即传感器内部时钟计器的时间(多数传感器会设定一个固定的初始时间作为计时起点,每次上电后开始计时)。此时在Ubuntu操作系统中打印该硬件时间戳,并与设备的系统时间进行比较,可发现二者的偏差较大。
RS-LiDAR-16未同步时硬件时间戳与系统时间戳对比#

当传感器连接设备的PPS_A_SYNC及PPS_A_TX后,传感器的ROS node向操作系统上传数据中的硬件时间戳为传感器内部时钟经过PPS授时后的时间,与设备的系统时间一致。此时在Ubuntu操作系统中打印接收到的硬件时间戳,并与收到该数据时的系统时间(ros::time::now)比较,当二者的差值小于100ms时,说明PPS功能生效。
数据时间戳与系统时间对比#

串口波特率修改方式#
修改方式#
支持串口波特率
波特率 |
|---|
9600 |
57600 |
115200 |
#编辑如下文件,来修改GPRMC 串口/etc/systemd/miivii-autostarter.sh
#将其中9600,替换成希望修改成的目标波特率
#使用如下命令,使修改生效
sudo systemctl restart miivii-autostarter.service

验证方法#
使用如下工具,修改串口波特率,如果看到如下输出,则代表修改成功
$GPRMC,060249.000,A,3949.63046,N,11616.48565,E,0.296,,291118,,,A*4d
串口工具使用方法
准备工作#
PC端(Ubuntu系统)
#安装
sudo apt-get install putty -y
收发验证#
PC端UART设备节点获取
#PC端接入USB转串口模块后,执行命令,输出结果为UART设备节点:
ls /dev | grep -E 'ttyUSB[0-9]+' | sort -V | tail -n 1
#打开putty
sudo putty
打开putty后,在”Session“中进行参数配置,需要在”Serial line“中输入连接的设备节点,在”Speed“中设置为115200,选择“Connection type”中选择“Serial”

在”Terminal“中进行参数配置,在“Line discipline options”中选择“Force on”,之后点击“Open”,进入到数据传输界面

使用putty判断收发是否成功
观察设备端和PC端的传输界面,在任意一个界面中输入任何信息,两个界面显示同样内容即意味着收发成功
PC端显示

设备PPS信号校准异常通用排查指南#
现象1:使用命令行工具测试PPS信号时提示“连接超时”#
解决办法:#
1、检查硬件物理连接
1)确认PPS信号线已牢固插入设备的指定接口,避免松动或插错位置;
2)观察信号线接口是否有明显氧化、损坏或弯折;
3)建议重新插拔一次信号线后,再测试是否仍提示超时;
4)若信号源为外部设备(如GPS模块),尝试更换另一台正常设备验证信号输出。
2、验证信号源状态
1)在终端输入命令查看当前识别的PPS信号源:
# 替换为实际设备节点
sudo cat /dev/pps0
2)正常输出:持续显示时间戳和序列号(示例):
source 0: 1715652256.000018408 sequence: 7929
3)无输出或报错:检查信号源设备是否正常工作。
现象2:系统无法识别PPS信号源#
解决办法:#
1、检查驱动安装状态
1)输入命令验证驱动是否加载:
dmesg | grep -i "pps"
2)若输出包含 No PPS source found→ 重新安装或更新PPS驱动。
2、重新配置输入端口
1)编辑系统配置文件,指定正确的PPS设备节点:
# 或其他配置文件路径
sudo vim /etc/pps.conf
2)修改后重启服务:
sudo systemctl restart pps.service
现象3:PPS信号周期不稳定或误差过大#
解决办法:#
1、排除环境干扰
1)检查设备周边是否存在强电磁干扰源(如大功率电机、高频通信设备)。
2)将设备移至屏蔽环境测试,观察信号是否恢复稳定。
2、校准本地时钟
1)输入命令同步本地时钟与PPS信号:
# 使用校准工具验证同步精度
sudo ppscheck -s /dev/pps0
2)若输出显示偏差超过阈值(如±1ms),需检查信号线长度或更换高质量屏蔽线。
技术支持#
若按照上述步骤全部排查后未解决您的问题,可尝试如下操作:
1、系统镜像修复:重新烧录系统镜像(操作前备份数据),完成后重新配置PPS服务。
2、若问题依旧,提交以下信息至技术支持:
1)信号源设备型号与固件版本;
2)终端命令完整输出截图;
3)配置文件修改记录。