完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
标题有点绕额,情况是这样子的。用的STM32串口空闲中断的方式通过DMA连ESP8266,之前一直用都比较正常,就是最近在做Wifi更新程序的时候用TCP透传发BIN文件(测试用文件9k)过来,发现有时候接收的数据丢包了。
于是自己找原因,调波特率,发现波特率9600的时候就不会有问题,波特率115200多发几次就可以成功,但波特率到了256000就怎么都成功不了了。 检查数据收不全的时候接收到的数据长度,是1460,正好是一个TCP包的长度。 于是我猜测,由于BIN文件太大,拆分了多个TCP包,而网络原因,第一个包发完后第二个包还没有到,DMA已经完成了8266到32之间的数据传输进入了空闲中断,于是后面的包就没了。波特率低的时候传得慢,网络中第二个包来了这边还没空闲因此不会有问题。 百度说加上硬件流控能解决,但我对此不太了解,感觉不是这个原因。而且串口硬件流控没理解错是要多接两个口,目前硬件上暂时测试不了。 因此请教大神,问题是否如我的猜测,是否有解决办法?不调低波特率情况下,一次把整个文件收完再进入中断。 |
|
相关推荐
4个回答
|
|
1、在网络阻塞不太严重,以及信号不太弱的前提下,TCP不会出现丢包,如果出现了丢包,多从更上层的处理查找原因,包括单片机程序的处理、模块本身的处理BUG。
2、如果你想做较高速度的不丢包传输,可以参看一下这个模块,使用SPI做主机接口,透传速度可以上兆字节每秒。 在普通办公室环境下实测,在兆字节每秒的速度下,连续传输2个多小时,一个字节都不丢也不多。 更多详情,请参看 https://item.taobao.com/item.htm?id=550946928238 集成很简单,占用单片机资源也很少 供参考 |
|
|
|
自己顶一下
|
|
|
|
话说楼上打广告不走心啊
|
|
|
|
说白了是DMA接收程序的优化问题吧
|
|
|
|
只有小组成员才能发言,加入小组>>
7344 浏览 9 评论
2433 浏览 2 评论
为什么我用esp8266做TCP服务器网络调试助手一直连接不上去?
9533 浏览 3 评论
为什么我的ESP8266 AT指令一直返回error无法正常使用?
7364 浏览 0 评论
4191 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-14 05:44 , Processed in 0.537708 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号