方法一:使用官方的Ucenter软件进行配置,但是掉电后会失效,重新开机为默认设置,使用BBR也只能保存约半小时左右,且MAX-M8没有SPI Flash接口。I2C接口在第七代之后不支持EEPROM存储配置,只能用作通信。Ucenter链接 u-center | u-blox
方法二:使用单片机等外设在上电时进行初始化配置。在初始化配置时需要知道具体的协议,我使用的MAX-M8型号的数据手册链接如下https://www.u-blox.com/zh/ubx-viewer/view/u-blox8-M8_ReceiverDescrProtSpec_UBX-13003221?url=https%3A%2F%2Fwww.u-blox.com%2Fsites%2Fdefault%2Ffiles%2Fproducts%2Fdocuments%2Fu-blox8-M8_ReceiverDescrProtSpec_UBX-13003221.pdf 这个数据手册长达476页,看起来很头疼,具体的配置协议在Interface Description->UBX Protocol->UBX-CFG(0x06)中。以配置串口为例,即UBX-CFG-PRT(0x06 0x00),对应章节为32.10.25.2,我们可以找到如下表格
其中Message Structure就告诉我们配置协议的具体内容了,首先是比较固定的Header,Class,ID等,然后是具体发送的字节长度,payload应该指的是具体每一个字节的内容,最后是数据校验位,下面来看payload的具体内容。
以其中的mode为例,在向下看数据手册会发现有Bitfield Mode,Mode这一部分一共有四个字节,即32位,Bitfield中就定义了每一位作用,比如我要使用8位传输,无校验,1个停止位,从nStopBits即第13位向右以此设置为001000 11000000,转化为16进制即0x08 0xc0,对于reserved位置,可以随便设置,但要注意校验位的值。由于是小端模式,发送数据时要将0xC0放在前面,0x08放在后面。我还是发现有些太麻烦了,还得写个小程序计算校验位的值,并且这20个字节每个都需要这样配置,很浪费时间,下面介绍一个简单方法。
下面这种方法需要用到ucenter软件,串口调试助手,两个USB转TTL模块杜邦线几根。
1将两个USB转TTL模块都接到电脑上,下面用1和2来表示,将1和2的TX,RX交叉连接,GND也接到一起。
2打开ucenter和串口调试助手,在ucenter中选择1对应的COM口,在串口调试助手中选择2对应的COM口(两个可以交换),注意将两个软件的波特率设为相同的,一般为9600,记得打开串口。
3打开ucenter,点击View->Configuration View,还是以串口配置为例,找到PRT
选择自己想要的参数,比如波特率设置为115200,点击左下角Send按钮,在串口调试助手上就能看到ucenter发出的信息了,记得在串口调试助手上选择16进制显示,可以多点几次send按钮,确保数据的准确性。
4串口调试助手接收到的信息有很强的规律性,开头一般都是B5 62,将信息分段就能获得配置信息了,接收到的信息中较短的信息一般没用,注意筛查。
5将接收到的配置信息设置成数组,使用STM32串口发送,就能够配置成功了。