移动通信课论

移动通信课程论文

 

GSM/GPRS原理与应用

     ——基于SIM900A的应用与实现

 

 

目录

1 GSM系统简介...2

1.1 GSM涵义...2

1.2 GSM系统结构与功能...2

1.2.1移动台(MS)3

1.2.2基站子系统 (BSS)3

1.2.3网路子系统(NSS)3

1.2.4操作支持子系统(OSS)4

1.3 GSM信道...4

1.3.1物理信道与帧结构...4

1.3.2 GSM逻辑信道...5

2 GPRS系统简介...6

2.1 GPRS涵义...6

2.2 GPRS网络结构... 6

2.2.1分组控制单元 PCU..7

2.2.2服务GPRS支持节点 SGSN..7

2.2.3网关GPRS支持节点 GGSN..7

2.2.4边界网关BG.. 7

2.2.5计费网关CG与域名服务器DNS.7

2.3 GPRS技术优势... 7

2.3.1资源利用率高...7

2.3.2传输速率高...8

2.3.3接入时间短...8

2.3.4支持IP协议和X.25协议...8

2.4 GPRS业务应用... 8

2.4.1 GPRS典型应用一...9

2.4.2 GPRS典型应用二...10

3基于SIM900AGSM/GPRS电路系统设计...11

3.1 SIM900A模块简介...11

3.2 SIM900A硬件系统设计...11

3.2.1 SIM900A原理图...12

3.2.2 SIM900A  PCB图设计...13

4基于SIM900ASMSTCP功能实现...15

4.1 SMS功能实现...15

4.1.1 SMS工作原理...15

4.1.2 SMS实现步骤...15

4.2 TCP数据传输功能实现...16

4.2.1 TCP数据传输原理...17

4.2.2 TCP数据传输实现...17

附录1CC2430控制SIM900A实现TCP相关主要程序...21

 



综述

本文对GSMGPRS系统做了简要介绍,讲解了GSMGPRS系统的相关组成与功能。并选用SIM900A模块设计了一个硬件电路系统,该模块是双频GSM/GPRS模块,其内部集成了TCPIP协议。实践部分,本文利用PC机通过串口控制该SIM900A电路系统实现了SMSTCPIP数据收发功能,并利用单片机与SIM900A进行了通讯实验,使其连续不断地发送数据,经实验测定其数据正确性基本为100%。文章最后给出了相关源代码。

 

关键字:GSM   GPRS   SIM900A   SMS   TCP数据收发



1 GSM系统简介

1.1 GSM涵义

GSM中文名称为:全球移动通信系统;英文名称为:Global system for mobile communications。GSM属于第二代移动通信技术,起源于欧洲的移动通信技术标准,又称“全球通”,取一部手机行遍全球之意,其实现手段为全球使用同一个移动电话网络标准。

我国于20世纪90年代引进该技术标准,进而取代了第一代移动通信技术标准-蜂窝模拟移动技术。GSM系统包括GSM 900:900MHz、GSM1800:1800MHz 及 GSM-1900:1900MHz等几个频段 。

1.2 GSM系统结构与功能

GSM系统由若干个子系统或功能实体组成。其中基站子系统(BSS)在移动台(MS)和网路子系统(NSS)之间提供和管理传输通路,特别包括了MS与GSM系统的功能实体之间的无线接口管理。NSS负责管理通信业务,保证MS与相关的供应能够通信网或与其他MS之间建立通信。MS、BSS和NSS组成GSM系统的实体部分。操作支持系统(OSS)提供运营部门一种手段来控制和维护这些实际运行部分。

                         图1.1 GSM系统结构

  1.2.1移动台(MS)

公用GSM移动通信网中用户使用的设备叫做移动台,它是整个GSM系统中用户惟一接触的设备,移动台的类型包括手持台、车载台和便携台,其中手持台用户的比例最大。移动台必须提供与使用者之间的接口以及通过无线接口接入GSM系统的基本功能,其中主要包括话筒、扬声器、显示屏和按键等。此外,移动台另外一个重要的组成部分是用户识别模块-SIM卡,它是一张符合ISO标准的智慧卡。他包含所有与用户相关的和某些无线接口信息,其中包括鉴权和加密信息。使用GSM标注你的移动台都需要插入SIM卡,只有当处理异常的紧急情况的紧急呼叫可以在不用SIM卡的情况下操作。

