打印

单片机和GSM TC35通信失败,求高手解答,非常感谢!!

[复制链接]
楼主: ewby
手机看帖
扫描二维码
随时随地手机跟帖
21
看了楼主的帖子,让我想起去年我的毕设题目,就是单片机和TC35I模块的连接,幸运的是最后顺利完成了收发短信的功能。
我记得当时我的毕设实施步骤如下:
1.买来的单片机学习板,买来的GSM模块;
2.用串口调试助手完成程序中所用到的所有的AT指令的操作;
3.印象中,然后买了条串**叉线连接GSM与单片机;
4.调程序,最终完成中英文短信收发。

使用特权

评论回复
22
ewby|  楼主 | 2011-5-18 21:39 | 只看该作者
21# fox_brooklyn

21楼的同志啊,我现在就是做的毕业设计。。
其他部分都完成了,就差这个GSM模块了。。。感觉有点崩溃呵呵
我都直接3条线(Rxd Txd GND)连接单片机和GSM的串口。但是就是有问题啊~~~

问个,你原来做的时候,单片机有没有处理识别GSM返回的那些OK,ERROR之类的信号?是怎么处理的呢?

使用特权

评论回复
23
fox_brooklyn| | 2011-5-18 21:44 | 只看该作者
OK之类的信息当然要处理的,否则你怎么知道成功的完成了通信?

使用特权

评论回复
24
ewby|  楼主 | 2011-5-18 21:49 | 只看该作者
23# fox_brooklyn

哦,那个我也是这样做的。。为神马我的就是不行呢……唉~~~

使用特权

评论回复
25
fox_brooklyn| | 2011-5-18 21:54 | 只看该作者
你从单片机就发送一个“AT”指令,GSM模块返回“OK”,这个可以完成吗?

使用特权

评论回复
26
ewby|  楼主 | 2011-5-18 21:56 | 只看该作者
我现在没办法测出来~~
但是我在电脑上手动相应单片机发送的AT指令,或者手动响应GSM模块发送AT指令都是正常的~~

使用特权

评论回复
27
fox_brooklyn| | 2011-5-18 22:04 | 只看该作者
如果两边都正常的话,那就是联调的问题了,联调的时候,我当时用的就是串**叉线,如果简单的AT指令能够成功发送并得到正确响应的话,那后面的问题就好办了。
祝你好运!

使用特权

评论回复
28
ewby|  楼主 | 2011-5-18 22:09 | 只看该作者
27# fox_brooklyn

两边都是正常的,比如:(现在我把单片机和计算机相连调试,我手动模拟GSM)
我输入 5E 53 59 53 53 54 41 52 54 0D 0A                    //^SYSSTART
单片机回:41 54 0D 0A                      //AT
输入 41 54 0D 0D 0A 4F 4B 0D 0A                            //AT OK
单片机回:41 54 45 0D 0A                //ATE
输入 41 54 45 0D 0D 0A 4F 4B 0D 0A                       //ATE OK
单片机回:41 54 2B 43 4E 4D 49 3D 31 2C 31 2C 32 0D 0A //AT+CNMI=1,1,2
输入 0D 0A 2B 43 4D 54 49 3A 20 22 53 4D 22 2C 31 37 0D 0A  //+CMTI: "SM",17 有短信来
单片机回 41 54 2B 43 4D 47 52 3D 31 37 0D 0A 0D 0A                 //AT+CMGR=17
输入 0D 0A 2B 43 4D 47 52 3A 20 30 2C 2C 32 36 0D 0A 30 38 39 31 36 38 33 31 30 38 38 30 38 33 30 35 46 30 30 34 30 44 39 31 36
38 35 31 38 38 34 33 33 34 33 31 46 38 30 30 30 38 31 31 35 30 36 31 30 32 33 34 31 33 32 33 30 36 35 45 37 32 34 45 43 30 34
45 34 38 0D 0A 0D 0A 4F 4B 0D 0A            //某条短信代码
单片机 正确处理并做出相应反应!


反过来也是一样正常的。。但是两边互联后就是不行~~~~

使用特权

评论回复
29
sinanjj| | 2011-5-18 22:21 | 只看该作者
把串口引出两根当示波器看信息流就能找到问题了.












基本的调试通讯的思路都没有....

使用特权

评论回复
30
ewby|  楼主 | 2011-5-18 22:25 | 只看该作者
29# sinanjj

请问是在GSM模块和单片机相连的时候把串口线中间引出到示波器去观察吗?

使用特权

评论回复
31
mohanwei| | 2011-5-18 23:03 | 只看该作者

记得先来一条“ATE0”指令把回显关了

使用特权

评论回复
32
lwslws201| | 2011-5-18 23:17 | 只看该作者
232电平转化问题吧~

使用特权

评论回复
33
zhanv| | 2011-5-18 23:19 | 只看该作者
没解决吗,高手来了:
不知你的单片机供电是几伏,TC35是5V系统,应是两者信号电平不匹配造成的

使用特权

评论回复
34
chunyang| | 2011-5-18 23:26 | 只看该作者
先用PC监视MCU和模块的通讯,然后再看MCU是否能正确回应,注意MCU需要在模块回应完毕后才能发出下一条指令。

使用特权

评论回复
35
原野之狼| | 2011-5-18 23:27 | 只看该作者
楼主给贴个图出来
省得大伙在这费脑筋

使用特权

评论回复
36
ewby|  楼主 | 2011-5-19 00:29 | 只看该作者
有新的进展了,通过按照 chunyang 和 mohanwei两位大大的办法,直接监听两个模块的输出。看到以下信息:
^SYSSTART
AT
AT

OK
ATE
ATE

OK
AT+CNMI=1,1,2

ERROR                          //此处正常情况下应该是一个OK信息。

16进制信息为:00 5E 53 59 53 53 54 41 52 54 0D 0A 41 54 0D 0A 41 54 0D 0D 0A 4F 4B 0D 0A 41 54 45 0D 0A 41 54 45 0D 0D 0A 4F 4B 0D 0A 41 54 2B 43 4E 4D 49 3D 31 2C 31 2C 32 0D 0A 0D 0A 45 52 52 4F 52 0D 0A

使用特权

评论回复
37
ewby|  楼主 | 2011-5-19 00:34 | 只看该作者
unsigned char CNMI_cmd[]={"AT+CNMI=1,1,2\r\n"};                    //设置收到短消息提示

uartPutStr(ATE_cmd);                                                                                //发送简化显示要求信号
         while(!isOK)
         {
                  if(ReceiveBuffer[count-1]=='\n' &&
                     ReceiveBuffer[count-2]=='\r' &&
                     ReceiveBuffer[count-3]=='K' &&
                     ReceiveBuffer[count-4]=='O' )       
                {
                        isOK=1;               
                        count=0;
                         memset(ReceiveBuffer,'\0',512);
                }
         }
         
         isOK=0;
       
上面哪些是我AT+CNMI=1,1,2这个命令的代码,貌似没什么错把~。。

使用特权

评论回复
38
chunyang| | 2011-5-19 00:52 | 只看该作者
不要说“貌似”,仔细去看AT指令集手册。

使用特权

评论回复
39
ewby|  楼主 | 2011-5-19 00:55 | 只看该作者
38# chunyang

抱歉,我不严谨了。。
AT+CNMI=1,1,2/n/r
这个指令能够使TC35在收到短信时候发出“短信来”通知信号的。指令没有错
我之前也在电脑上使用过这个指令发给TC35过~都没问题的

使用特权

评论回复
40
chunyang| | 2011-5-19 01:28 | 只看该作者
想想人工操作和机器操作有什么差别……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则