OpenEdv-开源电子网

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

ESP8266 AT透传模式下,发送文件或大量数据会出现间隔性丢包、乱码现象。怎么解决,感觉是固件问题

[复制链接]

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2018-1-22
在线时间
7 小时
发表于 2018-10-29 15:26:06 | 显示全部楼层 |阅读模式
10金钱

如图,左:源文件  右 通过ESP8266接收的文件 QQ截图20181029151349.png

这种现象是间隔1800多个字节,规律出现

QQ截图20181029151812.png

而且,出现乱码的地方,还有依稀找得到一些AT命令
QQ截图20181029151938.png

注:数据丢失发生在乱码的地方。。

测试数据.zip (83.07 KB, 下载次数: 39)

最佳答案

查看完整内容[请看2#楼]

想稳定,必须加协议!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-10-29 15:26:07 | 显示全部楼层
清风徐徐 发表于 2018-10-29 15:30
@正点原子 原子哥,可以帮忙分析下么。。尝试了很多方法。(测试过程是使用电脑串口工具测试的,已排除串口 ...

想稳定,必须加协议!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2018-1-22
在线时间
7 小时
 楼主| 发表于 2018-10-29 15:30:03 | 显示全部楼层
@正点原子 原子哥,可以帮忙分析下么。。尝试了很多方法。(测试过程是使用电脑串口工具测试的,已排除串口调试工具及Usb转串口的问题)
回复

使用道具 举报

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2018-1-22
在线时间
7 小时
 楼主| 发表于 2018-11-1 15:08:48 | 显示全部楼层
正点原子 发表于 2018-10-30 01:36
想稳定,必须加协议!!

恩,不过透传模式下,数据乱码且丢包,这个不应该是模块本身的问题吗?原子能不能考虑从固件层帮忙解决一下。。
而且,我这几天尝试了在STM32上做协议传输,这次不是基于透传,而是基于AT指令控制。将文件分成多个1024字节的帧,测试还是发现,连续发几个帧之后,就会出现大量触发协议重传的现象,导致传输速率特别低,估计了一下,应该不到30kbyte/s。分析后发现模块来不及执行下一个AT+SEND指令,而导致数据包出错。。。
回复

使用道具 举报

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2018-1-22
在线时间
7 小时
 楼主| 发表于 2018-11-1 15:08:57 | 显示全部楼层
正点原子 发表于 2018-10-30 01:36
想稳定,必须加协议!!

恩,不过透传模式下,数据乱码且丢包,这个不应该是模块本身的问题吗?原子能不能考虑从固件层帮忙解决一下。。
而且,我这几天尝试了在STM32上做协议传输,这次不是基于透传,而是基于AT指令控制。将文件分成多个1024字节的帧,测试还是发现,连续发几个帧之后,就会出现大量触发协议重传的现象,导致传输速率特别低,估计了一下,应该不到30kbyte/s。分析后发现模块来不及执行下一个AT+SEND指令,而导致数据包出错。。。
回复

使用道具 举报

1

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2018-1-22
在线时间
7 小时
 楼主| 发表于 2018-11-1 15:11:46 | 显示全部楼层
不过,谢谢原子哥百忙之中能够回复。。。
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-3-13
在线时间
9 小时
发表于 2020-3-19 20:05:37 | 显示全部楼层
哎,电源问题,要外接电源,chpd要10k电阻上拉3.3v,还有你那串口出现at命令是因为模块工作不正常导致将未处理的数据存到了串口缓冲区,说白了就是CIPSEND没有正常接收满你的发送长度的字节导致的第一次没发送出去,第二次直到他读满了数据长度才会把缓冲区的数据发送出去,这也就是为什么你数据里面有AT指令了
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-3-13
在线时间
9 小时
发表于 2020-3-19 20:36:14 | 显示全部楼层
解决办法很简单,一劳永逸的办法是直接按照我刚才说的配置电源,电源按照要求配置好了模块就能正常工作,如果手头没有能力配置电源,,你就通过软件去修改发送方式,刚才我说了第一次CIPSEND数据会发送失败并且数据会缓存到缓冲区,第二次达到你给定的发送长度了,他就会把缓冲区数据(第一次发送失败的数据)发送出去,并且本次你发送的数据也会和第一次一样发送失败并且保存到缓冲区,只要清理掉缓冲区数据即可,然后就是接收乱码的问题,十分简单,若确保模块收发无误,则乱码是在串口传输时产生的,而并非网络传输产生的乱码,此时就把波特率改低点就好了
回复

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2018-6-5
在线时间
22 小时
发表于 2021-7-21 16:22:12 | 显示全部楼层
您好,文件是怎么通过串口发送的,是f_read读到buf后发送的吗
回复

使用道具 举报

7

主题

82

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1248
金钱
1248
注册时间
2018-6-13
在线时间
139 小时
发表于 2021-7-27 12:58:27 | 显示全部楼层
稳定性是关键,必要时候可以牺牲传输效率。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 09:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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