1.2.2基站子系统 (BSS)

基站子系统是由基站收发信台BTS和基站控制器BSC两部分功能实体组成。基站子系统BSS是GSM系统中与无线蜂窝方面关系最直接的组成部分,它通过无线接口直接与移动台相接负责无线发送与接收和无线资源管理。另一方面,基站子系统与网路子系统NSS中的移动业务交换中心MSC相连。实现移动用户之间或移动用户与固定网路之间的通信连接传送系统信号和用户信息等。此外,为了对BSS进行操作维护管理还需要建立BSS与操作子系统OSS之间的通信连接。

基站收发信台BTS属于基站子系统的无线部分,由基站控制器BSC控制服务于某个小区的无线收发信设备完成BSC与无线信道之间的转换,实现BTS与移动台MS之间通过空中接口的无线传输及相关的控制功能。实际上一个基站控制器根据话务量需要可以控制十个BTS,BTS可以直接与BSC相连也可以通过基站接口设备BIE采用远端控制方式与BSC相连接。BTS主要分为基带单元、载频单元、控制单元三大部分。

基站控制器BSC属于基站子系统的控制部分,起着BSS的变换设备的作用。即各种接口的管理,承担无线资源和无线参数的管理。

1.2.3网路子系统(NSS)

网路子系统NSS主要包含有GSM系统的交换功能和用于用户数据与移动性管理、安全性管理所需的数据库功能。它对GSM移动用户与其他通信网用户之间通信起着管理作用。NSS由一系列功能实体构成,整个GSM系统内部,即NSS的各功能实体之间和NSS与B生死之间都通过符合CCITI心灵系统No.7协议和GSM规范的7号信令网路互相通信。

网路的核心是移动业务交换中心MSC,它提供交换功能及面向系统其它功能实体如:基站子系统BSS,归属用户位置寄存器HLR 鉴权中心AUC 移动设备识别寄存器EIR 操作维护中心OMC 和面向固定网公用电话网PSTN  综合业务数字网ISDN 分组交换公用数据网PSPDN,电路交换公用数据网CSPDN的接口功能。把移动用户与移动用户,移动用户与固定网用户互相连接起来,移动业务交换中心MSC可从三种数据库。即归属用户位置寄存器 HLR 访问用户位置寄存器VLR 和鉴权中心 AUC。获取处理用户位置登记和呼叫请求所需的全部数据。反之MSC也根据其最新获取的信息请求更新数据库的部分数据MSC可为移动用户提供一系列业务。此外,作为网路的核心,MSC还支持位置登记,越区切换和自动漫游等移动特征性能和其它网路功能

1.2.4操作支持子系统(OSS)

操作支持子系统OSS,需要完成许多任务包括移动用户管理,移动设备管理以及网路操作和维护移动用户管理(用户数据管理和呼叫计费)。用户数据管理一般由归属用户位置寄存器HLR来完成,HLR是NSS功能实体之一,用户识别卡SIM的管理也是用户数据管理的一部分,但是作为相对独立的用户识别卡SIM的管理还必须根据运营部门对SIM 的管理要求和模式采用专门的SIM个人化设备来完成。呼叫计费可以由移动用户所访问的各个移动业务交换中心MSC和GMSC分别处理也可以采用通过HLR或独立的计费设备来集中处理计费数据的方式。移动设备管理是由移动设备识别寄存器 EIR 来完成的。

1.3 GSM信道

GSM信道可以分为物理信道和逻辑信道。物理信道是指实际物理承载的传输信道,逻辑信道则是按照信道的功能划分,物理信道是逻辑信道的载体。

1.3.1物理信道与帧结构

时分多址是GSM的基本特点,GSM有8个时隙,它不足以满足每个小区实际的用户需求,因此,GSM采用以时分为主体,时分频分相结合的方式。对于GSM900(一阶段),GSM上下行各占有25MHZ频段,而每个信道仅占用200KHZ,所以GSM可容纳的频分信道数是125,而每个频分信道有8个时隙,所以GSM总共可以提供的时分信道数为1000个。而对于GSM900第二阶段,上下行频段扩展至35MHZ,时分信道也相应增至1400。此外,可利用小区蜂窝规划对不同小区进行空分,以进一步增加信道数。

GSM帧结构分为四个层次:TDMA、复帧、超帧、超高帧。TDMA帧是GSM中的基础帧,一个TDMA帧由8个时隙组成,而每个时隙可以是下列4类时隙突发中的某一种类型:常规突发序列、频率校正突发序列、同步突发序列和接入突发序列,其中,常规突发序列应用较多,主要用于信息通信,其他三类则多用于不同的控制。此外,TDMA帧可以构成两类复帧,进而构成两类超帧。GSM帧结构图如图1.2。

                         图1.2 GSM帧结构图

 

1.3.2 GSM逻辑信道

逻辑信道按功能划分分为主业务信道和为了配合业务正常进行的辅助性控制信道两大类。

主业务信道又可以分为语音与数据两类。语音信道分为全速率语音信道和半速率语音信道,分别为13.5kbps和6.5kbps。数据信道则可以分为五种类型:9.6kbps全数率数据业务;4.8kbps全速率数据业务;<=2.4kbps全速率数据业务;4.8kbps半速率数据业务;2.4kbps半速率数据业务。

辅助性控制信道是为了保证业务信道有效且正常传送辅助信息的信道。它可分为三种类型:广播信道,其中包括频率校正信道、同步信道和广播控制信道;公共控制信道,它包含下行的寻呼信道和准予接入信道及上行的随机接入信道;专用控制信道,它包含独立专用控制信道和两类(快、慢)随路控制信道。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 GPRS系统简介

2.1 GPRS涵义

GPRS,英文名称为:General Packet Radio Service,即通用分组无线业务,其标准是欧洲电信标准化协会ETSI制定并于1998年完成的。它是从GSM系统上发展起来的分组无线数据业务,GPRS与GSM公用频段、公用基站并共享GSM系统能够与网络中的一些设备和设施。GPRS大大拓广了GSM的服务范围,在GSM原有电路交换的语音与数据业务的基础上提供了一个平行的分组交换的数据与语音业务的网络平台。基于上述原因,GPRS经常被描述成“2.5G”,也就是说这项技术位于第二代(2G)和第三代(3G)移动通讯技术之间。

GPRS的主要功能是移动蜂窝网中支持分组交换业务,按时隙而不占用整个通路,将无线资源分配给所需的移动用户,收费亦按占用时隙计算,因而收费相对较低。GPRS不仅可应用于GSM系统,还可以用于其它基于X.25与IP的各类分组网络中,为无线因特网业务提供一个简单的网络平台。

2.2 GPRS网络结构

GPRS网络结构如图2.1所示。主要包括,分组控制单元PCU、网关GPRS支持节点GCSN、服务GPRS支持节点SGSN、域名服务器DNC、边界网关BG、计费网络CG等。

                          2.1  GPRS网络结构

 

2.2.1分组控制单元 PCU

分组控制单元主要完成无线链路控制与媒体接入控制以及与服务GPRS支持节点之间Gb分组业务的转换。包括启动、监视、拆断分组交换呼叫、无线资源组合、信道配置等;PCU与SGSN之间通过帧中继或者E1方式连接。

2.2.2服务GPRS支持节点 SGSN

服务GPRS支持节点主要负责GPRS与无线端的接入控制、路由选择、加密、鉴权、移动管理,以及与MSC、SMS、HLR、IP和其他分组网之间的传输与网络接口。此外,SGSN可以被看做一个无线接入路由器。

2.2.3网关GPRS支持节点 GGSN

网关支持节点主要支持与外部因特网及X.25分组网连接的网关,可看做提供移动用户IP地址的网关和路由器。网关支持节点还包含防火墙和分组滤波器并提供网间安全机制。

2.2.4边界网关BG

边界网关是其他运营者的GPRS网关与本地GPRS网关主干网之间互相连接的网关,它应具有基本的安全功能和根据漫游协议增加相关功能的能力。

