完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
W5500的学习和使用拷贝源程序、测试程序、修改传输字节正在学习和使用W5500,经测试某宝买到的模块所附带的代码可以用,并且效果还不错。但是在使用过程中就会出现一点点的小问题(在TCP服务器下使用出现的情况): 单次发送或者接收的字节大于30个字节的时候,程序就会出现跑飞的情况,通过找其中的原因,发现程序的作者所设定的最大的发送字节是30个,超过了30个字节就会出现内存溢出,程序就跑飞了。 找到了问题的所在,那就好办了,剩下的就是解决这个问题,看W5500的芯片资料,然后知道了修改的方法,首先看一下W5500的芯片手册对这一块的描述: 上述图片描述的是,W5500模块在不同模式下所能发送的字节的范围,其中处于TCP模式下最简单,因为在TCP模式下,索要传输的数据比MTU大时,会自动的将传输的数据划分为默认的MTU传输号单(详见W5500芯片手册中的关于Sn_MSSR的描述) 就这样,修改了原程序中的最大分片长度(在Socket_Init函数中),将其去掉,或者修改为你想要的字节长度,看到这里你以为已经完了吗?NO,There is another question. 修改完之后是不能用的(我尝试了很多次),一个偶然的机会发现在引入头文件下面定义一个比要发送的字节小的数组,就可以实现了,这里可能的原因是单片机的内存分配的问题。我的测试结果: 这里发送的字节已经超过了30个字节,现在已经基本大功告成。 另外再说说在其中所遇到的小问题: 1.使用计算机来ping单片机的时候,发生里偏移(看图来说明): 从图中可以看出来它的偏移零界点为119个字节,超过这个字节就会发生偏移。但是按道理来讲的话,我们已经设置好了W5500的最大传输字节,我们肯定设置的字节是超过119的,但是还会出现这样的情况,所以我猜测可能是其在封装的时候其ping的字节数已经固化在其中了,这就导致了ping出现这样的问题。另外,ping的时候所使用的ICMP协议,该协议是TCP/IP协议族的一个子协议,ICMP有一个8字节的包头,所应该是固定的传输为128个字节。另外我在网上看到大多数人都碰到过这样的问题,当然这只是一个猜测而已。
|
|
相关推荐
9 个讨论
|
|
qiniq 发表于 2017-9-19 21:27 原来说的那个不对,我今天又尝试了一下,把原来的那个用于接收和发送的数组改成500然后发现,W5500模块不运行了,也就是说单片机根本就没有来控制W5500的运行,反而我将那个用于接收和发送的数组干成200的时候,能够正常的运行,原来我遇到一个问题是ADDRESS SPACE OVERFLOW,但是在此处也没有报这个错,说明数据存储器是没有用完的,但是我也不知道为什么,兄弟,有时间你试一下,改成500的时候是否还能运行,看看为什么,不知道你是否会遇到和我一样的问题,我就是比较纠结这个。 |
|
|
|
|
|
qiniq 发表于 2017-9-19 21:27 原来说的那个不对,我今天又尝试了一下,把原来的那个用于接收和发送的数组改成500然后发现,W5500模块不运行了,也就是说单片机根本就没有来控制W5500的运行,反而我将那个用于接收和发送的数组干成200的时候,能够正常的运行,原来我遇到一个问题是ADDRESS SPACE OVERFLOW,但是在此处也没有报这个错,说明数据存储器是没有用完的,但是我也不知道为什么,兄弟,有时间你试一下,改成500的时候是否还能运行,看看为什么,不知道你是否会遇到和我一样的问题,我就是比较纠结这个。 |
|
|
|
|
|
木之衣 发表于 2017-9-25 21:19 我又结合了编译的结果和网上资料,发现貌似是Xdata的问题,我分别使用200和500编译的结果为 对比其中的问题,就只有Xdata不一样,我用的单片机是STC12C5A60S2,网上说这个芯片的XDATA没有那么大,应该为题就是在这个上面,今天没时间了,有时间我在尝试一下,把那个数组定义在其他的地方应该就没有问题了。 |
|
|
|
|
|
qiniq 发表于 2017-9-19 21:27 是单片机的问题,我使用的这种单片机STC12C5A60S2的RAM只有1K左右的大小,当定义到500的时候超过了RAM的大小,导致整个程序在写入到单片机中时出现了问题,程序不能运行,所以也就没法控制W5500了。当然我从上查的资料,可以根据需要来扩展RAM,再有就是用不到那么大的数组就不定义那么大 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
474个成员聚集在这个小组
加入小组5093 浏览 1 评论
12089 浏览 5 评论
3498 浏览 2 评论
2964 浏览 0 评论
12668 浏览 2 评论
w5500 作为tcp server,客户端异常发送【RST,ACK】断开连接问题
1371浏览 1评论
1064浏览 0评论
使用stm32,通过spi的dma 收发,运行多次读写以后w5500发送正常,接收卡死,高人帮忙看看
6284浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 03:36 , Processed in 0.561586 second(s), Total 60, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号