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

[复制链接]
查看669 | 回复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的相位关系?
麻烦尽快解答!谢谢!
回复

使用道具 举报

爱笑 | 2024-11-6 13:48:59 | 显示全部楼层
马上抓个技术给你解答!
用心做好保姆工作
回复 支持 反对

使用道具 举报

123456 | 2024-11-6 14:30:31 | 显示全部楼层
建议将波特率设置成115200   还有把多余的信息关闭  只保留RMC的信息,相关资料可以在该链接进行获取https://www.icofchina.com/xiazai/
回复 支持 反对

使用道具 举报

Younglion | 2024-11-6 14:43:36 | 显示全部楼层
123456 发表于 2024-11-6 14:30
建议将波特率设置成115200   还有把多余的信息关闭  只保留RMC的信息,相关资料可以在该链接进行获取https: ...

设计上没有预留单片机到GPS串口的通讯线,只有接收。此法不通。。。。
回复 支持 反对

使用道具 举报

Younglion | 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信号到来的时候,赶紧校时吧!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则