OpenEdv-开源电子网

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

esp8266 wifi模块CIPSEND发送问题,返回no tail;

[复制链接]

10

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2017-1-20
在线时间
51 小时
发表于 2017-7-12 11:51:39 | 显示全部楼层 |阅读模式
5金钱
问题介绍:最近在做一个wifi通信的项目,用到了esp8266的模组,GMR版本信息如下;
L:9 D:AT+GMR
L:43 D:AT version:0.60.0.0(Jan 29 2016 15:10:17)
L:29 D:SDK version:1.5.2(7eee54f4)
L:32 D:Ai-Thinker Technology Co. Ltd.
L:22 D:May  5 2016 17:30:30

其中,esp8266用作AP,TCPserver;电脑/手机连接到esp8266,TCPclient;
但是发现在1hz的通信频率下,电脑/手机给esp8266 AP 发送数据时,会出现模块返回:no tail 以及ERROR的提示,如下;
AT+CIPSEND=0,40
L:3 D:
L:9 D:no tail
L:7 D:ERROR

先介绍下我的esp8266的通信;

L:28 D:+IPD,0,12,192.168.4.2,56584:    ----- 1:模块收到一段数据;
AT+CIPSEND=0,39                              ----- 2:针对这一段数据解析后,我要发送一个39 byte的数据;写AT+CIPSEND 指令;
L:18 D:AT+CIPSEND=0,39                   ------ 3:模块回显设置的指令;
L:4 D:OK                                            ------ 4:模块返回OK;
%F1P,0,0:0,2.560950,5.464681,0.000000   ----- 5:收到 > 符号后,发送的数据;
L:4 D:>                                              ------ 6:之后打印 > 符号;
L:15 D:Recv 39 bytes                          ------ 7:模块返回 接收 39 bytes;
L:9 D:SEND OK                                   ------ 8:模块返回SEND OK;

正常流程如上;其中红色为发送蓝色为接收
可是,当我以1hz的频率通过电脑/手机 给esp8266发送时会出现如下提示,对比上面正常流程;没有模块回显;或者是回显错误
L:28 D:+IPD,0,12,192.168.4.2,56584:
AT+CIPSEND=0,39
L:9 D:no tail
L:7 D:ERROR

或者
L:28 D:+IPD,0,12,192.168.4.2,56584:
AT+CIPSEND=0,39
L:18 D:AT+CIPSEND=0,?9
L:9 D:no tail
L:7 D:ERROR


请问不知道大家是否了解这个no tail的错误?是esp8266的AT估计本身问题么?还是1hz过于频繁?

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

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2017-7-12 14:19:03 | 显示全部楼层
1hz?波特率是多少?是不是数据误码了,模块解析错误?
回复

使用道具 举报

10

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2017-1-20
在线时间
51 小时
 楼主| 发表于 2017-7-12 17:16:24 | 显示全部楼层
BMN李 发表于 2017-7-12 14:19
1hz?波特率是多少?是不是数据误码了,模块解析错误?

arm 给esp8266 发送数据是间隔1s一次,所以是1hz;
esp8266的传输波特率是115200;
我将数据发送到另外一个debug串口中,显示数据正常;
比较怀疑2点;
1 arm到esp8266的uart线路存在干扰,导致esp8266接收到的数据异常;
2 esp8266本身固件处理的出现了问题;
不过以上2点还不知道如何确认;
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2017-7-12 17:19:43 | 显示全部楼层
tt朝花夕拾 发表于 2017-7-12 17:16
arm 给esp8266 发送数据是间隔1s一次,所以是1hz;
esp8266的传输波特率是115200;
我将数据发送到另外 ...

AT+CIPSEND=0,?9

看这里,问号都来了。
回复

使用道具 举报

10

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2017-1-20
在线时间
51 小时
 楼主| 发表于 2017-7-13 17:28:19 | 显示全部楼层
BMN李 发表于 2017-7-12 17:19
AT+CIPSEND=0,?9

看这里,问号都来了。

是啊,所以我就像确认这2个部分;
1 arm到esp8266的uart线路存在干扰,导致esp8266接收到的数据异常;
2 esp8266本身固件处理的出现了问题;
因为我给esp8266发送的同时,我也将发送的数据发送到了debug串口如下;
AT+CIPSEND=0,39     ------ 同时打印给debug串口的数据,是正常显示的,说明数据本身没有问题;
L:18 D:AT+CIPSEND=0,?9    ----- 而esp8266回显显示的已经错误;
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-8-3
在线时间
4 小时
发表于 2017-8-3 15:01:50 | 显示全部楼层
楼主,我现在也遇到no tail的问题,和你一摸一样,请问你解决了吗,了可以交流下,qq:1021748709
回复

使用道具 举报

10

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2017-1-20
在线时间
51 小时
 楼主| 发表于 2017-8-4 11:19:16 | 显示全部楼层
小xiao小 发表于 2017-8-3 15:01
楼主,我现在也遇到no tail的问题,和你一摸一样,请问你解决了吗,了可以交流下,qq:1021748709

no tail 可能是你的硬件设计的信号质量问题;
我目前的修改方法是,当出现异常,error/no tail的时候,重新retry发送;
你出现问题的时候,重新再次发送会好么?
根本的问题,现在还无从解决;
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-8-3
在线时间
4 小时
发表于 2017-8-5 11:03:26 | 显示全部楼层
tt朝花夕拾 发表于 2017-8-4 11:19
no tail 可能是你的硬件设计的信号质量问题;
我目前的修改方法是,当出现异常,error/no tail的时候, ...

我的是一只循环发送都没用,一直no tail
AT+CIPSEND=0,1

no tail

