基于ARM嵌入式的GPS定位设计.docx

上传人:b****3 文档编号:2126969 上传时间:2022-10-27 格式:DOCX 页数:9 大小:432.93KB
下载 相关 举报
基于ARM嵌入式的GPS定位设计.docx_第1页
第1页 / 共9页
基于ARM嵌入式的GPS定位设计.docx_第2页
第2页 / 共9页
基于ARM嵌入式的GPS定位设计.docx_第3页
第3页 / 共9页
基于ARM嵌入式的GPS定位设计.docx_第4页
第4页 / 共9页
基于ARM嵌入式的GPS定位设计.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

基于ARM嵌入式的GPS定位设计.docx

《基于ARM嵌入式的GPS定位设计.docx》由会员分享,可在线阅读,更多相关《基于ARM嵌入式的GPS定位设计.docx(9页珍藏版)》请在冰豆网上搜索。

基于ARM嵌入式的GPS定位设计.docx

基于ARM嵌入式的GPS定位设计

 

学院

电子信息工程专业

 

“专业课程设计”报告

 

题目名称:

基于ARM嵌入式的GPS定位设计

班级:

同组人:

指导教师:

1设计任务

本次设计主要是实现在GPS的定位信息提取,其中包括经度、纬度、时间、日期等,采用意法半导体的CORTEX-M3内核的STM32F103RBT6为核心板,液晶采用采用Nokia5510。

总体来说实现了耗电少,功能齐全,简单易用的特点。

2设计背景及方案

GPS全球定位系统最早是由美国军方建立用以进行军事活动的侦查的,能够在全球范围内,提供实时、连续、全天候的导航定位及授时服务,共分为三个部分,空间部分,地面部分,和接收终端部分。

GPS系统共由24颗卫星组成,分布在6个轨道上面,每个轨道上有4颗,轨道倾角为55度,不论在什么地方,只要能够收到4颗以上的卫星,就可以实现实时定位。

3系统硬件简述

(1)最小核心系统

最小系统是由STM32F103RBT6微处理器构成,核心是由32位的ARM-CORTEX-M3,最高时钟可以达到72MHZ,有单周期的乘法和除法运算,内部有128k的Flash,20k的SRAM,

2.0V/3.6V的IO供电,上电、断电复位,可编程电压监测,内嵌8M的RC振荡晶振,内部40K振荡器,内嵌PLL的CPU时钟,内嵌使用32K晶振的RTC振荡器。

具有低功耗的睡眠、待机、停机模式,VBT为后备寄存器提供电源。

具有串行SWD和JTAG调试模式。

7个DMA通道支持定时器、ADC、SPI、I^C、USART。

一个12位的模数转换器,(16通道)转换范围为0~.3.6V,温度传感器。

51个丰富的IO端口,兼容5V电平,所有的IO口可以映射到16个外部中断。

6个定时器,(3个16位的定时器,每个定时器具有4个输入输出捕捉/PWM脉冲调制/脉冲计数的通道,2个看门狗定时器,1个24位的系统定时器,自动递减功能)。

2个I^C,2个SPI,3个USART通信接口。

(2LCD液晶

Nokia5510是Philips产的单芯片LCD驱动控制低功耗的显示液晶,其显示为RAM48*84串行最高4Mbits/S,COMS电平兼容,逻辑电平为3.0~3.3V

低功耗适用于电池供电,使用温度范围为-25度到70度。

其中引脚如下:

Pin1;VCCPin2:

GND

Pin3:

ENPin4:

RES

Pin5:

GNDPin6:

SDIN

Pin7:

SCLKPin8:

LED背光

图6为水平写入的地址表,用以往RAM中写入字符。

(3)C3-370GPS终端接受模块

C3-370c是韩国产的全自动GPS接受模块,具有SIR第三代的结构组成,其内核是有ARM7TDIMCPU,4M的Flash内存,自带有微型天线,20通道,C\A码,L1的频率。

定位精度<10M3DRMS,;冷启动约为60s,热启动少于10s,协议时NMEA0813,9600的波特率。

NMEA的输出格式有六种GGA、GLL、GSA、GSV、RMC、VGT,其中我们解析的一种是RMC格式的。

一条$GPRMC包含13个字段,语句标识符,世间时间,定位状态,纬度,纬度方位,经度,经度方位,地面速度,地面航向,日期,磁偏角,校检,结束标记,具体格式如下:

$GPRMC,050458.000,A,2459.8991,N,10242.8698,E,0.37,130.03,190808,,,A*66

<1>UTC时间,hhmmss(时分秒)格式

<2>定位状态,A=有效定位,V=无效定位

<3>纬度ddmm.mmmm(度分)格式(前面的0也将被传输)

<4>纬度半球N(北半球)或S(南半球)

<5>经度dddmm.mmmm(度分)格式(前面的0也将被传输)

<6>经度半球E(东经)或W(西经)

<7>地面速率(000.0~999.9节,前面的0也将被传输)

<8>地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)

