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所示:
- [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所示:
0表示定位失败或未定位,1表示定位成功,其它值保留。
rtc结构体
rtc结构体如图3所示:
- sYear:年;
- ucMon:月;
- ucDay:日;
- ucHour:时;
- ucMin:分;
- fSec:秒。
扩展浮点数结构体
- fDat:值;
- fErr:误差。
大地坐标系(位置)结构体
- tLon:经度,单位:弧度;
- tLat:纬度,单位:弧度;
- fAlt:高程,单位:米。
大地坐标系(速度)结构体
- 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使能,具体参见相关硬件手册;
- 外部中断。