发帖
4 0 0

急急急: GPS输出的串行数据与1PPS信号之间的关系

Younglion
中级会员

5

主题

7

回帖

257

积分

中级会员

积分
257
GP系列 947 4 2024-11-6 12:53:08

实际工程,使用了几百个GP-02, 现在相互之间卫星授时的值不一致!
从GPS输出的数据量还是蛮大的。通过查看相同帧头之间的字节数,比如两个 "$GNRMC"之间的字节数,有的超过了1K字节,在9600波特率下,传输耗费的时间就超出了1秒。随着搜星过程的深入,星越多,数据量就越大。那么,接收设备收到的数据帧表示的时间值与当时的实际时刻是有偏差的,而且还随数据量漂浮不定。这种情况下就需要借助1PPS信号来做精准同步。
但是,通过抓取信号波形以及我们处理中输出的波形(参看下图)可以看到,如果截取"$GNRMC"帧的时段完全在两个1PPS信号之间,就可以将秒数值加1,用后一个1PPS的上升沿来做校时操作;如果因数据量大,这个抓取"GNRMC"的时段与第二个1PPS重叠的话,这个秒值就需要加2,用再后一个1pps来校时了。

波形.png


问题来了:重叠,乃至滞后到这个1PPS之后,如何判断数据与哪个1PPS关联,GPS自身有没有校准?总不会因为每批数据字节数超出1K,一直这样滞后吧?串口收到的时间值就完全不准了。
请问技术支持,这种情况,该怎么判断处理截取的"$GNRMC"帧与1PPS的相位关系?
麻烦尽快解答!谢谢!
──── 0人觉得很赞 ────

使用道具 举报

2024-11-6 13:48:59
马上抓个技术给你解答!
2024-11-6 14:30:31
建议将波特率设置成115200   还有把多余的信息关闭  只保留RMC的信息,相关资料可以在该链接进行获取https://www.icofchina.com/xiazai/
2024-11-6 14:43:36
123456 发表于 2024-11-6 14:30
建议将波特率设置成115200   还有把多余的信息关闭  只保留RMC的信息,相关资料可以在该链接进行获取https: ...

设计上没有预留单片机到GPS串口的通讯线,只有接收。此法不通。。。。
2024-11-7 18:41:00
求人不如求己!
1、通过截取数据分析,每批数据都是以“$GNGGA”帧开始的,以"$GPTXT"结束。而"$GNGGA"中也有时间数据。从这里取时间,就比漂浮的$GNRMC帧靠谱。
2、长时间的输出,1000秒抓数据发现,999个1PPS,只有996个$GNGGA帧,而且,在第0秒获得一个时钟值,在第999秒再抓一个,居然只有996秒步进,说明它在串口输出的确是有严重的滞后,它没有关注串口输出数据的字节数和速率,仅仅是整批整批的送到发送缓冲区了。
3、之前为了节电,On/Off管脚还是连了的。拉低进休眠,拉高重新工作。
于是解决办法就有了:
A. 隔一段时间(1000/4=250秒=4分钟左右)识别到每批数据的最后一帧"$GPTXT"的时候,拉低On/Off使GP02进入休眠状态;
B. 休眠1分钟后,唤醒它。此时,它的发送缓冲区几乎没有残留数据(进休眠再唤醒,原来发送缓冲区没发出来的数据会接续先发),GPS 开始定位和获取卫星时间并通过串口向外发送。
C. 因为刚开始发送数据,还没有出现各批数据跨出2个1PPS周期的情况,"$GNGGA"肯定在两个1PPS信号之间,那么,在下一个1PPS信号到来的时候,赶紧校时吧!
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28026 个
  • 话题数: 39482 篇