<9>UTC日期,ddmmyy(日月年)格式

<10>磁偏角(000.0~180.0度,前面的0也将被传输)

<11>磁偏角方向,E(东)或W(西)

上图为C3-370引脚图,具体我们只用到了VCC,TX,RX,GND,BOOT,

3硬件整体连接图

硬件流程图

由于GPS和MCU的电平兼容,所以在硬件连接中,GPS接受终端的TX接MCU的RX,RX接TX,另外通过RS232电平转换后可以直接进行上位机软件的接受工作,最后把解析的数据显示在Nokia5510上面。

4软件流程图及程序

(1)流程图

软件流程图

(2)程序

u8GPS_parse(char*buf)

{

intd,m,mm;

u8i;

char*word,*left=buf+1;

staticu8msgcount=0,msgid=0,satcount=0;//解析GSV用到的变量

//各通道采用的卫星编号

u8usedsatcount=0;

if(buf[0]!

='$')

return0;

//word=split(left,ASTERISK,&left);

//if(check(word,left)!

=1)

//return0;

//{

//};

//left=word;

word=split(left,SEMICOLON,&left);//开始解析

if(!

strcmp(word,"GPRMC"))//相等时,返回0值,进入函数解析GPRMC格式

{

//时间

word=split(left,SEMICOLON,&left);

if(word!

=NULL)

{

if(strncmp(lasttime,word,20))//比较不大于20个字符的两个字符串返回>0/<0/=0;

{

sscanf(word,"%2d%2d%2d.%4d",&gps.hh,&gps.mm,&gps.ss,&gps.ms);//取出指定格式的字符

strncpy(lasttime,word,20);//拷贝20个字符从word到lasttime中,返回lasttime;

}

}

//定位状态

word=split(left,SEMICOLON,&left);

if(word!

=NULL)

{

if(word[0]=='A')

gps.isvalid=1;

else

gps.isvalid=0;

}

//纬度

word=split(left,SEMICOLON,&left);

if(word!

=NULL)

{

sscanf(word,"%2d%2d.%4d",&d,&m,&mm);

gps.latitude=(float)d+(float)m/60.0+(float)mm/600000.0;

}

//南北半球标志

word=split(left,SEMICOLON,&left);

if(word!

=NULL)

{

if(word[0]=='S')

{//gps.latitude=-gps.latitude;

gps.latNS='S';

}else{

gps.latNS='N';

}

}

//经度

word=split(left,SEMICOLON,&left);

if(word!

=NULL)

{

intd,m,mm;

sscanf(word,"%3d%2d.%4d",&d,&m,&mm);

gps.longitude=(float)d+(float)m/60.0+(float)mm/600000.0;

}

//东西半球标志

word=split(left,SEMICOLON,&left);

if(word!

=NULL)

{

if(word[0]=='W')

{

gps.lgtEW='W';

//gps.longitude=-gps.longitude;

}else{

gps.lgtEW='E';

}

}

//对地运动速度

word=split(left,SEMICOLON,&left);

if(word!

=NULL)

{

gps.speed=my_atof(word)*1.852;

}

//对地运动方向

word=split(left,SEMICOLON,&left);

if(word!

=NULL)

{

gps.direction=my_atof(word);

}

//utc日期

word=split(left,SEMICOLON,&left);

if(word!

=NULL)

{

sscanf(word,"%2d%2d%2d",&gps.DD,&gps.MM,&gps.YY);

}

}

 

5调试过程

由于GPS的数据回收过程是一直有效,所以在配置串口中断的过程中要注意数据的回收处理,然后才能解析。

最先开始的时候必须到野外看看GPS模块的性能测试。

调试的时候,一定要先把串口配置好,这样在调试的过程中可以边从MCU中从串口读取GPS发回的数据,看看串口配置的是否正确。

几次试验,最后测的经纬度范围在goole地球上显示的效果精度<10m,十分的满意。

6总结

通过这次GPS接受的调试,认识的了GPS工作过程,理解了基本的原理,还需解决的问题包括GPS的阶段操作,MCU的分时工作,和电源的低功耗设计等等。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1