《鸿蒙智能互联设备开发(微课版)》 课件 8.2.4 GPS驱动开发.pptx

《鸿蒙智能互联设备开发(微课版)》 课件 8.2.4 GPS驱动开发.pptx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

8.2.4GPS驱动开发

通过本节学习,您可以:了解PGS模块的驱动开发

GPS驱动开发GPS模块需要先通过启动引脚来启动模块,启动后GPS模块会采集定位信息并通过串口发送给stm32f103,stm32f103采集到定位信息后进行解析,再与速度信息一起通过IIC接口发送给stm32mp157。1.启动GPS模块(1)GPS模块通过stm32mp157的PE8引脚输出高电平启动。宏定义PE8引脚。PE8引脚为72号引脚,在库函数BM_Module_GPIO.c将该引脚定义为MODULE_IO_12,所以只需要对MODULE_IO_12进行宏定义即可。caseMODULE_IO_12://PE8return72;...#defineQC_StartMODULE_IO_12//宏定义启动GPS引脚初始化PE8引脚。调用库函数BM_Module_GPIO.c中的“MODULE_GPIOInit()”函数即可对引脚初始化。将引脚配置为上拉输出模式。MODULE_GPIOInit(QC_Start,MODULE_GPIO_Out_PullUp);//初始化启动GPS引脚

GPS驱动开发1.启动GPS模块(2)启动GPS模块。调用库函数BM_Module_GPIO.c中的“MODULE_GPIOWrite()”函数使PE8脚输出高电平时启动GPS模块。voidQC_Init(void){MODULE_GPIOInit(QC_Beep,MODULE_GPIO_Out_PullNone);//初始化蜂鸣器MODULE_GPIOInit(QC_Light,MODULE_GPIO_Out_PullNone);//初始化补光灯引脚MODULE_GPIOInit(QC_Start,MODULE_GPIO_Out_PullUp);//初始化启动GPS引脚MODULE_GPIOWrite(QC_Start,1);//设置输出高电平启动GPS}

GPS驱动开发2.获取GPS模块定位信息GPS模块采集到数据后通过IIC1发送给stm32mp157,stm32mp157截取GPS模块采集的GPRMC格式数据,对此格式数据进行解析就可以得到经纬度信息。(1)获取GPS数据。通过IIC1获取到数据,再通过解析函数解析经纬度信息。voidQC_gps(void){uint8_tRead_Buff_gps[100]={0};...MODULE_IICRead(0xA2,Read_Buff_gps,90);//读取数据NMEA_BDS_GPRMC_Analysis(gpsmsg,Read_Buff_gps);//解析数据...}

GPS驱动开发2.获取GPS模块定位信息(2)经纬度解析函数。解析GPRMC格式数据,提取数据中的经纬度信息。GPRMC格式数据例如:$GPRMC,090634.000,A,2812.7182,N,11252.7955,E,0.23,29.82,270421,,,A*5A需要解析的纬度数据为第三个逗号到第四个逗号的数据2812.7182,小数点前两位为分,两位前的为度。解析出来为28度12分。需要解析的经度数据为第五个逗号到第六个逗号的数据为11252.7955,小数点前两位为分,两位前的为度。解析出来为112度52分。

GPS驱动开发GPRMC格式数据解析。先通过“strstr()”函数在GPS模块回传的数据中找出GPRMC格式数据的首地址,如上例为“$”的地址。根据“NMEA_Comma_Pos()”函数得出GPRMC格式数据到第三个逗号的长度,纬度为数据“$GPRMC,090634.000,”的长度20,经度数据“$GPRMC,090634.000,A,2812.7182,N,”的长度32。数据计算:GPRMC格式数据的首地址(“$”的地址)加上此长度(20)就是纬度数据的地址(“2812.7182”中第一个“2”的地址),通过“NMEA_Pow()”函数将纬度数据转换成整型得到“2812”,最后将纬度数据除100得到纬度数据“28.12”,代表纬度为28度12分。经度计算只有加上长度为32不一样,其余原理一样。

GPS驱动开发voidNMEA_BDS_GPRMC_Analysis(gps_msg*gpsmsg,u8*buf){u8*p4,dx;u8posx;u32temp;p4=(u8*)strstr((

您可能关注的文档

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档