Skip to content

UCchip-GNSS 开发手册

前言

概述

本文档主要目的是介绍御芯微导航芯片和模组的gnss二次开发,方便用户快速上手。

源码获取

二次开发示例源码:https://uc8088.com/t/topic/85

技术支持

通过以下方式可以获取相应的技术支持:

  • 查看开发手册;
  • 登录官网(www.ucchip.com),确认使用的GNSS设备、gnss开发库是否是最新版本;
  • 官方论坛(https://uc8088.com/c/5-category/9-category/9)提问,并上传问题现象。

适用产品

UCchip-GNSS支持的产品包括芯片和模组两大类。其中,芯片包括:UC8088和UC8188,模组包括:UCM108e、UCM802和UCM868。

源码说明

源码结构

二次开发示例源码结构如图1所示:

avatar

图1. 示例代码结构图
  • [applications]应用层,包括main函数入口;
  • [board]板级支持包;
  • [Lib]gnss开发库相关内容;
  • [libraries]驱动层,包括:uart、i2c、spi等;
  • [Other]其它,以task方式实现串口收发处理,以及gnss开发库使用到的UartSend等功能;
  • [rt-thread]rtthread操作系统相关代码。

代码说明

示例代码简单展示了御芯微gnss二次开发库的使用。

gnss二次开发库使用说明

开发库提供外部调用接口函数

void GnssStart(IN const CALL_BACK GetPvt, IN U08 ucLnaEnablePin, IN BOOL bFlashOpt, IN const U08 *pAgnssData);

void GnssStop();

void TicIsr();

void split_at_cmd(const U08 atCont, const S16 atLen, U08 npara, U08 paralen, U16 paraHeadIdx);

void parse_at_cmd_sys(U08 atCont, const U08 npara, const S16 atLen, U08 paralen, U16 *parahead);

GnssStart函数说明

该函数用于启动gnss功能,它将会创建2个任务(优先级均为10,建议二次开发用户创建的任务优先级不要超过,以免gnss二次开发库运行不正常)。

  • 参数1:GetPvt,回调函数用于从二次开发库中获取定位时间及结果,不需要获取时置NULL;
  • 参数2:ucLnaEnablePin,LNA使能管脚,根据实际硬件的原理图(如果硬件上LNA固定使能,不需要使用GPIO管脚控制,则置0xFF);
  • 参数3:bFlashOpt,控制二次开发库运行过程中是否保存卫星相关信息,TRUE保存,FALSE不保存;
  • 参数4:pAgnssData,该参数为辅助GNSS数据,暂不支持,固定置NULL。

GnssStop函数说明

该函数用于结束gnss功能,当GnssStart的参数3置为FALSE时,GnssStop执行时会将卫星相关信息保存置flash中。

TicIsr函数说明

该函数为gnss的中断处理函数,直接在外部中断服务函数中调用即可。

split_at_cmd函数说明

该函数用于将接收到的命令按照分隔符进行拆分。

  • 参数1:atCont,接收到的完整一条指令内容;
  • 参数2:atLen,完整指令长度-2;
  • 参数3:npara,指令拆分后参数的个数;
  • 参数4:paralen,拆分后每个参数的长度;
  • 参数5:paraHeadIdx,拆分后每个参数在完整指令语句中所占位置索引。

parse_at_cmd_sys函数说明

该函数用于解析控制命令。

  • 参数1:atCont,接收到的完整一条指令内容;
  • 参数2:npara,指令拆分后参数的个数;
  • 参数3:atLen,完整指令长度;
  • 参数4:paralen,拆分后每个参数的长度;
  • 参数5:paraHeadIdx,拆分后每个参数在完整指令语句中所占位置索引。

外部提供开发库调用函数

void UartSend(IN const U08 *pData, IN U16 usLen);

void SetBsp(IN ENUM_UART_BSP eBsp);

void FlashEraseSector(uint32_t nBaseAddr);

void FlashWrite(uint32_t nAddr, const uint8_t* pData, uint16_t usLen);

void FlashQRead(uint32_t nAddr, uint8_t* pData, uint16_t usLen);

UartSend函数说明

用于发送串口数据。

  • 参数1:pData,要发送的数据;
  • 参数2:usLen,发送数据的长度。

SetBsp函数说明

用于设置串口波特率。

  • 参数1:eBsp,特波率,(暂时只支持9600、19200和115200)。

FlashEraseSector函数说明

用于擦除flash指定空间。

  • 参数1:nBaseAddr,flash擦除起始地址。

FlashWrite函数说明

用于将数据写入flash指定空间。

  • 参数1:nAddr,flash写入数据起始地址;
  • 参数2:pData,写入数据;
  • 参数3:usLen,写入数据的长度。

FlashQRead函数说明

用于读取flash指定空间的数据。

  • 参数1:nAddr,flash读取地址;
  • 参数2:pData,读取的数据;
  • 参数3:usLen,读取数据的长度。

开发库接口涉及结构体说明

定位状态枚举量

定位状态枚举量如图2所示:

avatar

图2. 定位状态枚举量

0表示定位失败或未定位,1表示定位成功,其它值保留。

rtc结构体

rtc结构体如图3所示:

avatar

图3. rtc结构体
  • sYear:年;
  • ucMon:月;
  • ucDay:日;
  • ucHour:时;
  • ucMin:分;
  • fSec:秒。

扩展浮点数结构体

avatar

图3. 扩展浮点数结构体
  • fDat:值;
  • fErr:误差。

大地坐标系(位置)结构体

avatar

图5. 大地坐标系(位置)结构体
  • tLon:经度,单位:弧度;
  • tLat:纬度,单位:弧度;
  • fAlt:高程,单位:米。

大地坐标系(速度)结构体

avatar

图6. 大地坐标系(速度)结构体
  • fEst:东向速度,单位:米/秒;
  • fNrt:北向速度,单位:米/秒;
  • fUp:天向速度,单位:米/秒;
  • fV:对地速度,单位:米/秒;
  • fHeading:偏航角,单位:弧度。

开发库接口涉及资源说明

gnss开发库内部使用了部分资源,分别如下:

  • flash(ucm108e):第110至第122block和第128block,flash总共128个block,具体见flash手册;
  • flash(ucm802、UCM868):第481至第493block和第512block,flash总共512个block,具体见flash手册;
  • gpio管脚:控制lna使能,具体参见相关硬件手册;
  • 外部中断。
Back to top