2.2.5计费网关CG与域名服务器DNS

计费网关通过相关接口Ga与GPRS网中的计费实体相连接,用于收集各类GSN的计费数据并记录和进行计费。域名服务器DNS负责提供GPRS网内部SGSN、GGSN等网络节点域名解析及接入点名APN的解析。

 

2.3 GPRS技术优势

2.3.1资源利用率高

在GSM网络中,GPRS首先引入了分组交换的传输模式,使得原有的采用电路交换模式的GSM传输数据发生了根本变换,这在一定程度上解决了无限资源稀缺的问题。按照电路交换模式,在整个连接期间,无论用户是否发送数据都将独自占有信道。在会话期间亦会有一些空闲时隙,用户只有充分利用这些空隙,才能充分利用无线资源,从而提高信道利用率。对于分组模式的GPRS,很好的解决了这些问题,用户计费以通信的数据量为主要依据,实际上,GPRS连接时间可能长达数小时,而需要支付的费用却很少。

2.3.2传输速率高

GPRS可提供高达115Kbit/s的数据传输速率(最高值为171.2Kbit/s,不包括FEC)。这意味着通过便携式电脑GPRS用户将可以获得和ISDN用户一样的快速上网浏览,使快速网络服务可以随时随地。

2.3.3接入时间短

分组交换接入时间小于1秒,能提供快速即时的连接,可以大幅度提高一些事物的效率,并使现有的Internet操作更加方便、快捷、流畅。

2.3.4支持IP协议和X.25协议

GPRS支持Internet上应用最广泛的IP协议和X.25协议。支持X.25协议可使已经存在的X.25应用能够在GSM网络上继续使用。而且由于GSM网络覆盖面广,所以是得GPRS能够提供Internet和其他分组网络的全球性无线接入。

 

2.4 GPRS业务应用

GPRS如今的应用已经比较广泛。具体涉及到以下几个方面:信息业务、网页浏览、文件共享及协同工作、因特网和企业E-mail、交通工具定位、静态图像、远程局域网接入等等。

信息业务包括的内容比较广泛,如新闻、天气、交通信息等等;网页浏览可以使移动用户获得比电路交换数据更便捷的上网服务,由于电路交换速率比较低,因此数据从因特网服务器到浏览器需要很长一段时间,而GPRS则比较适合于因特网浏览业务;定位功能综合了无线定位技术,该系统告诉人们所处的位置,并且利用短消息业务转告其他人该位置信息;静态图像如照片图片等可以在移动网络上发送和接收,使用GPRS可以将图像从一个GPRS设备传送到因特网站点或者其他接收设备。

2.4.1 GPRS典型应用一

      图2.2 GPRS典型应用-远程物品监控

 

如图2.2所示,为一远程物品实时监控系统,该系统可以用来对远端的物品的状态(是否发生故障、丢失、移动等等)进行实时监控,大大节省了人力,而且快捷方便。

该系统主要通过远端的无线传感器网对所要监控的物品的各项参数进行实时监测,或者设定阈值,待超过规定范围实施报警。通过传感器采集回来的数据经过GPRS终端发送到GPRS网络,进一步发送到远端的监控中心,监控中心对数据进行分析,做出相应处理。

 

2.4.2 GPRS典型应用二

                   图2.3 GPRS典型应用-车辆实时监控

 

如图2.3所示,为一车辆监控典型系统。GPRS手机与GPS联合提供车辆的实时调度、监控和管理,GPS探测到的车辆当前位置信息,有GPRS手机通过GPRS网络实时地传输到车辆调度中心,车辆调度中心的指令、命令也可以通知PTP或者PTM方式发送给一个或者多个驾驶员,完全可以取代现有的无线集群指挥调度系统,具有成本低、覆盖范围广、使用简单方便。

 

 

 

 

 

 

 

 

 

 


 

3基于SIM900AGSM/GPRS电路系统设计

3.1 SIM900A模块简介

