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

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,会把两包 ...

谢谢楼主提醒
落潇 回答时间: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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版