OpenEdv-开源电子网

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

ESP8266 TCP透传通过STM32串口空闲中断DMA接收数据数据丢失问题求助

[复制链接]

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-2-8
在线时间
35 小时
发表于 2018-1-18 17:17:18 | 显示全部楼层 |阅读模式
5金钱
标题有点绕额,情况是这样子的。用的STM32串口空闲中断的方式通过DMA连ESP8266,之前一直用都比较正常,就是最近在做Wifi更新程序的时候用TCP透传发BIN文件(测试用文件9k)过来,发现有时候接收的数据丢包了。
于是自己找原因,调波特率,发现波特率9600的时候就不会有问题,波特率115200多发几次就可以成功,但波特率到了256000就怎么都成功不了了。

检查数据收不全的时候接收到的数据长度,是1460,正好是一个TCP包的长度。

于是我猜测,由于BIN文件太大,拆分了多个TCP包,而网络原因,第一个包发完后第二个包还没有到,DMA已经完成了8266到32之间的数据传输进入了空闲中断,于是后面的包就没了。波特率低的时候传得慢,网络中第二个包来了这边还没空闲因此不会有问题。

百度说加上硬件流控能解决,但我对此不太了解,感觉不是这个原因。而且串口硬件流控没理解错是要多接两个口,目前硬件上暂时测试不了。

因此请教大神,问题是否如我的猜测,是否有解决办法?不调低波特率情况下,一次把整个文件收完再进入中断。

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

使用道具 举报

18

主题

453

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2014
金钱
2014
注册时间
2016-12-27
在线时间
136 小时
发表于 2018-1-18 20:47:34 | 显示全部楼层
本帖最后由 anylinkin 于 2018-1-18 21:15 编辑

1、在网络阻塞不太严重,以及信号不太弱的前提下,TCP不会出现丢包,如果出现了丢包,多从更上层的处理查找原因,包括单片机程序的处理、模块本身的处理BUG。
2、如果你想做较高速度的不丢包传输,可以参看一下这个模块,使用SPI做主机接口,透传速度可以上兆字节每秒。
     在普通办公室环境下实测,在兆字节每秒的速度下,连续传输2个多小时,一个字节都不丢也不多。

    更多详情,请参看  https://item.taobao.com/item.htm?id=550946928238

   集成很简单,占用单片机资源也很少    供参考


回复

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-2-8
在线时间
35 小时
 楼主| 发表于 2018-1-18 21:24:08 | 显示全部楼层
自己顶一下
回复

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-2-8
在线时间
35 小时
 楼主| 发表于 2018-1-19 10:09:25 | 显示全部楼层
话说楼上打广告不走心啊
回复

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-2-8
在线时间
35 小时
 楼主| 发表于 2018-1-19 11:06:23 | 显示全部楼层
说白了是DMA接收程序的优化问题吧
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-3-5
在线时间
4 小时
发表于 2019-2-22 14:17:48 | 显示全部楼层
Connor 发表于 2018-1-19 11:06
说白了是DMA接收程序的优化问题吧

哥们,你的问题解决了没?我现在也发现了这个问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 03:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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