一、 TC35的控制簡(jiǎn)介
TC35是Siemeils公司推出的新-代無(wú)線通信GSM模塊。自帶RS232通訊接口,可以方便地與PC機(jī)、單片機(jī)連機(jī)通訊。可以快速、安全、可靠地實(shí)現(xiàn)系統(tǒng)方案中的數(shù)據(jù)、語(yǔ)音傳輸、短消息服務(wù)(Short Message Service)和傳真。TC35模塊的工作電壓為3.3—5.5V,可以工作在900MHz和1800MHz兩個(gè)頻段,所在頻段功耗分別為2w(900M)和1w(1800M)。
模塊有AT命令集接口,支持文本和PDU模式的短消息、第三組的二類(lèi)傳真、以及2.4k,4.8k,9.6k的非透明模式。此外,該模塊還具有電話簿功能、多方通話,漫游檢測(cè)功能,常用工作模式有省電模式、IDLE、TALK等模式。通過(guò)獨(dú)特的40引腳的ZIF連接器,實(shí)現(xiàn)電源連接、指令、數(shù)據(jù)、語(yǔ)音信號(hào)、及控制信號(hào)的雙向傳輸。通過(guò)ZIF連接器及50Ω天線連接器,可分別連接SIM卡支架和天線。
TC35模塊主要由GSM基帶處理器、GSM射頻模塊、供電模塊(ASIC)、閃存、ZIF連接器、天線接口六部分組成。作為T(mén)C35的核心,基帶處理器主要處理GSM終端內(nèi)的語(yǔ)音、數(shù)據(jù)信號(hào),并涵蓋了蜂窩射頻設(shè)備中的所有的模擬和數(shù)字功能。在不需要額外硬件電路的前提下,可支持FR、HR和EFR語(yǔ)音信道編碼。其它功能介紹可參見(jiàn)有關(guān)資料!
本文引用地址:
http://m.butianyuan.cn/article/201611/320309.htm二、AT指令的介紹
TC35模塊的通訊全部采用AT+xxx完成?;镜腁T指令見(jiàn)上篇。
三、 TC35的連機(jī)方法
任何一個(gè)TC35模塊首次使用時(shí),必須要測(cè)試其工作是否正常,由于其自帶RS232接口,所以我們可以用PC機(jī)的串口調(diào)試軟件進(jìn)行調(diào)試。
1、啟動(dòng)串口調(diào)試軟件(見(jiàn)界面)
串口調(diào)試軟件有許多,可以使用任意一款軟件,也可以使用WINDOWS自帶的“超級(jí)終端"。設(shè)置波特率19.2k,這是TC35的默認(rèn)波特率,首次連機(jī)可以從2400~57.6k不斷測(cè)試,直到TC35有應(yīng)答。
2、發(fā)送“AT"’
AT 回車(chē)
3、改變波特率“AT+IPS=XXXX"
TC35的默認(rèn)波特率是19.2k,實(shí)際使用時(shí),可以改成9600或38.4K,方法如下:
AT+IPR=9600 回車(chē)
4、短信模式的設(shè)置
(GSM模塊的短信模式有2種。第1種是:TEXT模式;第2種是:PDU模式。PDU模式可以采用unicode編碼發(fā)送英文、漢字。但合成PDU碼比較復(fù)雜,而TEXT模式只能發(fā)送英文,但無(wú)須編碼。實(shí)際使用可以采用TEXT模式。
設(shè)置如下:
AT+CMFG=1 回車(chē)
5、短信模式簡(jiǎn)介
SMS是由Etsi所制定的一個(gè)規(guī)范(GSM 03.40和GSM 03.38)。當(dāng)使用7-bits編碼的時(shí)候它可以發(fā)送最多160個(gè)字符;8-bit編碼(最多140個(gè)字符)。通常無(wú)法直接通過(guò)手機(jī)顯示;通常被用來(lái)作為數(shù)據(jù)消息,例如:smart messaging中的圖片和鈴聲和OTA WAP設(shè)置。16-bit信息(最多70個(gè)字符)被用來(lái)顯示Unicode(UCS2)文本信息,可以被大多數(shù)的手機(jī)所顯示。一個(gè)以class 0開(kāi)頭的16-bit的文本信息將在某些手機(jī)上作為Flash SMS顯示(閃爍的SMS和警告SMS)。
有兩種方式來(lái)發(fā)送和接收SMS信息:使用文本模式或者使用PDU(protocol description unit)模式。文本模式(可能某些手機(jī)不支持)實(shí)際上也是一種PDU編碼的一種表現(xiàn)形式。在顯示SMS信息,可能使用不同的字符集和不同的編碼方式。
6、短信讀取方法
AT+CMGR=X回車(chē)
如果有短信息,TC35回應(yīng):
AT+CMGR=1
+CMGR:"REC UNREAD","13307496548",,"04/08/17,22:24:32+02
testOK
OK
短信息分析:
“test OK"就是短信息內(nèi)容。
短信息的存儲(chǔ)容量與Ic卡有關(guān),序號(hào)從1-N。
REC UNREAD":代表短信息未讀過(guò)。
REC READ" :已讀過(guò)。
13307496548" :接收的手機(jī)號(hào)碼。
04/08/17,22:24:32+02":短信息發(fā)送的時(shí)間。
無(wú)短信息,TC35回應(yīng):
AT+CMGR=3
+CMGR:0,,0
7、短信的刪除方法
AT+CMGD=1回車(chē)
8、短信的發(fā)送方法
短信息的發(fā)送分成兩步:
1:發(fā)送接收的手機(jī)號(hào)碼,等待應(yīng)答:“>"
AT+CMGS="13307496548"回車(chē)(目的地址)
TC35回應(yīng):
AT+CMGS="13307496548" >
2: 輸入短信息的內(nèi)容(只能是英文):Test 回車(chē)
四、單片機(jī)控制TC35的方法
上面介紹了用PC機(jī)控制TC35的方法,我們只需將PC機(jī)輸出的控制命令轉(zhuǎn)化成單片機(jī)輸出的指令即可。
1、硬件連接
電路見(jiàn)下圖只需設(shè)計(jì)一個(gè)TTL轉(zhuǎn)RS232電平電路,連接到MCU的UART口,另一端直接連接到TC35。
2、指令輸出的方法
單片機(jī)串口設(shè)置成模式1(9600,N,8,1),依次將AT+xxx以ASCII碼形式輸出到UART口;接收TC35的數(shù)據(jù)采用中斷方式。這里給出詳細(xì)的程序清單(Keil C51),不介紹編程的方法。程序見(jiàn)下:
//AT指令的定義
char code AT_Tc35[]="AT+"; //連機(jī)
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="; //發(fā)送信息
char code Creg_Tc35[]="CREG?"; //注冊(cè)
//模式設(shè)置
void UART_Init(void)
{
SCON=0x50; //01010000b=>1模式scon,#11011000b;
ES=l;
}
//發(fā)送-個(gè)ASCII
void SendASC(unsigned char ASC)
{
bit es;
es=ES;
ES=0;//關(guān)閉中斷
TI=0;
SBUF=ASC;
while(!TI);
TI=0;
ES=es;
)
//發(fā)送命令到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;
} //數(shù)據(jù)處理
}
}
// 發(fā)送AT連機(jī)命令
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);
/|
p=strstr(RsBuf,ERROR);
if(P!=NULL)
{
Send_AT();return 0;
p=strstr(RsBuf,Ask_No);//無(wú)信息
if(p!=NULL)return 0;
p=strstr(RsBuf,Ask_Tc35);//20個(gè)字節(jié)后是MSG
if(p==NULL) return 0;
p=p+21;
for(i=0;i{
Buf[i]=*p++;
}
if(EraseMsg(index)==0) return 0;
p=strcpy(RsBuf,Buf); //放回RsBuf
return 1;
)
//發(fā)送短信息
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;
}
}
}
評(píng)論