这是以前网上整理的一点资料,貌似有很多都是chunyang大哥的,被网上转来转去,我再弄回来,结合自己用过的一些模块的总结,给各位兄弟们参考下。
GPRS模块概述
现在无线模块品种众多,对于初次进行方案设计的人员来说,难以抉择。常规的无线模块分成GPRS、CDMA、GSM、EDGE等模块。其中有些模块是不带TCP/IP协议的。随着产业的发展和技术的进步,现在大多数无线模块都内置了协议。由于GPRS的网络分布更为广泛,大多数的客户倾向于选择使用GPRS模块。
西门子作为老牌的模块生产企业,它的口碑在业界还是不错的,如MC55I功能丰富、性能稳定;同样如摩托罗拉的G24模块,它的功能非常强大,当然此两款模块价格也是比较高的。相对来说BENQ的M23G、M32(M32已经停产)和华为的GTM900B模块性价比较高,特别是华为的GTM900B模块,近年在行业内得到了越来越多的认可,性能稳定,返修率很低。还有一个优势,就是在硬件上它可以同西门子的TC35I、MC39I进行互换,对于想降低生产成本的模块用户来说非常方便。
相对来说GPRS模块,西门子的MC39I、MC55I、摩托罗拉的G24返修率非常低,客户接受和认可度高。而从最近几年的情况分析来看,华为的GTM900B模块逐渐占据了较高的市场份额,其返修率也非常低。作为性价比很高的一款产品,非常适合对价格敏感的客户群选用。对于GSM模块,则推荐客户选用西门子的TC35I模块。CDMA模块则推荐使用华为的CM320,性价比相对较高。
随着无线通讯市场的规模逐渐加大,模块的经销渠道也越来越多。但现在市场上商户良莠不齐,举例来说西门子的无线模块由于推出较早,功能强大,性能稳定,用户也较多。但市场上也出现了很多“水货”和“翻新货”,质量和维保就难以得到保证。所以建议用户不要为了表面上看起来便宜了十几块钱而增大了风险,购买此类产品还是要在正规的代理商或专业经销商处购买。华为的GTM900B作为国产的GPRS模块,目前市场上应该来说还不会出现“假货”和“翻新货”,目前最好的采购渠道就是在代理商和专业经销商处,能够得到很好的技术支持和产品维保。
还有就是一定要了解模块短期内是否会停产,我曾经在代理商的极力推荐下使用了BENQ的M32模块,该模块是该代理商主推的BENQ模块,性价比不错,用的也挺好。可是几个月不到,该模块使用的1个TI芯片停产,从而导致该模块也停产了,不得不重新选择模块,不仅浪费公司资源也耽误了市场。
这些无线模块常规的配套产品通常有以下几种:①模块插座,用于连接模块和线路板,不同的模块往往使用不同规格的插座,常用的有40Pin、50Pin、60Pin和70Pin;②排线,用于连接模块上自带的插座和模块插座,分进口和国产两类;③天线,常用的有吸盘天线、棒状天线、T型天线、尺状天线、拇指天线等多种形式,配合GPRS和CDMA,频率有850/900/1800和1900MHz;一些客户在偏远地区遇到GPRS或CDMA 信号偏弱的问题可以尝试选择高增益天线加以解决,能取得较好的效果;④转接线,又叫馈线,用于连接天线和模块,接口通常有MMCX、IPEX和SMA等,又分进口和国产两类;⑤SIM卡座,有翻盖和抽屉式,带回流焊是常用的较好的卡座。
GPRS模块的选择
模块的选择可以从以下几个方面着手:
1, 尺寸和成本。这个就不多说了。
2, 工作环境。工业及车载的高可靠应用西门子是第一选择,Motorola和索爱的也不错,但其不如前者的供货及技术支持好。一般工业及车载应用但对成本较敏感的话,可以用Simcom或Wavecom的。普通环境及成本高度敏感的,建议用BenQ的,但Benq质量一般,西门子性价比不高,华为的GTM900B是一个不错的选择,也算支持国货。
3,是否需要自带协议栈。如果只是语音和短信之类的应用,就不需要协议栈了,如果还要用到数据传输,就需要协议栈。协议栈可以自己写,自己写协议栈的好处是,灵活性比较高。一般来说每个模块都有对应的带协议栈和不带协议栈的型号,带协议栈的模块要贵一些,如果对协议栈比较了解的话,推荐自己写协议栈。若不太了解协议或者急于推出产品的话,可以在前期选择带协议栈的,后期可根据实际情况选择不带协议栈,也能节约不少成本。
4,模块管脚兼容性。市场上是否有可以替代的模块,如华为的GTM900就和西门子的一些模块PIN_PIN兼容;当模块停产,或者为了降低成本,或者需要增加新的功能时,模块能相互替代就最好了。
5,代理或者经销商的技术支持要好,能够提供可靠的硬件和软件资料。
GPRS模块硬件设计
GPRS模块的硬件接口主要如下:
1, 电源和地。芯片工作电源一般都是3.3V,1.8V等,考虑到一些损耗等,为了模块正常工作,要求工作电源在3.7V到4V不等。电源要稳定,且容量足够。GPRS模块在连上网的一瞬间的电流比较大,设计时要考虑到这种情况。
2, SIM卡座。
3, 串口。GPRS模块与单片机间一般是通过串行口进行通信的,通信速率最快可以达到115 200b/s。除了串口发送(TX)、串口接收(RX)之外,微控制器与GPRS模块之间还有一些硬件握手信号,如DTR、CTS、DCD等。为了简化微控制器的控制,硬件设计时可以不使用硬件握手信号,具体以厂家的模块说明为准。
4, 与语音通话相关的引脚,话筒、听筒之类。若不需要用到语音通话功能,则可以不接。
5, 开关引脚。一般都会有控制模块开关的引脚,通过给个低脉冲来进行开关机,跟手机开关机差不多。有的模块还会开放复位脚,通过拉高或者拉低来对模块进行复位。
硬件设计时也可通过控制模块的电源来达到控制模块开关的目的。
6, 状态指示脚。一般都会有个GPRS模块状态指示脚,接上LED灯后就能知道模块的工作情况。
7, 天线。要注意高频的影响。
GPRS模块软件设计
模块与控制器间的通信协议是AT命令集,其中大部分命令是符合协议“AT command set for GSM Mobile Equipment (ME) (GSM 07.07 version6.4.0Release 1997)”的,但也有一些是厂家自己定义的AT命令,所有的模块的AT指令都大同小异,熟悉了一款模块的AT指令后,其他的模块都能很快的掌握。GPRS模块的一般应用包括:数据传输、语音通话、短信等。
软件整体结构
程序中的所有代码最好采用C语言编写,并采用分层的结构,从底到上分别为:串口驱动层、GPRS模块驱动层、PPP协议层、IP协议层、TCP/UDP协议层与应用层。若模块自带协议栈,就只需要串口驱动层、GPRS模块驱动层、应用层。上层函数的实现需要应用到底层函数,而底层函数的任务就是为上层函数提供服务,最终完成应用层任务——传送数据。驱动程序编写
首先是串行口驱动层。它实现打开串口、关闭串口、读串口数据、写串口数据等函数。然后,在这些串口函数的基础上编写GPRS模块的驱动函数。单片机通过串行口控制GPRS模块,进行拨号、设置等操作。控制的方法是采用AT命令。从而可以编写GPRS驱动函数:开关GPRS模块函数、初始化GPRS模块函数、拨号函数、断开连接函数、检测是否处于在线状态函数。
这些底层的驱动函数将会使上层协议的编写很方便,更重要的是,它为我们提供了一个驱动抽象层。当底层硬件做出改动的时候,只需要对底层的驱动函数进行改动,而上层函数的代码不变。 |