SIM900A是一个2频的GSM/GPRS模块,工作频段为:EGSM 900MHZDCS 1800MHZSIM900A支持GPRS multi-slot class 10/class 8(可选)GPRS编码格式 CS-1CS-2CS-3 and CS-4SIM900A采用省电技术设计,在SLEEP模式下最低耗流只有1mA。此外,该模块内嵌TCP/IP协议,扩展的TCP/IP命令让用户能够很容易使用TCP/IP协议,这些在用户做数据传输方面的应用时非常有用。

SIM900A尺寸较小,几乎可以满足所有用户应用中的对空间尺寸的要求。该模块与用户移动应用的物理接口为68个贴片焊盘,提供了模块和客户电路板的所有硬件接口:键盘和SPI显示接口;主串口和调试串口;一路音频接口,包含一个麦克风输入和一个扬声器输出;可编程通用输入输出接口。SIM900A的功能框图如图3.1所示。

                  3.1  SIM900A功能框图

3.2 SIM900A硬件系统设计

SIM900A硬件设计功能框图如图3.2所示。本电路设计之初,主要是为了实现SMSTCP功能,因此语音接口没有引出,外部功能模块主要分为串口、电源、SIM卡、以及单片机相应接口。

 

 

 

 

 

 

                     3.2 硬件系统设计功能框图

3.2.1 SIM900A原理图

该电路系统设计的关键在于电源部分,由于GSM/GPRS模块电源部分为3.8v,非典型固定电压,而且瞬间电流可以达到2A。本系统选择可调输出电压芯片LM2596LM2596输出电压范围为1.2-37v,瞬间可以通过最大电流达到3A,完全符合电路要求。

电路通信部分充分考虑了兼容性,是GSM/GPRS模块既可以和PC机通信,同时又可以与单片机通信。由于所使用的MCU5v接口电压,而SIM900A的接口电压为2.8v,因此需要在两者之间加一电平转换芯片,本系统采用NL27WZ07SIM900A与模块之间进行电平的转换。

由于GSM/GPRS模块为静电敏感器件,因此电路中需要加入静电防护措施。本系统中采用ESDA6V1W5,该器件专为静电敏感器件设计,可承受瞬间静电25KV,漏电流小于1uA

 

 

                             3.3  SIM900A原理图

3.2.2 SIM900A  PCB图设计

改电路设计需要考虑瞬间大电流问题,由于SIM900A在通信瞬间会产生高达2A的电流,因此,模块的供电需要保持稳定,否则将对电路的稳定性甚至正常工作指标产生影响。本设计中采用了加粗电源线的方法。同时采用大面积附铜接地(此处贴图由于显示问题没有附铜)。系统PCB设计如图3.4

                        3.4  SIM900A PCB

3.5  SIM900A硬件系统实物图

 

 

 

 

 

4基于SIM900ASMSTCP功能实现

4.1 SMS功能实现

SMS(Short Messaging Service)中文名称短信服务,短信是当下每一部手机上必备的功能之一,顾名思义,它是在手机之间发送文字信息或从个人计算机或手持设备向手机发送信息的一种方式,其文本信息的最大发送量为160个字符(字母、数字或者拉丁字母中的字符),对于中文一般最大发送量为70个字符。

4.1.1 SMS工作原理

以手机为例,尽管平时没有打电话或者接听电话,但是我们的电话却总在不停地收发数据,它通过被称为控制信道的控制通路与手机发射塔进行通信。这种通讯的目的是让手机系统了解自己所在的信号区域,以便移动时手机可以切换到其他信号区域以及确定工作正常。手机使用控制通道来建立呼叫,控制通道同样也为SMS短信提供通路。当我们向一部手机发送短信时,该短信将通过手机发射塔以控制通道上小型数据包的形式先通过SMSC(短信业务中心),然后通过手机发射塔,再由发射塔将短信发送到目标手机。

对于短消息的控制共有三种模式:Block Mode、基于AT指令的Text Mode、基于AT指令的PDU Mode。目前手机中默认使用PDU Mode,通过PDU编码的短消息内容可以是文字、声音或者图像。Text Mode只能用于发送ANSI范围的字符,发送方式比较简单。本文通过文本模式发送短消息。

4.1.2 SMS实现步骤

