微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于ARM的嵌入式车载GPS定位系统设计

基于ARM的嵌入式车载GPS定位系统设计

时间:01-12 来源:互联网 点击:

序段中要完成对GPS设备的注册,设备节点的创建和对串口相关寄存器的初始化。部分代码如下:

  3.2 两个数据结构定义

  模块驱动的最终目的就是取得GPS信息,因此规范GPS数据是对数据传递的可靠性和速率都是有益的。

  struct GPS_DATA{

  unsigned int hour;//小时,24小时制

  unsigned int minute;//分

  unsigned long Second;//秒,精度小数点后三位

  unsigned long latitude;//纬度

  unsigned char southornorth;//纬度属于南北的标志码

  unsigned long longitude;//经度

  unsigned char eastorwest;//经度属于东西的标志码

  };//其中包括了在导航系统中所需的几个重要数据。

  另外还有对驱动模块文件操作结构的定义。即:

  static struct file_operations gps_fops={ead:gps_read,

  rite:gps_write,

  octl:gps_ioctl,

  open:gps_open,

  elease:gps_release,

  };//定义了设备操作映射函数结构。

3.3 驱动程序的模块操作

  在导航系统进入GPS导航模式时,系统首先是将GPS模块注册到操作系统中,实现初始化过程,再通过gps_open函数打开设备,此过程中完成对中断、缓冲区以及定时器等资源的申请,为GPS数据读取做准备。通过gps_write()向模块写命令字来是自主地选择工作模式,gps_ioctl()则是选择串口传输模式,使之与GPS模块传输模式相匹配。之后的应用程序将创立一个独立的进程为进行GPS数据的读取gps_read(),该进程没有数据时进程会一直处于睡眠等待数据,有数据来,进入中断处理模块,完成数据的分析,生成GPS_DATA数据结构,供导航使用。这个进程是随着导航模式的切换而终止的,此时除了关闭进程外,还需要用gps_release()释放申请的所有资源,并关闭设备。

  3.4应用程序的实现

  GPS模块通过串口输出NMEAO183语句,而应用程序主要完成对GPS数据的采集与解析。NMEA0183输出语句多达十余种,任意一种定位语句都包含一定的定位数据,由于以"$GPRMC"开头的语句包含了本系统所需的所有定位信息,本系统只需研究该类型。该类型定位数据的各个符号位的含义如下所示。

表1 $GPRMC帧基本格式的描述

  应用程序的整体设计流程如图3所示。

图3 软件设计整体框图

  从图3可以看出,系统开始运行后首先对串口的初始化就是对GPS模块韧始化,包括设置波特率、数据位、校验位等,然后开始接收GPS数据。即从串口读数据。井将读到的数据保存到BUF中;接着进入数据的解析和提取阶段。通过BUF等不等于"c"判断是苦为$GPRMC;若是,则开始提取经纬度、时间等信息并存入结构体GPS_DATA中。最后通过LCD显示出来。

  4 结束语

  本文给出了基于ARM9和嵌入式操作系统Linux下,GPS定位系统的整体解决方案。包括了系统的整体设计,GPS模块制作方案,开发平台搭建以及GPS驱动程序和应用程序的设计。较市场上的车载定位系统相比,本设计在功能性、可扩展性和稳定性上都有所提高。由本系统作为基础,车载定位系统的下一步工作将可以专注于应用程序的编写,包括提高GPS定位精度的算法,以及开发更加友好的人机交互界面。

参考文献:

[1].RISCdatasheethttp://www.dzsc.com/datasheet/RISC_1189725.html.
[2].ARM920Tdatasheethttp://www.dzsc.com/datasheet/ARM920T_139814.html.
[3].PCBdatasheethttp://www.dzsc.com/datasheet/PCB_1201640.html.
[4].TTLdatasheethttp://www.dzsc.com/datasheet/TTL_1174409.html.
[5].MAX232datasheethttp://www.dzsc.com/datasheet/MAX232_1074207.html.
[6].RS232datasheethttp://www.dzsc.com/datasheet/RS232_585128.html.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top