最近在调试ublox NEO-7 GPS,主控芯片为TMS320C6722,这款DSP外设没有UART,所以用SPI总线与GPS进行通讯。最初想在网上搜一些关于SPI接口的ublox数据读取经验,但网上都是清一色的UART接口读取ublox数据。通过这两天阅读手册和在硬件上的实践调试,总算有了一些结果,所以总结下来,希望能给看到本文的网友提供些调试经验,也欢迎众网友与博主进行讨论。
对于ublox的官方手册,需要看的应该就三个:1.MAX7-NEO7_HardwareIntegrationManual_(UBX-13003704);2.NEO-7P_DataSheet_(UBX-13003787);3.u-blox7-V14_ReceiverDescriptionProtocolSpec_Public_(GPS.G7-SW-12001)。其中1和2跟硬件设计联系较密切,可以只看其关于SPI的部分,第三部分讲的是通讯协议,需要仔细看。
一、首先我们需要再强调一下SPI总线的特点。SPI总线的传输是需要首先确定主机和从机的,ublox手册上指出当采用NEO-7上的SPI接口时GPS作为从机,与其连接的MCU作为主机;这里的SPI总线为四线连接:MISO、MOSI、CLK(时钟引脚)、CS(片选引脚);SPI传输时时钟信号由主机提供,也就是传输频率由主机确定;传输总是由主机先发送数据触发传输开始,也就是说如果主机不发送数据的话,主从机之间是无法进行数据通信的,而且主从机的传输总是同步进行。 手册上说NMEA与UBX协议对于SPI接口来说都支持,然后问题来了:用UART进行与GPS通信时,NMEA协议的GGA、GLL、GSA、GSV、RMC、VTG信