2.1 电源模块的设计
电源系统对自动报站器的可靠性运行影响很大,好的电源电路能够过滤掉很多通过电源电路传人的干扰信号。本电源模块的电源电路如图3所示。
控制器输入电压为24 V,由于GPRS上网时的峰值电流可达2 A,所以电源芯片选用LM2596-5.0,输出电流可达3 A。采用LM1117-3.3芯片给LM3S1601、SD卡等供电,LM1117-2.5芯片给MP3解码芯片供电,MIC29302芯片输出4 V电压给GPRS模块。
2.2 SIM300C GPRS模块
SIM300C内嵌TCP/IP协议栈,基于GSM/GPRS900/1 800/1 900 MHz三频,采用双列直插式板对板连接,适合车载应用。尺寸:50 mm×33 mm×6.2 mm。支持class2,通过AT指令控制,满足GSM 2/2+标准,带有RS 232电平,直接与单片机相连。
2.3 主控芯片
采用TI公司的LM3S1601单片机作为控制主芯片,该芯片采用ARM Cortex-M3内核,Cortex-M3是ARM公司最新推出的基于ARMv7体系架构的处理器核,具有高性能、低成本、低功耗的特点。它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结构下,数据和指令共用一条总线),处理速度明显加快。Cor-tex-M3只支持最新的Thumb-2指令集。免去Thumb和ARM代码的互相切换,Cortex-M3内核中集成了中断控制器,提供基本的32个物理中断,具有8层优先级,最高可达到240个物理中断和256个中断优先级。此类设计是确定的且具有低延迟性,特别适用于汽车应用。具有128 KB的片内FLASH,32 KB片内SRAM,3个UART串口,2个SSI接口,2个I2C接口,完全能够满足现在的需求。
2.4 E2PROM和SD卡存储模块
E2PROM型号为CAT24C02,用来存放报站器的站号、线路、上下行、模式等必要数据,防止掉电数据丢失。SD卡存储中文站名、经纬度信息、MP3音频文件等,SD卡与单片机通过SS10接口进行通信,采用FAT16格式的文件系统,支持最大2 GB的SD卡。
2.5 MP3解码芯片
MP3解码芯片采用的是芬兰VLSI Solution公司生产的VS1003芯片,VS1003是一款单芯片的MP3/WMA/MIDI音频解码和ADPCM编码芯片,其拥有一个性能低功耗的DSP处理器核VS_DSP,5 KB的指令RAM,0.5 KB的数据RAM,串行的控制器和数据输入接口,4个通用I/O口,一个UART口;同时片内带有一个可变采样率的ADC、一个立体声DAC以及耳机音频放大器。
3 公交车自动报站器的软件设计及实现
由单片机LM3S1601编程实现GPS信息的接收处理,GPRS上网、建立连接、接收数据,MP3语音文件的播放,读写SD卡的内容,LCD屏的显示等功能。本系统的工作过程大致为:通过按键及GPS信息的接收进行站点的自学习;自动搜索站点,并自动报站:如果GPS模块接收到的经纬度信息与存储的某站点经纬度信息一致,则通过SSI0从SD卡中读取相对应的MP3文件,将所读取的数据流通过SSI1发送到VS1003播放器中播放,同时在LCD屏上显示相应的站号及站名,并通过GSM网络发送当前的经纬度信息到公交监控调度中心,从而实现自动报站的功能;中心主动连接自动报站器,自动报站器根据接收的通信协议的不同进行不同的操作(如实时监控、车内信息更新等)。系统的软件组成框图如图4所示。
3.1 报站器的主程序设计
主程序主要完成系统初始化及各个模块子程序的调用,其流程图如图5所示。
系统上电后进行初始化,包括:I/O口,定时器,UART、看门狗,模块(SD卡、GPRS模块、VS1003等)。系统初始化完之后,接收GPS定位信息,GPS通信协议较多。该程序采用应用最为广泛的NMEA-0183协议。在此协议中包括了“$GPGGA”、“$GPGSA”、“$GPGSV”和“$GPRMC”等格式,而本文使用的是以最简格式“$GPRMC”语句进行设计。格式如下:$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh 其中<2>为定位状态,A=有效定位,V=无效定位,当接收数据为A时,则认为GPS接收数据有效,然后进行自学习功能、GPRS处理功能、自动搜索站点功能的判断及处理。