原创 TC35调试笔记(转)

2007-7-18 19:35 7120 8 11 分类: 通信

TC35调试笔记
一、TC35的部分调试参数
1
TC35的电流消耗指标:
1
〉通话模式的峰值电流(TALK mode of peak),1.8A
2
〉通话模式的典型电流(TALK mode),300mA @900MHz / 270mA @1800MHz
3
〉空闲模式(IDLE mode)的消耗电流,10mA
4
〉休眠模式(SLEEP mode)的消耗电流,3mA
5
〉关机模式(Power Down mode)的消耗电流,50µA
2
、关于LED灯显示的状态
SYNC
引脚可以用来输出一个同步信号(synchronization signal),也可以在应用使来控制一个LED灯的输出状态。:SYNC端通过一个三极管或门电路来控制LED。一个简单的电路接法是:SYNC端通过一电阻接到NPN三极管(如9013)的基极,射极直接接地,集电极通过一个接限流电阻接到LED的负端,LED的正端接VCCLED的工作模式完全类同于同步信号,显示的是TC35的工作状态:
1
LED灯灭,表示TC35电源关闭,处于休眠、报警或单纯的充电模式
2
600 ms  / 600ms 灭,表示未插入SIM卡,或者个人身份未登记/已注销,或者网络正在搜寻中,或者正在进行用户身份鉴定,或者网络注册正在进行中
3
75ms  / 3s 灭,表示网络注册成功(控制通道和用户交换信息完成),无来电
4
LED灯亮,依据不同的呼叫类型:声音呼叫,数据呼叫,在建立或者完毕时的状态。
2
、关于VDD端:
TC35
正常工作时,VDD引脚输出信号的幅度(大约在开机后60ms产生):2.9V/70mA,可作为外部应用。
空闲或者通话模式: VDDout = 2.9V ±3% @ 70mA Imax = 70mA;电源关闭模式: VDDout = 0V
3
、关于VBATT+端:
TC35
的工作电压输入端VBATT+,电压幅度为 3.3V-5.5VVtyp = 4.2V,最大电流Imax ≤ 2 A @ GSM天线回波损耗(return loss≥ 6 dB。必须注意:最低工作电压不能低于3.3V,否则电压将会跌落,从而导致TC35停止工作。由于VBATT+引脚的峰值电流为 2A ,一个GSM发射脉冲(transmission burst)可能引起相当大的电压跌落,此外由于外部电源的扁平柔性连线的内在固有阻抗也可能损失一部分。因此,在任何时候,必须保证VBATT+ 的电压不能低于 3.3V,而且电压跌落差值不能超过400 mV。另外,为了保证TC35在发射脉冲区间的电压跌落值处于最低值,采用尽可能短的连接模块和ZIF座的扁平柔性FFC电缆,长度不得超过200mm,和低输出阻抗(low-impedance)的电源。
4
、关于POWER:
TC35
的充电电压正端POWER,如果通过外部的电源(如充电器)供电,应保证Imax = 500 mAVin=5.5-8V
5
、关于/IGT(Ignition)端:
TC35
的触发点火信号端/IGT, OC门或者一个简单的开关拉低该端电平来开启模块,低电平有效。在空闲/通话/关机模式:Vout = 2.0VVlow,max = 0.45V @ Iout = 10µAtlow ≥ 100ms。对于点火信号IGT的处理,需要首先拉低该脚电平到地,并至少维持100ms
注意,如果你通过充电器回路(接到POWER引脚)供电,或者通过电池供电(接到VBATT+引脚),那么IGT信号必须维持至少1秒!
6
、关于PDPower down):
TC35
的关闭电源端/PD,关机信号脉冲,信号波形为~~~|______|~~~ ,拉低到低电平,至少维持3.5秒方为有效。Vin,low,max = 0.45V @ I = 0.1mA,可用OC门或者一个简单的开关实现,通过关机信号端可以关闭TC35。而在IGT引脚施加一个低电平脉冲信号可以重新开启模块及系统。另外,关机信号端/PD也可用来实现看门狗信号输出:Vout,low = 0.35V @ 0.01mAVout,high = 2.30V @ -0.01mAfout = 0.5-2.0Hz
7
、启动TC35的方式:
TC35 
可以通过以下方式激活,开始工作
1
〉通过点火线IGT触发,进入正常工作状态
2
〉通过电源线,开始进入充电区
3
〉通过RTC中断,开始进入报警模式
8
TC35的开机操作时序
当开始应用,TC35的加电过程必须按照以下步骤进行:
1
〉直到VBATT+脚的电平超过3.0V时方可对ignition线的信号电平变换。
2
VBATT+脚的电平上升达到3.0V后维持10毫秒,方可拉低IGT线的信号电平。IGT线的电平跌落时间(下降时间)必须不超过1ms
3
〉另外,该IGT线的低电平信号必须维持最少100ms
4
〉在IGT线信号转换区间必须保证 VBATT+ 的电压不能低于3.0V,否则模块不能被激活。  
 


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


二、单片机控制GSM模块TC35的方法


  介绍一种 采用GSM的短信功能,可以使某些控制达到零距离"。由于短信息的费用低廉,可以取代传统的无线遥控。现在详细介绍一种采用单片机(MCS51系列)控制TC35(廉价的GSM模块)发送、接收GSM短信的方法。


1  TC35的控制简介
    TC35
Siemeils公司推出的新-代无线通信GSM模块。自带RS232通讯接口,可以方便地与PC机、单片机连机通讯。可以快速、安全、可靠地实现系统方案中的数据、语音传输、短消息服务(Short Message Service)和传真。TC35模块的工作电压为3.3—5.5V,可以工作在900MHz1800MHz两个频段,所在频段功耗分别为2w(900M)1w(1800M)
   
