基于GR64模块的通用GPRS数传单元设计

发布者:Coboro最新更新时间:2008-01-28 来源: 单片机及嵌入式系统应用关键字:模块  AT命令  数传  置位  gtb  GPRS网络  库函数  上位机  运行脚本 手机看文章 扫描二维码
随时随地手机看文章

  摘要GPRS数传单元(DTU)在远程数据采集终端与主站之间建立起无线IP连接和可靠的数据传输通道。本文提出采用内嵌脚本方式开发GR64,使之成为具有简单控制接口,可方便配置参数和灵活切换工作模式的通用DTU的硬件和软件实现方法,并总结了开发过程中遇到的问题和相应解决办法。

  引 言

  通用分组无线业务GPRS(General Packet Radio Service)是在现有GSM网络基础上进行的软件升级,采用分组交换技术,可提供高速无线IP或X.25服务。它增加了SGSN(GPRS业务支持节点)和GGSN(GPRS网关支持节点)2个服务节点,可提供端到端的、广域的无线IP连接。相对于其他数传方式,GPRS更具优势:建设成本低,数据传输可靠性高,传输速率可达171 khps,基于IP协议可以访问整个Internet,永远在线和按流量收费。

  GR64是Sony/Ericsson公司最新推出的一款内嵌TCP/IP协议栈的GSM/GPRS模块,可向下兼容GR47,内嵌的ARM9 CPU可以开放给用户。GR64具有丰富的存储资源:256KB的脚本空间可同时容纳2个脚本,可用于CSD方式下脚本远程升级,至少50 KB的数据NVM空间和100KB RAM;丰富的功能库涵盖所有的底层驱动,用户只须编写自己的应用程序。GR64提供丰富的接口:对外有2个自适应波特率和帧格式的串口,其中UARTl用于AT命令控制或本地脚本下载,UART3为通用串口;另外,还有USB2.0(等同GR47 UART2,可用于模块自身固件升级和脚本调试信息输出)、SPI、I2C、天线、音频接口,12根I/O线(8根复用),AD/DA转换器,蜂鸣器和实时时钟等内置外设。

  GR64模块有两种开发方式:一种是内部脚本方式,即直接利用模块开放的CPU和系统资源,将类C语言脚本下载到模块的NVM(Nonvolatile Memory)中,在模块的CPU中运行。内部脚本解释器从NVM中读入脚本,逐行解释执行,模块通过UART3与数据终端接口。另一种是外部控制器方式,控制程序在外部微控制器中运行,微处理器向GR64的UARTl发送AT命令控制其工作。

  1 GPRS数据采集系统通信的实现

  上位机服务器不管采用哪种方式接入Internet都必须有固定IP地址,并对各终端开放相应的侦听端口号,在接入网络后要尽量保持在线。下位机(终端)工作后,会通过DTU主动与服务器建立连接,随后告知服务器自己的终端地址;服务器收到后将其加到动态地址数据库中,并自动定时刷新数据库以确定哪些表还挂在网络上,再根据管理员设定的自动查抄时间对连接在网络上的终端进行数据读取、参数设定,校时等操作。

  2 基于GR64的GPRS DTU实现

  2.1 DTU硬件电路

  DTU硬件电路如图1所示。

  

  

  模块工作电压VCC为3.2~4.5 V,可由降压芯片MIC29302bu将5V降至典型工作电压3.6V提供,5个发光二极管分别指示模块GSM网络注册状态,与GPRS网络交互,通信串口数据收发状态;由于模块引脚数字高电平为2.75 V,RS232电平转换芯片最好使用MAX3232等;ON/OFF脚和、VREF分别提供给终端,用于控制模块硬件开关机和检测模块开关机状态;USB口为调试信息和打印信息输出口。

  2.2 DTU功能实现及程序流程

  该应用中GR64工作于内部脚本方式,利用集成开发环境M2mpowerIDE脚本可通过计算机串口从模块UARTl下载到内部脚本空间,并设置为上电自动运行。上电开机、模块注册网络后开始运行脚本:DTU先从数据NVM中读出运行参数,初始化后按预设运行。其中包括:网络连接参数,如GPRS接入点APN(GA:cmnet)、用户名(GU;wap)、密码(GP:wap)、主站IP及端口号(NS:061.183.125.114:l0001);系统参数,如通信协议(CP:TCP/UDP/SMS)、TP通信方式下工作模式(MD:RT实时在线/SA短信激活/DA振铃激活)、连续登陆失败停止登陆次数(CT:10次)、激活模式下无数据传输自动断网时间间隔(IT:30min),以及短信控制密码(SP:whzydz)等。所有参数均向数据通信串口(UART3)发送“+++”后,按上面的格式本地修改(可以一次更改多项,各参数间用分号隔开);改后向DTU发送LS,将得到所有参数的当前值。也可在运行过程中通过短信远程更改各参数,但须在短信的开头加上预先设定好的短信控制密码(PWD:whzydzCT:15;……);另外还可通过通信串口及短信方式控制模块上下线(SM:ONLINE/OFFLINE)及软件重启动(RESET),掉电重上电后将按最近一次更改的参数运行。程序流程如图2、同3和图4所示。

  

  

  

  

  

  2.3 内部脚本方式下程序实现要点

  以下粗体部分表示模块内建功能库函数。

  ①内部脚本不支持中断,须通过内部gtf()函数查询系统标志位方式检测触发类事件的发生,或者通过gtb()函数查询系统状态字节的值确定各项系统状态。例如,收到新短信时标志位SMS—RCV将被置位。其中:im SMS_RCV=29。

  同样,接收到IP数据时标志位IP_DT_RCV将被置位。其中:IP_DT_RCV=13。

  通过查询来电状态字节,即if(gtb(CAL_STA)==RING)判断是否有来电拨入。其中:CAL_STA=12,RING=1。

  ②是否接收到串口数据,通过判断内部函数utrl()返回的串口接收缓冲内数据的长度是否大于0确定。例如:

  此函数的值只能确定串口是否接收到数据,因此在进入串口处理进程后,须先通过查询定时器超时时间内utrl()返回值的变化来检查数据链路,待一包数据接收完毕后再作处理。

  ③内部脚本方式下,TCP连接需要完成以下步骤。

  (a)待注册GPRS网络(开机后模块自动完成)后,进入GPRS初始化进程。

  ◆调用atcrt()创建内部AT命令通道;

  ◆调用afsnd()发送命令“AT+CGDCONT=1,”IP”,”cmnet””设置APN(由从记录中读出的全局变量GA决定,此处默认为cmnet);

  ◆调用atsnd()发送AT命令“AT*ENAD=l,”GPRSl”,”wap”,”wap””设置接入用户名和密码(由GU、GP决定,此处默认为、wap和wap);

  ◆调用atdst()关闭AT命令通道,然后由字符串变量NS(”061.183.125.114:10010”)计算出32位IP(0x3db77d72)和Port(10010),为IP连接作准备。

  (b)进入IP连接进程。

  先激活PDP,pdpa(1,1);然后选择IP连接类型(CM=l,为TCP;CM=0,为UDP),ipo(CM,&ScNm)。UDP方式下此时已可透明传输uDP数据,不需要以下步骤:

  ->执行TCP连接:tcpc(ScNm,Port,IP)。连接成功后,即可透明传输TCP数据。同时不停查询TCP连接状态字节和IP异常标志位时,当检测到TCP连接状态不是已连接或IP异常标志位置位时,Log()进程将调用ipc(ScNm)关闭IP,然后跳转到ipo()重连接。如此往复循环,就可以在检测到连接丢失(如主站软件关闭或断开侦听后重新打开)或数据传输过程中发生异步时序错误时自动重新接入。

  ④利用功能库中的数据库函数存储非易失性参数。

  由于数据库函数对公用的NVM数据空间进行操作,即使下载新脚本,原脚本建立的数据库及数据库中的内容仍然存在,因此若用到数据库脚本就必须包含删除数据库的部分。此应用设计为当串口收到“DEL”字符串时,脚本将自动删除当前已建立的所有数据库。具体如下:

  2.4 实际运用中需注意的问题及解决办法

  ①若GPRS模块在线、长时间无数据传输时,可能被GPRS网络踢掉,大多GPRS模块都不能在短时间内检测到。同样,GR64也会发生实际连接已断,但TCP状态字节仍为已连接的情况。虽然只要终端上发一包数据,GR64内部将马上更改TCP连接状态字节为断开(此时脚本即可控制模块重连接),但此包数据不能被发送至主站,需重新发送。为避免此类情况发生,也可适当发送上行心跳帧,以保持连接。

  ②当GR64长时间不能建立连接时(例如主站侦听不开),调用ipc(ScNm)关闭IP可能发生不响应的情况,脚本中设定连续5次关闭IP失败,模块将调用rst()自动软件重启。

  ③内部脚本方式下,GR64工作时不安装天线,将导致脚本运行缓慢,但只要安装天线,即使信号强度较弱也不会影响脚本运行速度。

  结语

  基于GR64 GSM/GPRS模块的通用数传单元(DTU)为数据终端建立起同主站的无线IP连接和数据传输通道,具有ARM9内核的GR64的出色性能决定了DTU能够快速进行网络连接、数据传输及处理,并支持大数据包传输。运行参数可方便地进行配置和更改,掉电不会丢失;TCP/UDP/SMS三种通信方式可满足大多数情况下网络数据通信的需要,并为网络不通时预留了短信通道,以便在网络故障和维护期间上报重要事件,或告警重要人员;实时在线/短信激话/振铃激活3种工作方式可灵活切换,有利于实际应用中节省流量,有效控制运行费用;内部脚本方式直接使用GR64对外开放的CPU和功能库,简化硬件和软件开发,降低成本。此数传单元具有通用性,完全可以用于各种远程采集、远程控制系统中。

  本文采用嵌入式脚本方式开发GR64模块,实现了DTU的单片解决方案;多工作模式和通信方式使该DTU具有应用于各种远程采集和控制系统的灵活性和实用性。

 

关键字:模块  AT命令  数传  置位  gtb  GPRS网络  库函数  上位机  运行脚本 引用地址:基于GR64模块的通用GPRS数传单元设计

上一篇:采用无线通信技术的新型数控系统
下一篇:RFID技术及在轨道交通的应用

推荐阅读最新更新时间:2024-05-13 21:01

Linear推出 SmartMesh™ LTC5800 (片上系统) 和 LTP5900 (模块) 系列
加利福尼亚州米尔皮塔斯 (MILPITAS, CA) – 2012 年 10 月 16 日 – 凌力尔特公司 (Linear Technology Corporation) 的 Dust Networks® 产品部推出 SmartMesh™ LTC5800 (片上系统) 和 LTP5900 (模块) 系列,这是业界功耗最低的 IEEE 802.15.4E 兼容型无线传感器网络产品。SmartMesh IC 和模块使得能够设计电池寿命超过 10 年的纤巧型传感器“mote”(微尘),而配套的网络管理器组件则可开发出高度稳健和安全的无线传感器网络 (WSN)。 SmartMesh 网络运用了无线网格技术的“三重奏”— 时间分集
[传感器]
Linear推出 SmartMesh™ LTC5800 (片上系统) 和 LTP5900 (<font color='red'>模块</font>) 系列
DC/DC模块电源的选择与应用
DC/DC模块电源以其体积小巧、性能卓异、使用方便的显著特点,在通信、网络、工控、铁路、军事等领域日益得到广泛的应用。很多系统设计人员已经意识到:正确合理地选用DC/DC模块电源,可以省却电源设计、调试方面的麻烦,将主要精力集中在自己专业的领域,这样不仅可以提高整体系统的可靠性和设计水平,而且更重要的是缩短了整个产品的研发周期,为在激烈的市场竞争中领先致胜赢得了宝贵商机。那么,怎样正确合理地选用DC/DC模块电源呢,笔者将从DC/DC模块电源开发设计的角度,结合近年来鼎立信公司模块电源推广使用过程中得到的用户信息反馈,谈一谈这方面的问题,以供广大系统设计人员参考。 DC/DC模块电源的选择 选择使用DC/DC模块电
[电源管理]
采用双管正激拓扑构建高性能模块电源
引言 高功率密度、高效率以及小外型尺寸已成为当前模块电源技术发展的关键驱动力。双管正激电路是实现这些要求的实用电路之一,被广泛应用在中、高功率电源设计中。本文简要介绍了双管正激电路的工作原理及优点,同时详细介绍了应用于双管正激电路的PWM控制器MAX5051的功能和具体的实验结果。 双管正激变换器的原理图与波形如图1所示。双管正激变换器的工作可以分为三个过程:能量转移阶段、变压器磁复位阶段和死区阶段。在能量转移阶段,原边的两个开关都导通,能量从输入端向输出端转移。在变压器磁复位阶段,原边的两个二极管都导通,使变压器绕组承受反相输入电压,从而实现变压器磁复位。当变压器完全复位后,变换器工作在死区阶段,即原边无电流、副边续流。在复位
[电源管理]
符号车规级标准的实时时钟模块RA4000CE,可提供精准可靠的时钟解决方案
目前汽车电气化的水平越来越高,其中比较显著的一个发展方向就是将发动机管理系统和 自动变速器 控制系统 ,集成为动力 传动系统 的综合控制(PCM)。作为汽车动力的核心部件,通过电子系统的运用,将外部多个 传感器 和执行环节的数据进行统一协调,这就要求电子系统具有高度的实时性和可靠性,从而促进了 实时时钟 模块的进一步发展应用。 EPSON作为一家密切关注汽车行业的实时时钟模块厂家,长期跟踪汽车产业的发展动态,近期推出了一款采用 SPI 总线 接口的实时时钟模块RA4000CE。这款产品满足AEC-Q100车规认证标准,为 汽车电子 厂家提供实时性更高的时钟信号,可为汽车动力传动系统综合控制部件提供精准可靠的时钟解决方案,帮助厂
[汽车电子]
符号车规级标准的实时时钟<font color='red'>模块</font>RA4000CE,可提供精准可靠的时钟解决方案
Micron 宣布DDR4存储器模块研发完成
    Micron 虽然忙于 Elpida 的竞争行列中,但对于下一代存储器的开发并未停止。     Micron 透过新闻稿正式宣布该公司首个DDR4 DRAM 模块已经开发完成,同时已经开始提供样品让主要客户进行测试,预计2013年将能够开始量产。     根据 JEDEC 的规划,企业端以及服务器市场将会率先使用 DDR4 存储器模块,它将比目前的 DDR3 存储器拥有更高的工作时脉却使用较低的电压。此次 Micron 所宣布的 DDR4 存储器模块是与 Nanya 基于 30nm 制程偕同开发。在单挑存储器模块内,拥有 8 颗 4Gbit DDR4 颗粒,同时将会涵盖了 RDIMMs、LRDIMMs、3DS、SODIMMs