在本系统中,利用PC机通过串口控制SIM900A模块实现短信收发功能。首先通过9针串口线将PC机与SIM900A模块连接,打开串口调试软件,并设置相应参数:波特率-9600、奇偶校验-无、数据位-8、停止位-1。设置完毕,在PC机端发送AT+ENTER,当连接正常时会返回“OK”。然后输入相应的AT命令控制GSM模块工作,详见下图

                          图4.1   SMS实现步骤与结果

由图8可见,该SIM900A系统实现了短信收发功能。我们通过该SIM900A系统向电话13842894487发送一条短信“THIS IS A TEST FROM SIM900A”,由于该电话为系统本身的电话号码,可以通过结果发现该系统收到自己发出的短信,并返回+CMTI:”SM” 21表示收到短信,并且该短信为短信存储位置的第21条。最后通过一条语句”AT+CMGR=21”读取该短信。

                          1  SMS相关主要AT命令

4.2 TCP数据传输功能实现

GPRS当前广泛应用的行业有电力、有天、工业控制、运输、金融、证券、公共安全、天气预报、交通信息发布等。应用特点是数据量小、发送时间间隔大以及不定时发送。利用GPRS网络进行数据传输,具有成本低、组网灵活迅速、范围广等优势。

4.2.1 TCP数据传输原理

在应用中,用户在GPRS网络课选择TCP或者UDP传输协议。UDP不提供可靠性连接,它把应用程序传给IP 层地数据发送出去,但是并不保证他们能到达目的地。TCP提供与UDP完全不同的服务。TCP提供一种面向连接的可靠的字节流服务。TCP将用户数据打包构成报文段,并在发送数据后启动一个定时器,等待对端数据确认。另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复的数据。TCP提供端到端的流量控制,并计算和验证一个也强制性的端到端检验。

面向连接意味着两个使用TCP的应用在彼此交换数据之前必须先建立一个TCP连接。对于其连接过程,TCP用三个报文段完成连接的建立,该过程亦称为三次握手。而终止一个连接则需要四次握手。此外,数据发送需要结果接收方确认,并有超时重传机制。因此,TCP在传输中提供了可靠的通讯保障,同时付出了增加网络开销的代价。

4.2.2 TCP数据传输实现

在本系统中,通过两种方式实现了TCP数据传输功能。一、利用PC机通过串口控制SIM900A模块实现数据传输功能。该方式通过9针串口线将PC机与SIM900A模块连接,设置相应串口参数:波特率-9600、奇偶校验-无、数据位-8、停止位-1。然后输入相应的AT命令控制GSM模块工作。二、利用单片机控制SIM900A模块传输数据。该方式利用硬件系统上的CC2430硬件接口,CC2430为一个51内核的集CPU、无线收发模块于一体的片上系统,在此仅当做单片机使用。通过单片机设置SIM900A连续工作,处于连续发送数据模式,对于该模式本文不做详细介绍,只提供相关主要程序代码见附录。

下面详细介绍PC机通过串口控制SIM900A模块进行TCP数据传输的步骤:

 

                          图4.2  建立监听服务器

步骤一:在数据接收端建立监听服务器。在本例中,监听PC机端口50000,监控是否有数据到达50000端口。由图4.2可见,服务器的IP为192.168.7.10,该IP是内部IP,由其连接的路由器提供。此处需要在接在Internet上的具有唯一地址的路由器上将发送到其上的50000端口的数据转发到内部IP为192.168.7.10的服务器的50000端口。

图4.3  TCP连接相关设置

图4.3  监听端检测到请求连接成功

步骤二:通过串口发送相应AT命令控制SIM900A模块进行TCP连接。此处需要进行GPRS模块工作的相关设置,设置网络,设置协议,设置接入点等等,并向对方IP发起连接。相关AT命令解释详见表2。当监听端收到GPRS模块端发来的连接请求,进行连接,连接成功后可以在监听端观察到GPRS模块所获得的临时IP地址117.136.5.217(该地址为辽宁移动所有)。

 

                      表2  TCP数据传输相关设置命令

图4.4  数据发送成功

