新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于单片机的GPS/电子罗盘测姿定位系统

基于单片机的GPS/电子罗盘测姿定位系统

作者: 时间:2012-05-23 来源:网络 收藏

2.2 串行通信接口电路

在信息传输模块中,由丁C8051F021引脚的信号电平为TTL类型,而上位机串口的异步串行通信是RS232标准的,两者通信信号的逻辑电平不一致,必须进行信号电平转换。而MAX3232芯片能直接将输出的TTL电平转换成上位机能接收的RS232电平,或将PC机输出的RS232电平转换成能接收的TTL电平,故采用MAX3232来实现其中的电平转换,从而实现的串行通信。本的串行通信硬件结构框图如图3所示。

d.JPG

3 软件设计

系统的软件实现采用C语言,C语言具有功能丰富的标准函数库,具有运算速度快和可移植性强等特点。用C语言来编写软件会大大缩短开发周期,增强软件的可读性,便于改进和扩充。

对于串口的数据处理有两种方法:一种是查询的方法,另一种是中断的方法。查询的方法是不断地检测接收和发送标志位,当查询到有数据进入到SBUF时对SBUF数据进行判断,是否为所需的数据,如果是则存储到数据寄存器中。由于查询方法在编写程序时比较复杂,需要反复地查询标志位,但是相较于其他算法对于实现循环比较简单。本系统对串口接收和发送的数据采用的是查询的方法。

e.JPG

信息处理流程如图4所示。首先,待单片机初始化后,开启中断0,关闭中断1,开始通过串口0接收信息。HMR33 00更新频率为8 Hz,即每秒最多可更新8次。为了保证其稳定输出,每秒钟提取4次信息。然后,以判断回车来表示接收完一次罗盘信息,即hmr[i]=10。待接收完毕后,开启中断1,关闭中断0,通过串口1接收信息。iTrax03-02更新速率为1fix/s。提取信息时,每秒钟提取一次信息。接收到一条完整的语句后将其放入数据存储区。同样地,我们以判断回车来表示接收完一次GPS信息,即gps[i]=10。

GPS信息接收完毕后,再开启中断0,关闭中断1,接收电子罗盘信息。同时,将采集到的姿态和信息通过串口0传送给MAX3232后,不断发送给上位机。在中断0中接收电子罗盘的数据时,需要提取的是其航向、俯仰和滚动信息,应判定接收到的数据是否为起始标志位,若是则开始采集数据,读取第二位数,进行采集的同时保存数据;如不是,则继续判定。

由于采用的是非定长通信,因此,在采集数据的同时还要判定当前位是否为结束标志位,若是则进行CRC校验。若正确则对得到的数据进行HPR分离;若否则开始新的采集。同样,在中断1中应在接收有效后,判断是否接收到GGA语句,若是再进行分析处理。也可直接发送指令给GPS接收机,使GPS接收机只输出所需要的语句信息。同样的操作也适用于电子罗盘HMR3300。

4 实验验证

为了验证所设计系统的正确性和有效性,笔者进行了地面跑车实验。将该系统固定于汽车内,实验过程中可见卫星数为11颗,可用卫星为7颗。实验后,将采集到的数据运用MATLAB软件进行数据处理并对结果进行了分析。跑车实验数据分析如图5所示。结论如下:

a.JPG



评论


相关推荐

技术专区

关闭