×

W5500在单片机中的测试及长字节的发送和接收的详细资料概述

消耗积分:1 | 格式:pdf | 大小:0.21 MB | 2019-04-23

王伟

分享资料个

  正在学习和使用W5500,经测试某宝买到的模块所附带的代码可以用,并且效果还不错。但是在使用过程中就会出现一点点的小问题(在TCP服务器下使用出现的情况):

  单次发送或者接收的字节大于30个字节的时候,程序就会出现跑飞的情况,通过找其中的原因,发现程序的作者所设定的最大的发送字节是30个,超过了30个字节就会出现内存溢出,程序就跑飞了。找到了问题的所在,那就好办了,剩下的就是解决这个问题,看W5500的芯片资料,然后知道了修改的方法,首先看一下W5500的芯片手册对这一块的描述:

  上述图片描述的是,W5500模块在不同模式下所能发送的字节的范围,其中处于TCP模式下最简单,因为在TCP模式下,索要传输的数据比MTU大时,会自动的将传输的数据划分为默认的MTU传输号单(详见W5500芯片手册中的关于Sn_MSSR的描述)

  就这样,修改了原程序中的最大分片长度(在Socket_Init函数中),将其去掉,或者修改为你想要的 字节长度,看到这里你以为已经完了吗?NO,There is another question.

  问题就是所使用的单片机的内部RAM是有限的,不可能得到自己想要的很大的字节,只能说是相当大的字节;对于我现在所用的60S2来说,她的RAM空间是1K那么在定义的时候就不能超过,并且单次发送的字节也不能超过这个字节。如果单次发送的字节超过定义的字节的大小就会出现程序乱跑,具体解释的原因是所定义的数组存放不了所接收的所有字节,内存溢出导致的。可以在源程序中加入一个限定条件,当收到的数据的字节数大于所定义的数组时,只接收数组大小的内容,剩下的内容不再接收,这样就好了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !