新闻中心

EEPW首页 > 汽车电子 > 设计应用 > 基于CDMA模块的车载监控终端的设计方案

基于CDMA模块的车载监控终端的设计方案

作者:时间:2012-06-18来源:网络收藏

【摘要】结合现有的的解决方案,确定了基于 的总体设计方案,介绍了系统的组成、功能,给出了系统的硬件设计以及相应功能单元软件的设计。

本文引用地址:http://www.eepw.com.cn/article/196720.htm

随着无线通信技术的发展, 智能交通系统(Intelligent TransportSystem,即ITS)已得到广泛应用。ITS 总体来说包括四部分:交通信息采集部分、车辆调度控制部分、电子收费系统与交通信息服务。其中四个部分都需要终端的参与,车载终端是ITS 系统中非常重要的部分。传统的车载系统通常采用GSM/GPS 方案。这种方案成本较低,在一些领域有了成功应用。车载终端最重要的功能是交通信息采集,提供车辆的准确定位和车辆运行情况(包括速度信息、行进方向等)。而定位信息和速度信息通常都是靠外置的GPS 获取,但在车辆驶入隧道或者停放在高楼旁,车辆处于GPS 卫星的覆盖盲区,这段时间内的调度中心无法准确得到车辆的交通信息,影响了监控调度系统的可靠性。本文提出了一种以ATMEL 公司89S51 为控制器, 模块DTGS800 为通信、定位系统平台的车载监控终端系统。

1.DTGS-800 简介

DTGS800 是AnyDATA 公司生产的一款 无线通信模块。

DTGS800 工作在832MHz 频段,功耗为0.32W,拥有高达153kbps 的数据传输速率,可通过AT 命令进行远程控制,内置TCP/IP 协议栈,提供短消息服务。模块内部集成了具有gpsOne 功能的芯片, 能够采用gpsOne 解决方法实现定位功能。

DTGS800 的模块主要接口包括:通用异步串行口UART,通用I/O口GPIO、编解码器接口CODEC、用户接口User Interface、PM 接口。

2.系统硬件设计

车载监控终端主要用来与监控中心进行实时的信息交互, 包括:

获取车辆的位置信息、速度信息;发布调度信息;在车辆出现异常情况下进行远程控制。另外给车辆司机提供移动通信服务,可利用此模块拨打和接听电话,甚至可以进行三方通话。其硬件系统是一个综合利用电子技术和通信技术的嵌入式单片机系统,主要由控制器和通信模块两部分组成。

控制器是车载监控终端的核心,它对整个系统的安全运行、可靠性有很大影响。本设计中CPU 选用了ATMEL 公司的8 位单片机89C51RD2, 它是CMOS 单片8 位微控制器80C51 的高性能CMOSFLASH 版本。其特性包括:1 个64-Kbyte FLASH 存储区,用于存储代码和数据;256 字节的内部RAM,1 个9 源4 级中断控制器和3 个定时/计数器;1 个1792 字节的XRAM,1 个硬件看门狗定时器,SPI 接口,键盘,1 个更加通用的串行频道,便于多处理器通信(EUART)和加速机制(X2 Mode)。

这款CPU 采用全静态设计,减少了系统功耗,允许时钟频率降至任何数值而不导致数据损失。另外有两种软件可选的工作模式,降低8 位时钟分频器的活动状态,进一步减少了功耗。空闲模式下,CPU 被冻结,而外设和中断系统继续工作。在掉电模式,RAM 内容被保存,而其他所有功能都无效。

系统的框架图如下所示:

11.jpg

图1 系统结构框架图

3.系统软件设计

系统以任务的形式对软件功能进行模块划分,软件实现的任务包括:任务调度;车辆位置信息、速度信息的获取;短信息的接受、处理与发送;电话的拨打与接听;屏幕显示。

程序流程为:车辆发动之后,系统上电,首先进行系统初始化,然后开定时中断与串口中断,启动完毕后启动进入中断监听状态,每隔10ms 扫描一次串口buffer 中的数据,并根据不同的状态调用不同的接口函数实现各种功能。车辆监控终端最重要的任务就是实时交通信息的获取和传输数据, 下文着重介绍GPS 信息的获取和短消息的接收与发送。

3.1 串口中断函数

在本系统中,处理器对DTGS800 模块的控制是通过串口发送AT 指令实现的, 当发送某种AT 命令后,DTGS 模块会通过串口与处理器进行数据交换。因此,如何进行串口数据管理是系统性能优劣的关键。在本文的设计中,采用了基于中断的管理方式,并设置了一个200Bytes 的串口缓冲区,以循环队列的形式实时读取串口的接收数据。实现的步骤如下:

3.1.1 定义全局变量

#define REC_BUF_LEN 200

idata volatile BYTE datain;输入数据的长度

idata volatile BYTE dataout;;输出数据的长度

BYTE xdata dat[REC_BUF_LEN]; 串口缓冲区

3.1.2 操作函数的实现

bit BuffOut(BYTE *dp);从缓冲区读出数据

bit BuffIn( BYTE *dp);向缓冲区写入数据

3.1.3 中断函数

处理器与DTGS800 模块之间通过串口通信,当接收短信息,有来电提醒时,都会引发串口中断,因此串口中断函数的核心就是将接受数据存储到循环队列中。其实现的流程图如下:

22.jpg

图2 中断函数流程图

3.1.4 接口函数

在实际工作状态下,通话任务,短信息任务都需要通过串口向DTGS800 模块发送数据, 这些任务的实质都是向串口发送字节数据。因此接口函数最重要的就是定义发送字节函数,定义如下:

void WriteToComm(BYTE c)

{

SBUF = c;

while (! TI);

TI = 0;

}

3.2 系统任务设计

根据不同的任务定义了不同的系统状态,其中一部分定义如下:

typedef enum

{

SYS_NET_FAIL, 网络不通

SYS_MISSED_CALL, 未接来电

SYS_CALL_SPEAKING, 通话中

SYS_END_CALL, 挂电话

SYS_GET_GPS_INFO, 获得GPS 数据

SYS_SMS_INFO, 短消息接收

SYS_SMS_DISPLAY, 短信息显示

}sys_app_sta;

系统启动完毕以后,进入main 函数中的死循环,对不同状态响应不同的任务。以未接来电为例,定义如下函数:

cdma相关文章:cdma原理



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