1、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为后备寄存器提供电
2、源。具有串行SWD和JTAG调试模式。7个DMA通道支持定时器、ADC、SPI、IC、USART。一个12位的模数转换器,(16通道)转换范围为0.3.6V,温度传感器。51个丰富的IO端口,兼容5V电平,所有的IO口可以映射到16个外部中断。6个定时器,(3个16位的定时器,每个定时器具有4个输入输出捕捉/PWM脉冲调制/脉冲计数的通道,2个看门狗定时器,1个24位的系统定时器,自动递减功能)。2个IC,2个SPI,3个USART通信接口。(2LCD液晶Nokia5510是Philips产的单芯片LCD驱动控制低功耗的显示液晶,其显示为RAM 48*84 串行最高4Mbits/S,COMS电
3、平兼容,逻辑电平为3.03.3V低功耗适用于电池供电,使用温度范围为-25度到70度。其中引脚如下:Pin1;VCC Pin2:GNDPin3: EN Pin4: RESPin5:GND Pin6: SDINPin7:SCLK Pin8:LED背光图6为水平写入的地址表,用以往RAM中写入字符。(3)C3-370GPS终端接受模块 C3-370c是韩国产的全自动GPS接受模块,具有SIR第三代的结构组成,其内核是有ARM7TDIM CPU,4M的Flash内存,自带有微型天线,20通道,CA码,L1的频率。定位精度 10M 3DRMS, ;冷启动约为60s,热启动少于10s,协议时NMEA08
4、13 ,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 UTC时间,hhmmss(时分秒)格式 2 定位状态,A=有效定位,V=无效定位 3 纬度ddmm.mmmm(度分)格式(前面的0也将被传输) 4 纬度半球N(北半球)或
5、S(南半球) 5 经度dddmm.mmmm(度分)格式(前面的0也将被传输) 6 经度半球E(东经)或W(西经) 7 地面速率(000.0999.9节,前面的0也将被传输) 8 地面航向(000.0359.9度,以真北为参考基准,前面的0也将被传输) 9 UTC日期,ddmmyy(日月年)格式 10 磁偏角(000.0180.0度,前面的0也将被传输) 11 磁偏角方向,E(东)或W(西)上图为C3-370引脚图,具体我们只用到了VCC,TX,RX,GND,BOOT,3硬件整体连接图 硬件流程图 由于GPS和MCU的电平兼容,所以在硬件连接中,GPS接受终端的TX接MCU的RX,RX接TX,另
6、外通过RS232电平转换后可以直接进行上位机软件的接受工作,最后把解析的数据显示在Nokia5510上面。4软件流程图及程序(1)流程图 软件流程图(2)程序u8 GPS_parse(char *buf) int d,m,mm; u8 i; char *word,*left=buf+1; static u8 msgcount=0,msgid=0,satcount=0; /解析GSV用到的变量 /各通道采用的卫星编号 u8 usedsatcount=0; if(buf0 != $) return 0; / word=split(left,ASTERISK,&left); / if(check(w
7、ord,left) != 1) / return 0; / / ; / left=word; word=split(left,SEMICOLON,& /开始解析 if(!strcmp(word,GPRMC) /相等时,返回0值,进入函数 解析GPRMC格式 /时间 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,
8、20); / 拷贝20个字符从word到lasttime中,返回lasttime; /定位状态 if(word0 = A gps.isvalid=1; else gps.isvalid=0; /纬度 %2d%2d.%4dd,&m,&mm); gps.latitude=(float)d+(float)m/60.0+(float)mm/600000.0; /南北半球标志 S / gps.latitude=-gps.latitude; gps.latNS = ; elseN /经度 %3d%2d.%4d gps.longitude = (float)d+(float)m/60.0+(float)mm
9、/600000.0; /东西半球标志 W) gps.lgtEW = / gps.longitude=-gps.longitude; elseE /对地运动速度 gps.speed=my_atof(word)*1.852; /对地运动方向 gps.direction=my_atof(word); /utc 日期 %2d%2d%2dgps.DD,&gps.MM,&gps.YY);5调试过程 由于GPS的数据回收过程是一直有效,所以在配置串口中断的过程中要注意数据的回收处理,然后才能解析。最先开始的时候必须到野外看看GPS模块的性能测试。调试的时候,一定要先把串口配置好,这样在调试的过程中可以边从MCU中从串口读取GPS发回的数据,看看串口配置的是否正确。几次试验,最后测的经纬度范围在goole地球上显示的效果精度10m,十分的满意。6总结 通过这次GPS接受的调试,认识的了GPS工作过程,理解了基本的原理,还需解决的问题包括GPS的阶段操作,MCU的分时工作,和电源的低功耗设计等等。 .
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1