模块有AT命令集接口,支持文本和PDU模式的短消息、第三组的二类传真、以及2.4k,4.8k,9.6k的非透明模式。此外,该模块还具有电话簿功能、多方通话,漫游检测功能,常用工作模式有省电模式、IDLETALK等模式。通过独特的40引脚的ZIF连接器,实现电源连接、指令、数据、语音信号、及控制信号的双向传输。通过ZIF连接器及50Ω天线连接器,可分别连接SIM卡支架和天线。
    TC35
模块主要由GSM基带处理器、GSM射频模块、供电模块(ASIC)、闪存、ZIF连接器、天线接口六部分组成。作为TC35的核心,基带处理器主要处理GSM终端内的语音、数据信号,并涵盖了蜂窝射频设备中的所有的模拟和数字功能。在不需要额外硬件电路的前提下,可支持FRHREFR语音信道编码。其它功能介绍可参见有关资料!


2AT指令的介绍
TC35
模块的通讯全部采用AT+xxx完成。基本的AT指令见:/html/zonghejishu/2007/0514/2078.html


3  TC35的连机方法
   
任何一个TC35模块首次使用时,必须要测试其工作是否正常,由于其自带RS232接口,所以我们可以用PC机的串口调试软件进行调试。
1
、启动串口调试软件(见界面)
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> 
 
串口调试软件有许多,可以使用任意一款软件,也可以使用WINDOWS自带的超级终端"。设置波特率19.2k,这是TC35的默认波特率,首次连机可以从240057.6k不断测试,直到TC35有应答。

2
、发送“AT"’
  AT
回车

3
、改变波特率“AT+IPS=XXXX"
  TC35
的默认波特率是19.2k,实际使用时,可以改成960038.4K,方法如下:
  AT+IPR=9600
回车

4
、短信模式的设置
  (GSM
模块的短信模式有2种。第1种是:TEXT模式;2种是:PDU模式。PDU模式可以采用unicode编码发送英文、汉字。但合成PDU码比较复杂,TEXT模式只能发送英文,但无须编码。实际使用可以采用TEXT模式。
设置如下:
    AT+CMFG=1
回车

5
、短信模式简介
    SMS
是由Etsi所制定的一个规范(GSM 03.40GSM 03.38)。当使用7-bits编码的时候它可以发送最多160个字符;8-bit编码(最多140个字符)。通常无法直接通过手机显示;通常被用来作为数据消息,例如:smart messaging中的图片和铃声和OTA WAP设置。16-bit信息(最多70个字符)被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。一个以class 0开头的16-bit的文本信息将在某些手机上作为Flash SMS显示(闪烁的SMS和警告SMS)
   
有两种方式来发送和接收SMS信息:使用文本模式或者使用PDU(protocol description unit)模式。文本模式(可能某些手机不支持)实际上也是一种PDU编码的一种表现形式。在显示SMS信息,可能使用不同的字符集和不同的编码方式。

6
、短信读取方法
    AT+CMGR=X
回车
如果有短信息,TC35回应:
AT+CMGR=1
+CMGR
"REC UNREAD","13307496548",,"04/08/17,222432+02
testOK
OK
短信息分析:
“test OK"
就是短信息内容。
短信息的存储容量与Ic卡有关,序号从1-N
REC UNREAD"
:代表短信息未读过。
REC READ"   
:已读过。
13307496548" 
:接收的手机号码。
04/08/17,22
2432+02":短信息发送的时间。
无短信息,TC35回应:
AT+CMGR=3
+CMGR
0,,0

7
、短信的删除方法
    AT+CMGD=1
回车

8
、短信的发送方法
   
短信息的发送分成两步:
    1
:发送接收的手机号码,等待应答:“>"
    AT+CMGS="13307496548"
回车(目的地址)
    TC35
回应:
    AT+CMGS="13307496548"  >
    2
  输入短信息的内容(只能是英文)Test 回车


4、单片机控制TC35的方法
    上面介绍了用PC机控制TC35的方法,我们只需将PC机输出的控制命令转化成单片机输出的指令即可。
1
、硬件连接
 
电路见下图只需设计一个TTLRS232电平电路,连接到MCUUART,另一端直接连接到TC35
 
2
、指令输出的方法
   
单片机串口设置成模式1(9600,N,8,1),依次将AT+xxxASCII码形式输出到UART;接收TC35的数据采用中断方式。这里给出详细的程序清单(Keil C51),不介绍编程的方法。程序见下:


//AT指令的定义
char code AT_Tc35[]="AT+";    //
连机
char code Bps_Tc35[]="IPR=38400";  //
波特率
char code Text_Tc35[]="CMGF=1";    //
文本模式
char code Read_Tc35[]="CMGR=";  //
读信息
char code Erase_Tc35[]="CMGD=";  //
删除信息
char code Send_Tc35[]="CMGS=";  //
发送信息
char code Creg_Tc35[]="CREG?";    //
注册


//模式设置
void UART_Init(void)
{
SCON=0x50;    //01010000b=>1
模式scon,#11011000b;
ES=l;
}


//发送-ASCII
void SendASC(unsigned char ASC)
{
bit es;
es=ES;
ES=0;//
关闭中断
TI=0;
SBUF=ASC;
while(!TI);
TI=0;
ES=es;
)


//发送命令到TC35
void SendToTc35(unsigned char* p,unsigned char Long)
{
while(Long--)
{
    SendASC(*p++);
  }
}


//  通讯中断接收程序
void Rs485_Do(void) interrupt 4 using 1
  {
  if(RI==l)
  {
    RI="0";
    RsBuq[RsPoint++]=SBUF;
    if fRsPoint>=sizeof(RsBuf))
    {
    RsPoint="0";//FlagRs485=0;
    }  //
数据处理
  }
 }

//
发送AT连机命令
char code AT_Code[]="OK";
void Send_AT(void)
{
unsigned char *p;
while(1)
{
    ClrRsBuf(RsBuf,sizeof(RsBuf));
    SendToTc35(AT_Tc35,2);    //"AT"
    SendASC(OVER);
//************
等待应答“ok"
    ES="1";    //
必须中断
    Delay(50);
    P="strstr"(RsBuf,AT_Code);
    if(p!=NULL) break;
}
)


//发送bps连机命令
void Send_BPS(void)
{
 SendToTc35(AT_Tc35,3);    //"AT+"
 SendToTc35(Bps_Tc35,sizeof(Bps_Tc35)-1);//"IPR=19200"
 SendASC(OVER);
}


//设置文本
void SetText(void)
{
SendToTc35(AT_Tc35,3);    //"AT+"
SendToTc35(Text_tc35,sizeof(Text_tc35)-1);//"IPR=19200"
SendASC(OVER);
Delay(100)


//删除短信息
unsigned char EraseMsg(unsigned char index)
{
 unsigned char *p,i=20;
 SendToTc35(AT_Tc35,3);    //"AT+"
 SendToTc35(Erase_Tc35,sizeof(Erase_Tc35)-1);//"IPR=19200"
 SendASC(index);
 SendASC(OVER);
 ES=1;
 while(i--)
{
    Delay(200);
    P="strstr"(RsBuf,AT_Code);
    if(P!=NULL)    {return 1;}
}
return 0;
}


//读取短信息
char code Ask_No[]="+CMGR:0,,0";
char code ERROR{]="ERROR";
char code Ask_Tc35[]="/";
unsigned char ReadMsg(unsigned char index)
{
unsigned char *p,i;
unsigned char Buf[40];
SendToTc35(AT_Tc35,3);    //"AT+"
SendToTc35(Read_Tc35,sizeof(Read_Tc35)-1);
SendASC(index);
SendASC(OVER);
ES=1;    //
必须中断
Delay(600);
/*-------
    ES="0"

    SendToTc35(RsBuf,99);
    ES="1";
*/|


p=strstr(RsBuf,ERROR);
if(P!=NULL)
{
    Send_AT();return 0;
p=strstr(RsBuf,Ask_No);//
无信息
if(p!=NULL)return 0;
p=strstr(RsBuf,Ask_Tc35);//20
个字节后是MSG
if(p==NULL) return 0;
p=p+21;
for(i=0;i{
  Buf=*p++;
}


if(EraseMsg(index)==0) return 0;
p=strcpy(RsBuf,Buf);  //
放回RsBuf
 return 1;
)


//发送短信息
char code SK[]=">";
void SendMsgStart(void)
{
unsigned char *p,i=10;
SendToTc35(AT_Tc35,3);    //"AT+"
SendToTc35(Send_Tc35,sizeof(Send_Tc35)-1);//"IPR=19200"
SendASC(YinHao);
SendToTc35(Mp1.Hand,sizeof(Mp1.Hand));    //"AT+"
SendASC(YinHao);
SendASC(OVER);
ES=1;
while(i--)
{
  Delay(100);  //Get">"
  p="strstr"(RsBuf,SK);//">"
  if(p!=NULL)
  {
    ClrRsBuf(RsBuf,sizeof(RsBuf));
    Delay(150);  //Get">"
    break;
}
}
}


 


 


 


 


 


 


 


二、发送短信息和接收短信息(TEXT模式)


(以下内容来自网络,作者声明可以自由转载,但必须注明出处)  
适合人群:首次接触G网模块人员
   
凡是利用GSM模块二次开发的,不管是用来做公话,还是GPRS通信,其中短消息基本都要使用的。本文大致介绍一下短消息相关的AT命令使用方法。
详细的AT指令说明,可以参考 07.05,或者西门子MC35IAT手册,西门子手册感觉还是很不错的。
   
由于本文表达的错误给您带来的物资损失和精神损伤,本人概不负责。
1
    短消息的格式
我所见到的模块短消息基本都提供2种格式,TEXTPDU。文本模式相对来说比较简单,特别适合传输那些字符什么的,对于老外来说,基本就发26个字母,简直太方便了。PDU模式需要进行编码,目前的汉字传输好多都采用PDU模式。由于本人对PDU和怎么发汉字基本一窍不通,这段就暂时忽略了。
一般模块默认的都是PDU模式,你可以使用如下命令切换到TEXT模式:
AT+CMGF=1
如果想再切换到PDU模式,使用:
AT+CMGF=0
即可,以下短消息发送&读取都采用TEXT模式,因为PDU我不是很懂。
2
    怎样给我发送一条短消息?
现在你手里有了G网模块,但首先你要确保如下操作已经完成:
1
    模块上电并且AT命令同你的PC串口通信顺畅。
2
    SIM卡没有欠费,并且已经登陆GSM网络(可以使用AT+CREG?查询,如果返回1或者5表示正常)。
3
     AT+CMGF=1设置完毕。
有了以上的过程,那么你就可以给我发信息了,你要使用的AT命令是:AT+CMGS
我的手机号是:13766832435(真实号码)。
1
    从串口输入:AT+CMGS="13766832435" 然后按回车键。
2
    这个时候你可以看到有个大于号 ‘>’弹出,提示你可以输入消息的内容了。
假如你想发送“hello world”,直接在’>’后面输入即可,输入完了后按’CTRL^Z”,稍微等一下,你的信息也就发出去了,如果编程好像是0x1A(记不清了,你可以查下ASCII表)。
全部过程如下:
AT+CMGS="13766832435"
> hello world
+CMGS: 199
OK
你需要一直等到OK返回,才能确定是成功发出,中间的那个东西可以先不管。如果你输入 “ hello world”后,但又不想发了,按ESC可以取消发送,就不再介绍。


 


 


 


 


 


 


 


附: ASCII


 





3    怎样打开传送回报?
手机上我们都可以找到一个菜单,可以选择传送回报的功能,也就是说别人收到你的信息后,短消息中心会给你一个确认信息,假如是发给心上人,这个功能尤其重要。
对于模块我们没有菜单可选,但我们有 AT+CSMP 这样一条AT命令,在TEXT模式下,对于手机上的那个选项可以通过这条命令实现,这个命令的具体含义我搞得不是很清楚,也懒得去研究,曾经有个人告诉我按照下面设置后,传送回报就可以回来:
AT+CSMP=33
   
但即使你这样设置后,别人收到后,传送回报你可能还是看不到,你还需要设置另外一条AT命令:“AT+CNMI=2,1,,1”,下面就会介绍到这个命令的用法。
   
对于PDU模式,控制传送回报有很大差别。
4
    AT+CNMI的用法。
到目前为止,你至少还有如下的疑惑:
1
    来了新短信,我怎么知道?
2
    我担心时间长了SIM卡会写坏,FLASH也可能写坏,或者我单片机很强短信不需要存储,就要模块直接给我,我该怎么办?
3
    我要看传送回报!
  
上面一切疑虑都可以从AT+CNMI中得到答案。
我手头上有个西门子MC35的手册,CNMI的几个参数如下:
AT+CNMI =[][,][,][,][,]
方括号表示参数是可选的,简要说明下:
  
用来选择来了新短信,提示信息是否需要从串口直接打出,一般取2
    
用来选择新短信的提示方式,取1的话,就比较简单,比如“+CMTI: "SM",3”,告诉你新短信存在SIM卡里,序号是3,稍后告诉你怎样读取。取2的话,来了新短信就会不作存储,直接从串口显示出来。
   
用来选择传送回报,如果想看回报的话,一般取1(同AT+CSMP结合使用)。
其他参数不作说明。
这里提供3组参数可以供你使用:
1
    AT+CNMI=2,1,,1
这组参数可以提供新信息提示,以及传送回报的功能
2
    AT+CNMI=2,2,,1
这组参数来了新信息直接显示到串口,不作存储,仍然打开传送回报。
3
    AT+CNMI=2,1
这组参数,一般的模块都会有新信息提示,不会打开回报功能(打开可能会干扰单片机处理)     以上仅供参考,不同厂家模块实现形式以及支持参数可能会有不同,需要实际测试。
5
    怎样读取SIM卡或者手机内部的信息?
比如我们收到这样的信息:“+CMTI: "SM",3”,知道来了新信息,并且存储在SIM卡,第3个位置区。我们怎么去读取呢?
   
比较EASY,用AT+CMGR来读取,如下:
AT+CMGR=3
,回车后,即可看到短信内容,比较简单,这里就不举例了。
还有一个用来读取短信的命令,AT+CMGL,可以列出手机内部的全部AT命令,
比如:
AT+CMGL=”ALL”
,回车后可以返回当前存储区的所有短信,结果自己实践即可。
CMGL还有另外3个参数,可以参考手册,并且PDU还有些不同,参数使用的是数字。
6
    怎样选择存储区?
现在的模块一般都提供23个存储区,SIM卡,手机(FLASH, SIM卡+FLASH
我们可以使用 AT+CPMS?进行选择,关于CPMS3个参数,这里简要介绍一下,比较容易搞混,并不是表示SIM卡或者手机分别有3个存储区。
设置命令如下:AT+CPMS=[,][,]]
 Memory to be used when listing, reading and deleting messages:
 Memory to be used when writing and sending messages:
 Received messages will be placed to this storage if routing to TE is not
set. 
上面是我为了省事直接从西门子手册COPY的,需要仔细理解。组合着多试几次就知道了。

7
    怎样删除一条短信?
使用AT+CMGD,比如:
AT+CMGD=1 
将删除内部的第一条信息(注意模块返回OK都是删除成功,有些模块会返回ERROR,其实表示当前这个位置没有短信息)。
AT+CMGD
还有个全删的功能,比如:
AT+CMGD=1,4 
将删除存储区内部的全部短信息。(注意第二个参数还有3个,可以看手册,并且并不是所有厂家模块都支持全删)



到这为此吧,已经弄了2个小时了,我要去睡觉了,明天还要起早上班。


GPRS外置Modem一般仅是GPRS模块+SIM卡+电源变换+RS232接口及简单的控制电路组成,嵌入式应用最好直接用模块,桌面应用可以考虑采用成品外,原装进口价也就1千多,不少国内小公司自己做的仅600800块,但考虑到一般桌面用量都不大,还是用原装的较好。俺老汉也曾推出过GSM/GPRS外猫,但对客户还是一直推荐去正规代理处拿原装货。成品外猫分带协议栈和不带协议栈的两类,由其内封模块的型号决定,外挂至PC时,因操作系统已包含完整的协议栈,故Modem是否有协议栈已并不重要,甚至对于自带协议栈的型号还应将其屏蔽,采用直通模式。
    
嵌入式应用选模块时,若仅使用SMS及语音的话,西门子的TC35i是不错的选择,若使用GPRS数据通讯的话,最好选带协议栈的模块,SimcomSIM100是目前最佳性价比的选择,低端则可选BenQ的模块如M22,高端可选西门子的TC45,另外Motorola、索爱、Wavecom等也有同类产品,但价格比Simcom的高。中兴通讯可以提供目前唯一真正国产的GSM/GPRS/CDMA模块,但技术支持和业界的口碑看来还有待改进。不带协议栈的GPRS模块可以选西门子的MC35i,但现在随着自带协议栈的型号越来越多且价格渐与普通GPRS模块趋同,故已变得无多少实用价值了,采用带协议栈的嵌入式操作系统的应用中最适合采用此类模块。
    
补充关于品牌的选择:
    
工业及车载的高可靠应用西门子是第一选择,Motorola和索爱的也不错,但其不如前者的供货及技术支持好。一般工业及车载应用但对成本较敏感的话,可以用SimcomWavecom的。普通环境及成本高度敏感的,建议用BenQ的。 


 


 


附:论文资料   关于PDU格式的短信息发送和接收


摘要:本文介绍了GSM通信模块TC35的中文短消息收发格式,然后举例解释了实际操作过程,最后介绍与微处理器的接口方法。
关键词:TC35通信模块  短消息


引言


    由于中文短消息具有内容直观,传送距离远,用户无需建造信号中转站,成本相对低廉,因此在控制领域的应用日益广泛。SIEMENSTC35GSM通信模块在国内应用比较广泛,然而很多技术人员在刚开始使用时,有许多不甚清楚的地方,甚至无从下手,因此有必要把有关的基础知识和经验写出来供大家参考。


短消息的格式及解释
   
由于参考资料几乎全是英文资料,因此本文亦写出英文缩写,以方便读者阅读其他材料。
   
短消息接收格式如下:
  
   
格式中英文缩写的解释如下:
    SCA  Service Center Address 
短消息服务中心地址,1-12位数字
    PDU-type  Protocol Data Unit Type 
协议数据单元类型,1位数字
    MR Message Reference  
由手机设置的短消息递交帧的递交数字(0-255),1位数字
    OA  Originator Address   
发送方地址,即发送的手机号码,2-12位数字
    DA  Destination Address  
接收方地址,即接收的手机号码,2-12位数字
    PID  Protocol Identifier   
协议识别符,1位数字
    DCS  Data Coding Scheme 
数据译码方案,1位数字
    SCTS  Service Center Time Stamp 
服务中心收到短消息的时间,7位数字
    VP  Validity Period 
短消息发送的合法期限,017位数字
    UDL  User Data Length 
用户数据长度,1位数字
    UD  User Data
用户数据,0-140位数字
    RP  Reply Path 
短消息回复的路径
    UDHI  User Data Header Indicator 
用户数据区包含的报头
    SRI  Status Report Indication 
这个参数指明移动设备是否需要状态报告
    SRR  Status Report Request 
这个参数指明移动站是否需要一个状态报告
    VPF  Validity Period Format 
指示VP区是否存在
    MMS  More Message to Send 
指示是否有更多的消息将被发送
    RD  Reject Duplicate 
拒绝重复
    MTI  Message Type  Indicator 
消息类型指示,00-消息接收,01-消息发送


短消息的收发举例
   
TC35的操作均采用AT指令。指令内容均为ASCII码,短消息的中文编码方式为UNICODE码。


一.短消息的发送
    
例如要发送字符宁波大学到手机137668324353167862334F5)中,则首先把字符转换成UNICODE代码,转换软件可以采用Chinese 2 Unicode convertorGBCCovert.exe等,可在互联网中下载。经转换,宁波大学Unicode代码是5B81 6CE2 5927 5B66。则TC35的指令是
    AT+CMGF=0  
设置TC35PDU格式
    AT+CMGS=023  
发送短消息指令,023为本短消息发送字符总长度(可能不包括短信中心部分,本人并未证实)
    0011000D91683167862334F5000801085B816CE259275B66 
这是发送内容
   
代码意义解释如下:
    00  SCA
,以00写入,意味着使用默认的服务中心地址,该服务中心地址用AT+CSCA指令写入
    11  PDU
类型
    00  MR
消息参考
    0D  LEN
接收方号码长度
    91  TYPE  91
表示号码是国际代码,81是国内代码
    683167862334F5  DA
接收方号码8613766832435,注意号码的每个字节是高低位互换的,末尾号码是半字节的话,另外半字节用F替代。
    00  PID
协议识别
    08  DCS
数据编码结构
    01  VP 
短消息有效发送时间,01表示10分钟,具体见参考文献111
    08  UDL 
用户数据长度
    5B816CE259275B66  UD
用户数据,即字符宁波大学
   
如果发送成功,TC35回送以下信息
    +CMGS: X  
这里的X是个数字(短信发送条数)
    OK
    OK
表示发送成功,否则在一段时间的尝试后返回ERROR
注意:
1.
如果发送短消息指令中指明的总长度和实际发送的短消息长度不符的话,TC35将拒绝发送。
    2.
上述指令的代码是十六进制代码,发送到TC35的短消息代码是ASCII码,因此例如上述发送的代码是0011000D91…. 送到TC35代码应该是30 30 31 31 30 30 30 44 39 31
3.
所有传送到TC35的指令必须以ASCII代码0D 0A结尾,表示向TC35传送的一条指令结束。因此在实际发送的操作中应发送的代码如下:
AT+CMGS=023 
发送41 54 2B 43 4D 47 53 3D 30 32 33 0D 0A
    0011000D91….. 
发送30 30 31 31 30 30 30 44 39 31……….0D 0A
   
同样,发送AT+CMGF=0指令的代码是41 54 2B 43 4D 47 46 3D 30 0D 0A


二.短消息的接收
   
例如接收到的短消息代码是
    0891683110300705F0840D91683130643065F7000830101311401300026D4B8BD5
   
我们可这样判读
    08 LEN SCA
字节长度(长度值包括代码类别的字节长度)
    91 type of  Number 
号码类型(国内/国际)
    68 31 10 30 07 05 F0  SCA
服务中心号码是8613010370500(对末尾的半字节空位以F替代)
    84  PDU-type  PDU
类型
    0D  Len
发信方地址长度
    91  PDU-type
协议类别
    683130643065F7 OA
发信方号码是8613034603567(对末尾的半字节空位以F替代)
    00  PID
协议识别
    08  DCS
数据译码方案
    30101311401300 SCTS
信息中心接收到数据的时间是200313111431,时间区为00.
    04  UDL
数据长度为4个字节
    6D4B8BD5  UD
用户数据,Unicode码(字符测试


TC35与微处理器的硬件接口方法
    TC35
与微处理器只要连接好串口的TXDRXD通信线,IGT启动脚,外接SIM卡以及电源即可正常工作。连接方法详见参考文献3
    TC35
的串行口为自适应波特率,范围是1200-115200bps,但是笔者推荐使用9600N1格式。
    TC35
的串行接口电平是0-3.3V,然而我们常用的微处理器接口电平为0-5V,因此必须做电平转换。实践证明,若不做电平转换,则在大批量生产中产品质量不稳定。TC35与微处理器接口连接完成后,建议首先用ATI指令(显示产品识别信息)对串口连接进行测试,该指令返回内容如下:
    SIEMENS
    TC35
    REVISION x.yy 
x.yy是版本号)
注意:ATI指令必须以0D 0A结尾。
   
如果用户对AT指令不甚明了,建议首先采用PC机调试TC35,因为AT指令的细节还是有不少的。连接方法是PC机串口经MAX232等电平转换电路与TC35连接,调试软件采用串口调试助手等软件即可。
    TC35
的供电范围是3.3V-5.5V,电源容量要求2A。在实践中发现,电源容量偏小或电源纹波过大,都会使TC35工作不稳定。
    TC35
的启动是通过拉低IGT100毫秒以上即可。


参考文献
[1] SMS with the SMS PDU-mode  [M/CD]  Siemens  AG Version 1.2
[2] AT Command Set  Siemens cellular engines version 2.10  [S]  Siemens AG  2001

[3] TC35 cellular engines Hardware Interface Description  version 2.10 [S]  Siemens AG  2001

[4]
周嵘,家庭GSM短消息遥控监测装置 [P].中国专利:ZL02217548.2,出版日期2002517


 


 


 


为了方便大家进一步开发和拓展本模块,我为大家附上部分AT指令集


  附:



一、一般命令


AT+CGMI


给出模块厂商的标识。 SONY ERICSSON


AT+CGMM


获得模块标识。这个命令用来得到支持的频带(GSM900DCS1800PCS1900)。当模块有多频带时,回应可能是不同频带的结合。 AAB-1021011-CN


AT+CGMR


获得改订的软件版本。 R6C005      CXC125582<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />CHINA1


AT+CGSN


获得GSM模块的IMEI(国际移动设备标识)序列号。351254004238596


AT+CSCS


选择TE特征设定。这个命令报告TE用的是哪个状态设定上的MEME于是可以转换每一个输入的或显示的字母。这个是用来发送、读取或者撰写短信。


AT+CSCS?
+CSCS: "GSM"


AT+WPCS


设定电话簿状态。这个特殊的命令报告通过TE电话簿所用的状态的MEME于是可以转换每一个输入的或者显示的字符串字母。这个用来读或者写电话簿的入口。


NONE


AT+CIMI


获得IMSI。这命令用来读取或者识别SIM卡的IMSI(国际移动签署者标识)。在读取IMSI之前应该先输入PIN(如果需要PIN的话)。
460001711603161


AT+CCID


获得SIM卡的标识。这个命令使模块读取SIM卡上的EF-CCID文件。


NONE


AT+GCAP


获得能力表。(支持的功能)+GCAP: +FCLASS, +CGSM, +DS


A/


重复上次命令。只有A/命令不能重复。这命令重复前一个执行的命令。


AT+CPOF


关机。这个特殊的命令停止GSM软件堆栈和硬件层。命令AT+CFUN=0的功能与+CPOF相同。


AT+CFUN


设定电话机能。这个命令选择移动站点的机能水平。


AT+CPAS


返回移动设备的活动状态。


AT+CMEE


报告移动设备的错误。这个命令决定允许或不允许用结果码“+CMEERROR:”或者“+CMSERROR:”代替简单的“ERROR”


AT+CKPD


小键盘控制。仿真ME小键盘执行命令。


AT+CCLK


时钟管理。这个命令用来设置或者获得ME真实时钟的当前日期和时间。


AT+CCLK?
+CCLK: "04/08/12,17:00:42+32"


AT+CALA


警报管理。这个命令用来设定在ME中的警报日期/时间。(闹铃)
AT+CALA=?
+CALA: (1-2),(),(),(13),()


AT+CRMP


铃声旋律播放。这个命令在模块的蜂鸣器上播放一段旋律。有两种旋律可用:到来语音、数据或传真呼叫旋律和到来短信声音。


AT+CRSL


设定或获得到来的电话铃声的声音级别。NONE


二、呼叫控制命令



ATD


拨号命令。这个命令用来设置通话、数据或传真呼叫。


ATH


挂机命令。


ATA


接电话。


AT+CEER


扩展错误报告。这个命令给出当上一次通话设置失败后中断通话的原因。


AT+VTD


给用户提供应用GSM网络发送DTMF(双音多频)双音频。这个命令用来定义双音频的长度(默认值是300毫秒)。


AT+VTS


给用户提供应用GSM网络发送DTMF双音频。这个命令允许传送双音频。


ATDL


重拨上次电话号码。


AT%Dn


数据终端就绪(DTR)时自动拨号。


ATS0


自动应答。


AT+CICB


来电信差。


AT+CSNS


单一编号方案。


AT+VGR


AT+VGT


增益控制。这个命令应用于调节喇叭的接收增益和麦克风的传输增益。


AT+CMUT


麦克风静音控制。


AT+SPEAKER


喇叭/麦克风选择。这个特殊命令用来选择喇叭和麦克风。


AT+ECHO


回音取消。


AT+SIDET


侧音修正。


AT+VIP


初始化声音参数。


AT+DUI


用附加的用户信息拨号。


AT+HUI


用附加的用户信息挂机。


AT+RUI


接收附加用户信息。


三、网络服务命令



AT+CSQ


信号质量。+CSQ: 17,99


AT+COPS


服务商选择。
AT+COPS?


+COPS: 0,0,"ChinaMobile"


AT+CREG


网络注册。获得手机的注册状态。


AT+CREG?


+CREG: 0,1


AT+WOPN


读取操作员名字。NONE


AT+CPOL


优先操作员列表。NONE


四、安全命令



AT+CPIN


输入PIN


AT+CPIN2


输入PIN2


AT+CPINC


PIN的剩余的尝试号码。


AT+CLCK


设备锁。


AT+CPWD


改变密码。


五、电话簿命令



AT+CPBS


选择电话簿记忆存储。


AT+CPBS?


+CPBS: "SM"


AT+CPBR


读取电话簿表目。


 


AT+CPBF


查找电话簿表目。


AT+CPBW


写电话簿表目。


AT+CPBP


电话簿电话查询。


AT+CPBN


电话簿移动动作。这个特殊命令使电话簿中的条目前移或后移(按字母顺序)


AT+CNUM


签署者号码。


AT+WAIP


防止在下一次重起时初始化所有的电话簿。


AT+WDCP


删除呼叫电话号码。NONE


AT+CSVM


设置语音邮件号码。


六、短消息命令



AT+CSMS


选择消息服务。支持的服务有GSM-MOSMS-MTSMS-CB


AT+CNMA


新信息确认应答。


AT+CPMS


优先信息存储。这个命令定义用来读写信息的存储区域。


AT+CMGF


优先信息格式。执行格式有TEXT方式和PDU方式。


AT+CSAS


保存设置。保存+CSAS+CSMP的参数。


AT+CRES


恢复设置。


AT+CSDH


显示文本方式的参数。


AT+CNMI


新信息指示。这个命令选择如何从网络上接收短信息。


AT+CMGR


读短信。信息从+CPMS命令设定的存储器读取。


AT+CMGL


列出存储的信息。


AT+CMGS


发送信息。


AT+CMGW


写短信息并存储。


AT+CMSS


从存储器中发送信息。


AT+CSMP


设置文本模式的参数。


AT+CMGD


删除短信息。删除一个或多个短信息。


AT+CSCA


短信服务中心地址。


AT+CSCB


选择单元广播信息类型。


AT+WCBM


单元广播信息标识。


AT+WMSC


信息状态(是否读过、是否发送等等)修正。


AT+WMGO


信息覆盖写入。


AT+WUSS


不改变SMS状态。在执行+CMGR+CMGL后仍保持UNREAD


七、追加服务命令



AT+CCFC


呼叫继续。


AT+CLCK


呼叫禁止。


AT+CPWD


改变追加服务密码。


AT+CCWA


呼叫等待。


AT+CLIR


呼叫线确认限制。


AT+CLIP


呼叫线确认陈述。


AT+COLP


联络线确认陈述。


AT+CAOC


费用报告。


AT+CACM


累计呼叫计量。


AT+CAMM


累计呼叫计量最大值。


AT+CPUC


单价和货币表。


AT+CHLD


呼叫相关的追加服务。


AT+CLCC


列出当前的呼叫。


AT+CSSN


追加服务通知。


AT+CUSD


无组织的追加服务数据。


AT+CCUG


关闭的用户组。


八、数据命令



AT+CBST


信差类型选择。


AT+FCLASS


选择模式。这个命令把模块设置成数据或传真操作的特殊模式。


AT+CR


服务报告控制。这个命令允许更为详细的服务报告。


AT+CRC


划分的结果代码。这个命令在呼叫到来时允许更为详细的铃声指示。


AT+ILRR


本地DTE-DCE速率报告。


AT+CRLP


无线电通信线路协议参数。


AT+DOPT


其他无线电通信线路参数。


AT%C


数据压缩选择。


AT+DS


是否允许V42二度数据压缩。


AT+DR


是否报告V42二度数据压缩。


AT\N


数据纠错选择。


九、传真命令



AT+FTM


传送速率。


AT+FRM


接收速率


AT+FTH


HDLC协议设置传真传送速率。


AT+FRH


HDLC协议设置传真接收速率。


AT+FTS


停止特定时期的传送并等待。


AT+FRS


接收沉默。


十、第二类传真命令



AT+FDT


传送数据。


AT+FDR


接收数据。


AT+FET


传送页标点。


AT+FPTS


页转换状态参数。


AT+FK


终止会议。


AT+FBOR


页转换字节顺序。


AT+FBUF


缓冲大小报告。


AT+FCQ


控制拷贝质量检验。


AT+FCR


控制接收传真的能力。


AT+FDIS


当前会议参数。


AT+FDCC


设置DCE功能参数。


AT+FLID


定义本地ID串。


AT+FPHCTO


页转换超时参数。


十一、V24-V25命令



AT+IPR


确定DTE速率。


AT+ICF


确定DTE-DCE特征结构。


AT+IFC


控制DTE-DCE本地流量。


AT&C


设置DCD(数据携带检测)信号。


AT&D


设置DTR(数据终端就绪)信号。


AT&S


设置DST(数据设置就绪)信号。


ATO


回到联机模式。


ATQ


决定手机是否发送结果代码。


ATV


决定DCE响应格式。


ATZ


恢复为缺省设置。


AT&W


保存设置。


AT&T


自动测试。


ATE


决定是否回显字符。


AT&F


回到出厂时的设定。


AT&V


显示模块设置情况。


ATI


要求确认信息。这命令使GSM模块传送一行或多行特定的信息文字。


AT+WMUX


数据/命令多路复用。


十二、特殊AT命令



AT+CCED


电池环境描述。


AT+CCED


自动RxLev指示。


AT+WIND


一般指示。


AT+ALEA


MEMSC之间的数据密码模式。


AT+CRYPT


数据密码模式。


AT+EXPKEY


键管理。


AT+CPLMN


PLMN上的信息。


AT+ADC


模拟数字转换度量。


AT+CMER


移动设备事件报告。这个命令决定是否允许在键按下时是否主动发送结果代码。


AT+WLPR


读取语言偏好。


AT+WLPW


写语言偏好。


AT+WIOR


读取GPIO值。


AT+WIOW


GPIO值。


AT+WIOM


输入/输出管理。


AT+WAC


忽略命令。这个特殊命令允许忽略SMSSS和可用的PLMN


AT+WTONE


播放旋律。


AT+WDTMF


播放DTMF旋律。


AT+WDWL


下载模式。


AT+WVR


配置信差的声音速率。


AT+WDR


配置数据速率。


AT+WHWV


显示硬件的版本。


AT+WDOP


显示产品的出厂日期。


AT+WSVG


声音增益选择。


AT+WSTR


返回指定状态的状态。


AT+WSCAN


扫描。


AT+WRIM


设置或返回铃声指示模式。


AT+W32K


是否允许32kHz掉电方式。


AT+WCDM


改变缺省旋律。


AT+WSSW


显示内部软件版本。


AT+WCCS


编辑或显示订制性质设置表。


AT+WLCK


允许在特定的操作符上个性化ME


AT+CPHS


设置CPHS命令。


AT+WBCM


电池充电管理。


AT+WFM


特性管理。是否允许模块的某些特性,如带宽模式、SIM卡电压等。


AT+WCFM


商业特性管理。是否允许Wavecom特殊特性。


AT+WMIR


允许从当前存储的参数值创建定制的存储镜像。


AT+WCDP


改变旋律的缺省播放器。


AT+WMBN


设置SIM卡中的不同邮箱号码。


十三、SIM卡工具箱命令



AT+STSF


配置工具箱实用程序。


AT+STIN


工具箱指示。


AT+STGI


获得从SIM卡发来的预期命令的信息。


AT+STCR


主动提供的结果:工具箱控制反应。


AT+STGR


给出响应。允许程序或用户从主菜单上选择项目,或响应某些命令。


 



ASCI码指令


功能


手机回答


AT回车


握手


OK


ATE


简化显示


OK


AT+CLCC


来电显示


OK      来电话时串口输出:RING


AT+CLCC


 


+CLCC: 1,1,4,0,0,"05133082087",129


AT+CNMI=1,1,2


设置收到短消息提示


OK


+CMTI“SM”4


4表示手机内短消息数量


ATD05133082087;


拨打05133082087电话


AT+CMGL=0


读取电话上全部未读过的SMS消息


AT+CMGL=2


列出已有的短信息


AT+CMGL=4


读取全部SMS消息


AT+CMGR=X回车


读取第X条短消息


AT+CMGF=0回车


PDU格式


 


AT+CMGD=X回车


删除第X条短消息


 


 


AT+CLIP=1,1


来电自动显示的指令


ERROR


来电话!


 


RING   +CLIP: 13306285091,129


AT+CMGS=6


发送短消息的字节数



0891683108503105F011000B8131032


65890F10008A90C665A4E0A597D00


3100320033


1A   结束符号


十六进制大写


+CMGS: 45


OK


45条短信发送成功!!!!!!


AT+CMGR=1


读取第1条短信


0:未读过,新的短信息


1:已读过


第二个1表示已读


150 表示PDU数据的长度


1 表示读取第几条短信


+CMGR: 1,1,,150


 



GSM07.05


Function(功能)


ATE0


RESET


AT+CSMS


选择短信息服务


AT+CPMS


选择短信息内存


AT+CMGF


选择短信息格式


AT+CSCA


短信息中心地址


AT+CNMI


显示新收到的短信息


AT+CMGR


读短信息


AT+CMGS


发送短信息


AT+CMGL


列出SIM卡中短信息


AT+CMSS


SIM内存中发短信息


AT+CMGW


SIM内存中写入待发短信息


AT+CMGD


删除SIM内存中的短信息


AT+CSCB


选择蜂窝广播信息


 

PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

用户377235 2012-8-27 16:39

怎么设置短信发送成功是否提示?

用户377235 2012-8-27 16:37

发送短信报告, 怎么设置短信 是否成功?

用户377235 2012-7-12 17:27

此电路不成立,没有实际意义,它去掉了滤波电容,牺牲了直流电的平滑性,是输出电压在输入电压的峰值和1/2峰值之间变化,成了脉动电压。功率因数提高了一点,是得不尝失的,不值得推广。

用户417404 2012-6-14 14:37

高手啊 不是太理解

用户60982 2008-6-18 12:01

不好意思发了这么多,网络有问题。。。

用户60982 2008-6-18 11:59

我用单片机控制Modem,发送AT测试指令,总是无应答,不知是何原因,楼主是否遇到过? PC机控制Modem是有应答的。 方便的话请联系我 QQ:316146169 多谢!

用户110455 2007-7-21 08:47

谢谢
相关推荐阅读
用户1010551 2013-03-23 23:28
圣经故事
圣经故事是生活亚、非、欧三大洲交界处的古代希伯来民族数千年历史长河中集体智慧的结晶,也是犹太教、基督教(包括天主教、东正教和新教)共同的正式经典。它构成了西方社会两千年来的文化传统和特点,并影响到世...
用户1010551 2013-03-22 18:12
评论:@longhaihai's Blog 博客中提到的“【转】开关电源输出纹波的测量和抑制”
很好的文章。...
用户1010551 2013-03-20 23:06
评论:@asus119's Blog 博客中提到的“【博客大赛】电源纹波调试”
很好的文章。...
用户1010551 2013-01-22 20:49
【博客大赛】DIY移动电源!
  移动电源现在市场烂如泥了,不知道大家也没有想自己DIY一个移动电源? 移动电源就是一个简单的DC  BOOOST升压电路。 一个网友的移动电源电路原理图,自动检测USB拔...
用户1010551 2013-01-22 13:41
评论:@wang1jin's Blog 博客中提到的“FM锁相环PLL立体声5W发射机中文全套资料!!!”
bh17无线耳机的制作方案...
用户1010551 2013-01-22 09:28
去做最想做的事 - 黑幼龙
去做最想做的事 - 黑幼龙 欧美有一种说法,那就是,在生命的末期,把你最想做的事写下来,然后一项一项去尝试。想不到的是,很多原来看起来不可能的愿望,后来竟真的奇迹般的实现了。 这种愿...
我要评论
5
8
关闭 站长推荐上一条 /3 下一条