具有工程实用性的车载定位系统整体解决方案
21ic 2024-06-14

0 前言

车载定位系统作为车载信息系统的重要部分,利用GPS等装置,以一定精度实现车辆定位,包含位置、速度和行车方向等车辆姿态信息。继一些国家之后,我国一些科研院所和高校也开始研究自己的车载定位系统,市场空前的繁荣。但是传统系统功能单一、集成度不高。随着ARM处理器在全球范围的流行,32位的RISC嵌入式处理器已经成为嵌入式应用和设计的主流。同时嵌入式Linux是一个非常好的免费的操作系统内核,具有稳定、良好的移植性、优秀的网络功能、完备的各种文件系统的支持、以及标准丰富的API等特点。因此,本文提供了一套具有先进性及工程实用性的车载定位系统整体解决方案,使得系统的性能、集成度和可扩展性大大提高。


1 系统的硬件设计

1.1 系统的整体硬件设计

本文车载信息系统由以下几部分组成:主控制部分、定位部分、通信部分、数据采集部分、显示部分,如图1所示。

主控制部分采用了三星公司基于ARM920T的S3C2410和Linux的嵌入式系统平台,完成整个系统的控制。其主要包括电源电路、时钟电路、复位电路、存储模块电路、JTAG接口电路、串行口电路、LCD接口、SPI接口以及按键电路的设计。主控模块通过串行口、SPI接口、LCD接口与扩展模块相连接构成整个硬件系统。

1.2 GPS模块的硬件设计与制作

定位部分采用了自行设计和制作了基于瑞士U-BLOX公司LEA-4S芯片的GPS接收模块。在此给出了GPS接收模块的整体设计,如图2所示。

u-blox的GPS部分分为两部分。采取数字/模拟分开设计的方法,有效提高了模块的抗干扰能力。在硬件的设计制作过程中。也是分为两步,即模块部分和数字部分。模拟部分主要由天线接入端及天线供电部分/检测电路构成。

天线选用3v供电的有源天线,增益27dB左右,噪声系数1.5dB左右。天线接入模块较为复杂,从GPS有源天线接收的信号频率高选1.575C,属于微渡范围。PCB设计需要满足天线座到模块RF_IN端的阻抗匹配为50Ω。

模块供电电源稳压电路为5v转3v的五脚LDO,对电压稳定精度较高,要求输出纹波在50mV以下,电流为150mA左右,这里选用精工的SOT-23-5封装的LDO S-11123.0V,能满足电源供应的要求。后备3V可充电微型锂电池则为数据保存作用。

选择电路为波特率的选择及速率选择。或是启动速度之类的选择,一般可以用默认值。

数字部分硬件相对简单,LEA-4S为两路TTL电平输出,分别为9600/11520波特率,分别支持国际通用GPS协议NMEA及u-blox公司的UBX二进制格式。在本设计中,通过串口O提取ASCII码,串口数据通过MAX232电平转换为RS232电平。另外,将GPS模块的发送端和接收端经电平转换后与审口DB9交叉相连。


2 软件平台的搭建

系统的软件平台的搭建其实就是嵌入式linux操作系统的移植移植工作,主要包括4步:建立交叉编译环境,移植引导程序,编译内核,生成根文件系统。

交叉编译工具主要由gcc,binutils和glibc这几部分组成。由于重新建立一个交叉编译工具链比较复杂也没有任何意义,所以本文使用已经做好的工具链。因此建立交叉编译环境的过程实际就是对工具包cross-3.3.2.tar.bz2解包的过程。

本文移植的Bootloader是韩国Mizi公司开发的vivi.首先在根目录下创建一个armsys2410目录,对vivi_armsys.tgz执行解压命令。解压完成后进人vivi_armsys.执行命令makememmonfig,然后选择"Load on Alternate Configuration File"菜单,再写入arch/def-co-igs/smdk2410,进行vivi的裁剪。执行make命令进行编译,在vivi_armsys目录下生成vivi二进制文件。最后将其烧写到Flash.