步骤三:发送数据。在此,我们发送数据“This is a test for Mobile communication technology!”,在接收端可以看见,收到了该数据,从而实现了TCP数据传输。数据传输完毕发送AT命令:AT+CIPCLOSE断开连接,结束传输过程。

 

此外,本人进行了单片机与SIM900A模块通信的实验,单片机控制SIM900A发送数据,连续发送一天,经过实验结果证明,TCP数据传输有效性基本为100%,由于数据量巨大,在此不予列举。仅提供实验程序,详见附录1。

 

                        

 

 

 

 

 

 


 

附录1CC2430控制SIM900A实现TCP相关主要程序


#include <ioCC2430.h>

#include "hal.h"

#include "string.h"

#include "stdlib.h"

 

//建立tcp连接

 

/*

//关闭tpc连接

void AT_CLOSE()

{

  halUart0SendData("AT+CIPCLOSE\r\n",13);

}

 

//发送数据

void AT_CIPSEND(BYTE* text)

{

  BYTE len=strlen(text);

  halUart0SendData("AT+CIPSEND\r\n",12);

  halUart0SendData(text,len);

  halUart0SendData("\1A",1);

 

}

 

//查询数据传输状态

void AT_CIPACK()

{

  halUart0SendData("AT+CIPACK\r\n",11);

}

 

//设置本地端口

void AT_CLPORT(BYTE a)

{

  BYTE b = strlen(a);

  halUart0SendData("AT+CLPORT=\"TCP\",",16);

  halUart0SendData(a,b);

  halUart0SendData("\r\n",2);

}

 

//激活移动场景

void AT_CIICR()

{

  halUart0SendData("AT+CIICR\r\n",10);

 

}

 

//关闭移动场景

void AT_CIPSHUT()

{

  halUart0SendData("AT+CIPSHUT\r\n",12);

 

}

 

//获得本地ip

void AT_CIFSR()

{

  halUart0SendData("AT+CIICR\r\n",10);

}

 

//查询连接状态

void AT_CIPSTATUS()

{

  halUart0SendData("AT+CIPSTATUS\r\n",14);

}

 

 

//配置域名服务器DNS

void AT_CDNSCFG(BYTE* dns)

{

  BYTE a = strlen(dns);

  halUart0SendData("AT+CDNSCFG=\"",11);

  halUart0SendData(dns,a);

  halUart0SendData("\"\r\n",3);

}

 

//域名解析

void AT_CDNSGIP(BYTE* domain)

{

  BYTE a=strlen(domain);

  halUart0SendData("AT+CDNSGIP=\"",12);

  halUart0SendData(domain,a);

  halUart0SendData("\"\r\n",3);

}

 

//设置自动发送时间(0未设置, 1设置;time 001-100,)

void AT_CIPATS_NotAutoSend(BYTE mode)

{

  halUart0SendData("AT+CIPATS=",10);

  halUart0SendData(mode,1);

  halUart0SendData("\r\n",2);

}

 

void AT_CIPATS(BYTE mode,BYTE time)

{

  halUart0SendData("AT+CIPATS=",10);

  halUart0SendData(mode,1);

  halUart0SendData(time,3);

  halUart0SendData("\r\n",2);

}

 

//配置为服务器(0关闭,1开启; port 00001-65535)

void AT_CIPSERVER_CloseServer(BYTE mode)

{

  halUart0SendData("AT+CIPSERVER=",13);

  halUart0SendData(mode,1);

  halUart0SendData("\r\n",2);

}

 

void AT_CIPSERVER(BYTE mode,BYTE port)

{

  halUart0SendData("AT+CIPSERVER=",13);

  halUart0SendData(mode,1);

  halUart0SendData(port,5);

  halUart0SendData("\r\n",2);

}

 

//配置tcpip应用模式(0 非透明,1 透明)

void AT_CIPMODE(BYTE mode)

{

  halUart0SendData("AT+CIPMODE=",11);

  halUart0SendData(mode,1);

  halUart0SendData("\r\n",2);

}

 

//配置透明传输模式(NmRetry 3-8, 2-10,SendSz 0001-1460,esc 0-1)

void AT_CIPCCFG(BYTE NmRetry,BYTE WaitTm,BYTE SendSz,BYTE esc)

{

  halUart0SendData("AT+CIPCCFG=",11);

  halUart0SendData(NmRetry,1);

  halUart0SendData(",",1);

  halUart0SendData(WaitTm,1);

  halUart0SendData(",",1);

  halUart0SendData(SendSz ,4);

  halUart0SendData(",",1);

  halUart0SendData(esc,1);

  halUart0SendData("\r\n",2);

}

 

//中断通话

void ATH()

{

  if(strcmp(buf,"RING)==0)

  {

    halUart0SendData("ATH\r\n",5);

  }

}

*/

