你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F407-LwIP_TCP_Echo_Server移植中的问题

[复制链接]
tjluping 提问时间:2014-11-18 23:27 /
我是参考LwIP_TCP_Echo_Server这个例子,用的STM32F407移植的,网络连接正常,通信都通了,但是最近严格测试的时候发现个奇怪的问题。
测试环境:1。电脑端打开网络助手,用tcp_client模式连接板子(tcp_server),并成功建立连接
2。用网络助手向板子(tcp_server)发送数据


出现问题现象如下:当我手动发送数据或自动发送间隔大于250ms时,板子(tcp_server)端接收数据正常,但当我自动发送间隔小于100ms时,板子(tcp_server)端接收一包数据,我解析出来会是我发送的两包或三包。问题例子如下,当我电脑端发送“01 03 00 20 00 08 45 C6”这包数据时,出现问题时板子会接收到“01 03 00 20 00 08 45 C6 01 03 00 20 00 08 45 C6 01 03 00 20 00 08 45 C6”这样一组数据,正好是我发送数据的整包数,这样我的应用程序就没法解析啦,整了两天了也没弄出来,望高手指点下。


我对问题的分析:因为例子中,对以太网包用的是轮询模式,所以我怀疑是轮询模式慢,当我发送数据包间隔小于100ms时,以太网DMA的收数据快于我处理接收数据的速度,所以会累积多个数据包,导致上述现象的发生,但没找到解决办法。



收藏 1 评论9 发布时间:2014-11-18 23:27

举报

9个回答
tjluping 回答时间:2014-11-18 23:33:31
不知我的问题说明白了没?有看了的跟我说下,不行,我再补充说明
arm8686 回答时间:2014-11-19 09:11:53
如果不改变轮询的方式,可以在包的数据里头增加格式定义,例如帧头帧尾、每帧的字节数、异或校验等等,这就相当于你们自定义一个简单的协议。

如果没法定义数据格式,那可以试试中断的方式,那就是 MCU 端的事情,还是得写不少的代码,以及对这款 MCU 网络部分各个寄存器的理解,或许还可以加上 PHY 层 IC 的寄存器。

我记得 PHY 层 IC 也是可以设置中断输出的,但不知道能不能在收到一个包之后就输出一个 IO 信号。如果可以的话,那 MCU 就需要有一个 IO 口与之配合。

总之,为了整个系统稳定运行,工作量都不会小。
tjluping 回答时间:2014-11-19 12:36:28
arm8686 发表于 2014-11-19 09:11
如果不改变轮询的方式,可以在包的数据里头增加格式定义,例如帧头帧尾、每帧的字节数、异或校验等等,这就 ...

首先感谢您的热心答复。对于您说的在数据里增加协议字段,这个不太适合我这个项目。要是采用中断方式,DMA收到一包数据触发中断,但STM32F4的demo程序里都是轮询的,没有中断的例子,在网上查了下也没找到。不知您那有这方面资料,最好是例程。PHY层IC这个倒没怎么注意过,回头看看手册。
tjluping 回答时间:2014-11-22 19:57:40
    问题解决了,发现不是我程序的问题,是网络助手的问题,网络助手要是发送数据间隔小于100ms,会把两包或更多数据一起打包发送出去,用wireshark抓包抓到的,希望大家以后也注意这个问题啊
沐紫 回答时间:2014-11-24 09:29:05
tjluping 发表于 2014-11-22 19:57
问题解决了,发现不是我程序的问题,是网络助手的问题,网络助手要是发送数据间隔小于100ms,会把两包 ...

谢谢楼主提醒
michael83 回答时间:2015-10-28 14:26:12
好问题,谢谢楼主的分享。
我在使用过程中,发现407的tcp,总是出现中断的现象,不知为何?
不知道楼主使用网络的过程中,有没有ping包掉包的情形?
谢谢。
stationary0823 回答时间:2016-12-12 10:56:28
楼主您好!我在st官网找了好久它的例程,一直没有找到,请问在官网的哪里啊?
5265325 回答时间:2016-12-12 10:59:12
lanlan111222 回答时间:2017-12-28 16:34:51
楼主你好,我也遇到同样问题,我从客户端每次发送512字节,自定义了包头。但是板子接收到的大小不等,用wareshark抓包发现包大小由1460的,78长度的等等,不是512整数倍。wareshark抓到的长度就是arm收到的包长度,这样等于好几包拼成一个,或者半个包之类的,导致接收端无法解析。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版