GPS精确授时方法研究-基于ublox GPS

最近需要用到gps进行精确的时间同步,精度需要在几十到几百纳秒级别,研究了一下,感觉能用了,写篇博客记录一下。

ublox的gps都类似,可以通过uart,iic,spi进行通信(部分芯片没有spi),进行gps数据的传输或者进行gps模式的配置。网上一般教程都是通过u-center软件进行配置。

但是因为选芯片和设计电路时没考虑太多,芯片内部没有flash,外部也没加eeprom,所以没有办法通过上位机设置完之后保存,只能通过程序在每次上电之后重新配置,所以必须找到ublox的控制代码,在每次上电时进行gps设置。

ublox有一篇文档,专门讲控制代码的,一百多页,看了两天,发现ucenter配置好之后可以直接生成代码。。

https://www.u-blox.com/sites/default/files/products/documents/u-blox7-V14_ReceiverDescrProtSpec_%28GPS.G7-SW-12001%29_Public.pdf

打开ucenter,view-messages view 然后打开UBX-TP5,这里是进行time pulse设置的。点击左下角靠右的四个按钮的左数第三个,点两下,应该会出来代码的框,这时候进行图形化的配置,代码也会跟随这变化,需要注意的是,代码框内分为了左中右三部分,通过空格隔开的,只有中间的一部分是有用的,需要把中间的复制出来,整串代码中间通过空格隔开,不能有回车。

连接好后,把代码通过串口发过去,就会自动配置完成。
这时,time pulse会每秒发送一个脉冲,串口会输出上一个脉冲的时间,gps的误差只有几十纳秒。

但是因为脉冲频率很低,所以上升沿很长,这样误差比较大,所以将高电平时间改为1us,这样相当于1MHZ的频率,对于上升沿判断的误差会大大降低。

这样就得到了脉冲来的时候的准确时间,然后需要一个高精度的晶振,进行fpga内部的同步及时,当脉冲来的时候进行计时,收到串口的脉冲真实时间后,进行时间累加,即得到当前真实时间。如果晶振精度够高,误差就会很小。

当然,还有另一种方法,把time pulse设置为10MHZ,类似于时钟输出,这时需要主机提供中断,当gps模块接收到中断时,输出一个时间,这个时间是gps接收到中断前一个脉冲的时间,这样也可以得到真实时间,而且不需要fpga的高精度晶振。

参考资料:
https://www.u-blox.com/sites/default/files/products/documents/u-blox7-V14_ReceiverDescrProtSpec_%28GPS.G7-SW-12001%29_Public.pdf u-blox 使用手册

http://www.docin.com/p-319158614.html u-center软件使用
http://blog.csdn.net/xukai871105/article/details/19980139 u-center软件使用

http://www.cnblogs.com/pingwen/p/5225461.html u-blox指令解析

https://www.u-blox.com/en/product/u-center-windows u-center 软件

https://www.u-blox.com/sites/default/files/products/documents/Timing_AppNote_%28GPS.G6-X-11007%29.pdf ublox时钟设置

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ublox-m8n-gps模块是一种高精度的GPS定位模块,适用于各种导航和定位应用。而STM32F103是一种常用的ARM Cortex-M3微控制器,具有良好的性能和可靠性。 在使用ublox-m8n-gps模块和STM32F103控制器时,可以借助相应的例程来实现GPS数据的接收和解析。以下是一个简单的例程流程: 1. 首先,配置STM32F103的串口通信模块,确保能够与GPS模块进行数据交互。例如,选择合适的波特率和数据位、停止位及校验位。 2. 初始化GPS模块,向其发送相应的配置指令,以确保获取所需的GPS数据。可以使用ublox公司提供的配置工具或者手动发送AT指令进行配置。 3. 在主循环中,通过串口接收到的数据判断是否接收到有效的GPS数据。可以使用适当的校验算法来验证数据的完整性和准确性。 4. 解析GPS数据,获取所需的定位信息,如经度、纬度、海拔、速度等。ublox-m8n-gps模块通常提供了相应的数据格式及协议,可以通过解析数据包来获取所需的信息。 5. 根据需要进行进一步的处理和应用,比如将定位信息显示在LCD屏幕上,或者将数据发送到其他设备。 需要注意的是,以上例程只是一个大致的流程,具体的实现方式和相应的库函数可能因不同的开发环境和工具链而有所不同。因此,在实际应用中,需要根据具体的开发板及使用的开发环境进行相应的调整和修改。同时,还可以参考官方文档和相关资料,以更好地理解和应用ublox-m8n-gps模块和STM32F103控制器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值