内核的编译通过命令make menueorffig进行内核的配置;通过命令make dep建立依赖关系;通过命令make zlmage建立内核。得到Linux内核压缩映像zhnage.最后通过vivi命令提示模式下使用下载命令,将压缩映像文件zlmge装载到flash存储器中。

Linux支持多种文件系统。cramfs是Linus Torvalds撰写的只具备最基本特性的文件系统。本文使用mkcramfs工具对主机里已有cramfs文件系统进行制作和压缩。最后也要烧写到flash的相应部分。


3 GPS模块驱动程序的开发

Linux将设备分为最基本的两大类,字符设备和块设备。字符设备是单个字节为单位进行顺序读写操作,通常不使用缓冲技术;而块设备则是以固定大小的数据块进行存储和读的。

GPS模块驱动程序是在UART驱动程序的基础上加入对GPS模块初始化和对GPS模块输出数据处理的部分,构建一个独立的驱动模块,在导航系统进实时导航工作模式时挂接到系统内核中,实现GPS功能。

3.1 初始化/清除模块

在初始化程序段中要完成对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"开头的语句包含了本系统所需的所有定位信息,本系统只需研究该类型。该类型定位数据的各个符号位的含义如下所示。

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

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


4 结束语

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

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 汽车
  • 车载
  • 激光雷达
  • ADAS
  • 一种基于RFID技术的车辆定位方法

    (作者:姜伟丽邝育军张恩展夏佳)  引言  智能交通在执行控制命令、完成预定任务时首先要解决定位问题。目前已经有多种解决办法,主要包括:  ①航位推算法(DR)

    昨天
  • 特斯拉配备48V 电源架构的技术考量

    特斯拉 Cybertruck 的外观和令人惊叹的驾控性能在去年年底引起了汽车行业极大的关注。

    昨天
  • 汽车车身结构图解

    日常生活中我们经常会听到两厢车、三厢车这个词,它们到底是怎么来划分的:通常我们把轿车的发动机室、驾驶室、行李箱分别称为轿车的“厢”。

    昨天
  • 电机控制器功能结构和工作原理

    电机控制器介绍。

    昨天
  • 汽车做得智能,需要哪些芯片?

    随着汽车行业的不断发展,如今的汽车逐渐由机械式转向电子式的方向发展,汽车做得越来越智能,汽车的智能化离不开一个重要核心元件,那就是芯片!汽车上小到胎压监测系统TMPS、摄像头,大到整车控制器、自动驾驶域控制器。

    昨天
  • 汽车自动驾驶域控制器的总结

    随着汽车智能化,网联化的渗透与普及,汽车电子电气零部件占汽车的比重也逐渐提高。高级驾驶辅助系统,车载多媒体娱乐系统等逐渐成为消费者关注且左右购买决策的功能配置。

    昨天
  • 11个车用MCU常用参数

    MCU是新能源汽车特有的核心功率电子单元,通过接收VCU的车辆行驶控制指令,控制电动机输出指定的扭矩和转速,驱动车辆行驶。

    昨天
  • 爆火的滑板底盘技术到底是什么?

    也许你以为这么超前的想法一定是最近才诞生的吧,其实我要告诉你的是早在20年前就有这个概念了。Skateboard“滑板底盘”这个词第一次出现,还得追溯到2002年北美国际车展。

    昨天
  • 新能源汽车的“大三电”与“小三电”

    能源汽车的核心在于三电系统,即电池、电机和电控。而在这三电系统中,我们又可以细分为“大三电”与“小三电”。

    07-12
  • 奥迪Q5组合仪表转向锁止故障报警故障分析

    组合仪表转向锁止故障报警,提示:转向锁止故障,请联系特约维修站;断开点火开关后,有时转向柱无法锁止。

    07-12
  • 全面理解车载以太网

    现在,越来越多的汽车需要配备高级驾驶辅助系统 (ADAS)、车载信息娱乐系统(IVI),大量流媒体数据的传输要求总线具备更高的传输能力。

    07-12
  • 液压悬架除了安全还有哪些优势

    液压悬架相比其他悬架的五大优势

    07-12
下载排行榜
更多
评测报告
更多
EE直播间
更多
广告