ERROR
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-8-3
在线时间
4 小时
发表于 2017-8-5 11:04:08 | 显示全部楼层
tt朝花夕拾 发表于 2017-8-4 11:19
no tail 可能是你的硬件设计的信号质量问题;
我目前的修改方法是,当出现异常,error/no tail的时候, ...

你重新发乐意发出去吗?
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-8-3
在线时间
4 小时
发表于 2017-8-6 10:37:39 | 显示全部楼层
我发现在RST的时候会返回tail有关的信息,我的模块现在不能软件RST,我觉得很有可能是这个原因
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-8-6 20:33:28 | 显示全部楼层
帮顶
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-8-3
在线时间
4 小时
发表于 2017-8-7 08:45:52 | 显示全部楼层

谢谢,原子哥有想法吗
回复

使用道具 举报

10

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2017-1-20
在线时间
51 小时
 楼主| 发表于 2017-8-7 09:16:01 | 显示全部楼层
小xiao小 发表于 2017-8-5 11:04
你重新发乐意发出去吗?

我的是重新发送可以发出去的;
你会不会是reset没有注意到时序?
建议每次reset后,都用AT这个指令试下模块是否返回ok后,再发送;
回复

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-8-7 10:02:29 | 显示全部楼层
IPD头没加
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-8-3
在线时间
4 小时
发表于 2017-8-7 15:45:58 | 显示全部楼层

IPD头?能详细点吗
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-8-3
在线时间
4 小时
发表于 2017-8-7 15:49:03 | 显示全部楼层
tt朝花夕拾 发表于 2017-8-7 09:16
我的是重新发送可以发出去的;
你会不会是reset没有注意到时序?
建议每次reset后,都用AT这个指令试下 ...

我好像把固件烧烂了,现在RST报错,但是其他指令都好用
回复

使用道具 举报

10

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2017-1-20
在线时间
51 小时
 楼主| 发表于 2017-8-7 17:21:40 | 显示全部楼层

no tail 应该是没有结尾吧?我之前的理解都是数据没有发送完整;导致的no tail;
至于你说的IPD是?
回复

使用道具 举报

10

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2017-1-20
在线时间
51 小时
 楼主| 发表于 2017-8-7 17:23:07 | 显示全部楼层
小xiao小 发表于 2017-8-7 15:49
我好像把固件烧烂了,现在RST报错,但是其他指令都好用

模块在上电复位后,会有一段log输出,类似xxxx ready 等;
你现在这些有么?
另外,还是试下发送"AT\r\n" 这句,看下有没有OK返回;保证模块基础运行正常啊;
之后再调试send 等;
回复

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-8-8 10:22:58 | 显示全部楼层
tt朝花夕拾 发表于 2017-8-7 17:21
no tail 应该是没有结尾吧?我之前的理解都是数据没有发送完整;导致的no tail;
至于你说的IPD是?

既然你都哦知道没有结尾 那加上
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2017-8-3
在线时间
4 小时
发表于 2017-8-8 17:19:15 | 显示全部楼层
Sun_Fly 发表于 2017-8-8 10:22
既然你都哦知道没有结尾 那加上

                Usart_SendString(DEBUG_USART,"AT+CIPSEND=1,1");
                Usart_SendHalfWord(DEBUG_USART, 0x0d);
                Usart_SendHalfWord(DEBUG_USART, 0x0a);
                Delay_ms(200);               
               Usart_SendByte(DEBUG_USART, '1');
               Usart_SendHalfWord(DEBUG_USART, 0x0d);
                Usart_SendHalfWord(DEBUG_USART, 0x0a);
加了回车也是no tail啊
回复

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-8-9 09:24:35 | 显示全部楼层
直接用pritf("AT\r\n");
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2017-8-31
在线时间
1 小时
发表于 2017-8-31 13:54:34 来自手机 | 显示全部楼层
我也遇到了这个问题,你们是怎么产生这个error的?你们的问题解决了吗
回复

使用道具 举报

10

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
319
金钱
319
注册时间
2017-1-20
在线时间
51 小时
 楼主| 发表于 2017-9-4 09:59:42 | 显示全部楼层
supercainiao 发表于 2017-8-31 13:54
我也遇到了这个问题,你们是怎么产生这个error的?你们的问题解决了吗

没有解决;目前就只能按照错误重新发送的机制去进行了;
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-8-17
在线时间
0 小时
发表于 2019-8-26 22:41:02 来自手机 | 显示全部楼层
我也遇到了这样的问题,返回的no tail,指的是没有结尾的意思。给esp866发送的每一条at指令(注意我说的是指令,不是消息)必须要以回车结尾,你在给模块发送发送消息的指令的时候,这也是发送了一条指令,必须要以回车结尾,确认可以发送了之后再把发送的消息发过去,这时候发送的不是指令,所有的字符都看做要发送的数据。一般情况下如果你发送了一条没有以回车结尾的消息,模块会把它当成单纯的数据,不去处理,但是send指令有格式,而且模块自身也要做出反馈来进行下一步操作,所以你没有以回车结尾他也当成了一条指令,只不过不符合规则,没有规范的结尾,然后就报错了。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2020-3-15
在线时间
1 小时
发表于 2020-8-15 21:00:50 | 显示全部楼层
楼主,把你的AT+CIPSEND=0,39,改为AT+CIPSEND=39,就好了,资料上已经说的很清楚了,如果是单连接就不需要写前面的ID号,单连接是由AT+CIPMUX和AT+CIPMODE决定的
入门一般都是用单连接,

我就是遇到了这样的问题,然后按上面的方法改好的!希望能对在学ESP8266的人有所帮助!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 11:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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