#include "hal.h"

 

void halUart0Init(UINT32 baudrate)

{

    IO_PER_LOC_UART0_AT_PORT0_PIN2345();

    // baudrate should be checked before calling UART_SETUP

    // but I havn't done it yet --by allbone

    UART_SETUP(0, baudrate, 0);

    // Enable receive

    U0CSR |= RE;

}

void halUart1Init(UINT32 baudrate)

{

    IO_PER_LOC_UART1_AT_PORT1_PIN4567();

    UART_SETUP(1, baudrate, 0);

    // Enable receive

    U1CSR |= RE;

}

void uart485_Init(void)

{

    IO_PER_LOC_UART1_AT_PORT1_PIN4567();

    IO_DIR_PORT_PIN(2, 0, IO_OUT);

    UART_SETUP(1, 2400, 0x18);//波特率2400,奇校验,停止位高低电平均可

    // Enable receive

    U1CSR |= RE;

}

 

void halUart0SendData(BYTE* txbuf, BYTE len)

{

    BYTE i;

 

    for(i=0;i<len;i++)

    {

        UART0_SEND(*(txbuf+i));

 

        while( U0CSR & COM_TX_ACTIVE );

    }

}

 

void halUart1SendData(BYTE* txbuf, BYTE len)

{

    BYTE i;

 

    for(i=0;i<len;i++)

    {

        UART1_SEND(*(txbuf+i));

 

        while( U1CSR & COM_TX_ACTIVE );

    }

}

#include "ioCC2430.h"

#include "hal.h"

 

 

 

void sim900a_on(void)//1MHz

{

  P1_7 = 0;

  halWait(25);

  P1_7 = 1;

  halWait(255);

  halWait(255);

  halWait(255);

  halWait(255);

  P1_7 = 0;

}

 

void AT_CIPSTART(void)

{

  halUart0SendData("AT+CIPSTART=\"TCP\",\"202.118.67.200\",\"50000\"\r\n",42);

}

BYTE  resdata[70];

uint8 resdataidx;

 

/************主函数部分********/

main()

{

  BYTE stringlen;

  halInit();//硬件初始化函数

 

  sim900a_on(); 

  resdataidx=0;

   for(uint8 i=0;i<100;i++)

  {

    halWait(200);

  }

 

    halUart0Init(9600);

  halWait(200);

 

 resdataidx=0;

 halUart0SendData("ATE&W\r",6);

 halWait(10);

 

 stringlen = strlen((char *)AT_at);

 halUart0SendData("AT\r",stringlen);

 halWait(10);

 

 stringlen = strlen((char *)AT_cgclass);

 halUart0SendData(AT_cgclass,stringlen);

 halWait(10);

 

 stringlen = strlen((char *)AT_cgdcont);

 halUart0SendData(AT_cgdcont,stringlen);

 halWait(10);

 

 stringlen = strlen((char *)AT_cgatt);

 halUart0SendData(AT_cgatt,stringlen);

 halWait(10);

 

 stringlen = strlen((char *)AT_cipcsgp);

 halUart0SendData(AT_cipcsgp,stringlen);

 halWait(10);

 

stringlen = strlen((char *)AT_cipstart);

 halUart0SendData(AT_cipstart,stringlen);

 // halWait(20);

 //halUart0SendData("AT+CCID\r",8);

 //halWait(20);

 // AT_CIPSTART();

  //sim900a_on();

  while(1)

  {}

}

你可能感兴趣的:(移动通信课论)