1.NEO-M8Z配置
下载u-center(官网,要爬墙Home | u-blox)
首先设置GNSS模式
后面框起来的部分不输入,也可以配置
配置为北斗模式
neo-m8z如果不滤调gps,他还会输出GP信息
输出到串口的配置信息为:(7B 9E 后的信息不加也能设置)
配置为gps模式
B6 62后可以不写,也可以配置,如上,这个应该也可以整体写入,我没测试
波特率设置
{0xB5, 0x62, 0x06, 0x00, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0xD0, 0x08, 0x00,
0x00, 0x00, 0xC2, 0x01, 0x00, 0x07, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7E};
2.中科微ATGM332D
设置模式参考:《CASIC多模卫星接收协议_V20200106.pdf》(杭州中科微的官网有这个文档)
static const chr8_t gps_mode[] = "$PCAS04,1*18\r\n";
static const chr8_t bd_mode[] = "$PCAS04,2*1B\r\n";
static const chr8_t gpsbd_mode[] = "$PCAS04,3*1A\r\n";static const chr8_t uart_b[] = "$PCAS01,5*19\r\n"; /* 设置波特率:115200 */
为了兼容识别两款芯片,通过查看是否输出GPTXT,来区别,是则为ATGM332D
我们的产品并没有保存配置,意味着每次启动的时候都会发送命令配置一次芯片
默认情况下,芯片同时支持GPS和北斗信息输出
求余工具
中科微校验,使用的是字符串的值求余,为了方便配置,写了一个工具来计算:
(c和c++混一起的原因是因为刚开始用的是c中的scanf, 但是release的时候一直报错,我就索性用C++里面的cin作为输入了)
#include<stdio.h>
#include<string.h>
#include <iostream>
using namespace std;
int main()
{
char str[100];
printf("$PCAS04,2*1B计算单北斗模式,只需输入PCAS04,2\r\n");
while (1)
{
printf("\r\n------------------------------------");
printf("\r\n请输入需要计算异或的字符串:\r\n\r\n");
cin >> str;
printf("\r\n");
char value = str[0];
for (int i = 1; i < strlen(str); i++)
{
value = value ^ str[i];
}
printf("异或的结果: 0x%02x\r\n", value);
}
return 1;
}