[手机便携]
关于模块化编程extern用法
用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用。   举例说明:项目文件夹project下有main.c、common.c和common.h三个文件,其中common.h文件分别#include在main.c和common.c文件中。现在希望声明一个字符型变量key,在main.c和common.c中公用。如下图所示:   有人想,既然是想两个文件都用,那就在common.h中声明一个unsigned char key,然后由于包含关系,在main.c和common.c中都是可见的,所以就能共用了。   这种想法
[单片机]
关于<font color='red'>模块</font>化编程extern用法
无驱动USB认证模块在电子商务中的应用
摘要:USB作为一种新型的接口技术在电子商务平台有其独特的优势。本文主要介绍关于无驱动型USB产品HID接口的设计过程,讨论产品的软硬件开发过程中的一些问题,给出参考示例代码。 关键词:USB 人机接口设备(HID) 电子商务 安全认证 接口技术 USB是由Compaq(康柏)、DEC、IBM、Intel、NEC、微软以及Northern Telecom(北京电讯)等公司于1994年11月共同提出的,自1995年在Comdex上亮相以来至今已广泛地为各PC厂家所支持,近年来应用日益广泛。 但是,国内的USB产品还是相对较少。首先,是硬件开发系统的问题,国内没有自己USB芯片产品,所有的关于USB接口方面的芯片全部由国外供给,
[应用]
字符型液晶12864(ST7290)驱动模块
/******************************************************************************* ** 测试芯片:M16 ** 晶振 : 8.000000 ** 名称 : ST7290驱动模块 ** 总结 : 主要是要在void LCM_write_byte( uchar byte )此函数后加一个延时。最小5us ** 说明 : 本驱动配合延时驱动 delay.h, 用到string.h ** 用到 uchar 和 uint 和 long int 和 float 类型 , 请注意使用 *******************************
[单片机]
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved