OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9764|回复: 6

32通过发送AT指令控制ESP8266,出现的奇葩问题,真心找不到问题,请进来一看

[复制链接]

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
发表于 2016-10-9 22:07:34 | 显示全部楼层 |阅读模式
10金钱
声明下,不是伸手党,弄了好几天。
先说下背景,用原子学习版上的WIFI做STA模式下的TCP服务器,用另一个32c8t6最小系统连接wifi,作为客户端。
最开始调试时,两块wifi,调通。(即,wifi模块通过串口和电脑连接,电脑用串口助手,一步一步调通,两个模块间可以通讯)
参考串口助手调试过程,编写客户端的程序。如下。昨天进行时,学习版上提示,连接成功,就去休息了。

今天再来调试发现,有时候程序卡在连接网络,有时候学习版上也会提示连接成功。

刚才在调试中发现,第二部重启的调试信息出现后,花费4分钟,第三部的调试信息才出来。
当我用串口时候,可以说立即有反馈信息。

有时候按复位,第三 部分的调试信息出现,同时服务器端的液晶屏上,也会提示连接成功(过一会就又提示连接失败了),但是客户端第四 部分的调试信息不出来呀。
弄得我不知道到底是连接还是没有连接。
真的是没有思路了,恳求给思路

//第一:设置模块 WIFI 模式;可以为 1——STA或者3——STA+AP 模式
         while(ESP_8266_send_cmd("AT+CWMODE=3","OK",20));                     
         delay_ms(10);
//第二:模块重启生效
         while(ESP_8266_send_cmd("AT+RST","OK",20));                          
         delay_ms(10);
          LCD_Pos_String(4,2,"15"); //这个事我用来进行调试用的,最常见的就是重启成功,卡在连接网络这里
//第三:设置模块AP参数 。AT+CWJAP="north-2-201","xuzhuanglin121"
        sprintf((char*)p,"AT+CWJAP=\"north-2-201\",\"xuzhuanglin121\"");       
         while(ESP_8266_send_cmd(p,"OK",20));                                 
         delay_ms(10);
          LCD_Pos_String(0,2,"65"); //这个调试信息 很少出现
//第四:建立 TCP 连接到” 192.168.1.116”,8086
         sprintf((char*)q,"AT+CIPSTART=\"TCP\",\"192.168.1.116\",8086");
        while(ESP_8266_send_cmd(q,"OK",20));                                 
         delay_ms(10);
         LCD_Pos_String(0,3,"连接TCP 成功");
         //开启单链接,我用串口助手进行调试时,这个单链接未开启,也能传输数据
//         while(ESP_8266_send_cmd("AT+CIPMUX=0","OK",20));                     
//         delay_ms(10);       
         
//开启透射模式(仅单链接有效)
         while(ESP_8266_send_cmd("AT+CIPMOD=1","OK",20));                     
         delay_ms(10);
        while(ESP_8266_consta_check())
        {
              LCD_Pos_String(0,3,"连接TCP 失败"); //连接失败                                delay_ms(20);       
         }       
         LCD_Pos_String(2,3,"连接TCP 成功"); //连接失败


最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-10-9 22:07:35 | 显示全部楼层
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-10-9 23:25:58 | 显示全部楼层
我把while 取消  ,串口连接电脑,发现,AT指令时对的呀。AT+CWMODE=3 AT+RST AT+CWJAP="north-2-201","xuzhuanglin121" AT+CIPSTART="TCP","192.168.1.116",8086 AT+CIPMOD=1
回复

使用道具 举报

47

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2016-1-2
在线时间
80 小时
 楼主| 发表于 2016-10-9 23:27:03 | 显示全部楼层
AT+CWMODE=3
AT+RST AT+CWJAP="north-2-201","xuzhuanglin121"
AT+CIPSTART="TCP","192.168.1.116",8086
AT+CIPMOD=1
和我用串口助手直接测试的指令是一致的。底层驱动的函数是移植原子哥的教程
回复

使用道具 举报

2

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2017-5-24
在线时间
52 小时
发表于 2017-7-14 17:04:44 | 显示全部楼层
楼主,你好。我最近在弄ESP8266模块,也在做STA,不过我发现我和你的问题有些不一样,我现在已经找到我问题的关键,我先说明下我的问题:
我在配置TCP服务器发现服务器的IP地址没有获取,我通过串口调试助手调试,发现有一条AT指令应答失败
                if(atk_8266_send_cmd("AT+CIFSR","OK",100))//获取WAN IP地址失败
                {
                        ipbuf[0]=0;
                        printf("error!\r\n");
                        return;
                }               
我个人认为是AT指令的问题,串口打印了error!,可是最费劲的现象是,我有J-LINK烧进去的程序,第一次运行能够获取网络IP,重新运行就基本上会失败,希望得到您的指导
汝资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

2

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2017-5-24
在线时间
52 小时
发表于 2017-7-14 17:06:38 | 显示全部楼层
这是现象
FC70E7D64A90918B8AA5F3D4675ADA39.jpg
回复

使用道具 举报

7

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2013-3-2
在线时间
67 小时
发表于 2017-9-7 11:09:01 | 显示全部楼层
这个问题估计跟延时有关系
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表