搜索
bottom↓
回复: 10

W5500获取数据方式的疑问

[复制链接]

出0入0汤圆

发表于 2016-1-2 21:20:16 | 显示全部楼层 |阅读模式
已知:Sn_RX_RSR (Socket n 空闲接收缓存寄存器) [R] [0x0026-0x0027] [0x0000]
          Sn_RX_RSR显示了Socket n接收缓存中已接收和保存的数据大小。
问题:1-为何获得已接收数据长度 要两次相等才推出while循环 如图1,2
           2-对于接收数据看过有两种方式,方式一是直接从Sn_RX_RSR获得len,然后直接读取。
           方式二,先从Sn_RX_RSR获得socketn接收缓存中已接收和保存的数据大小 rx_size,然后从Sn_RX_RD获得的物理地址offset 加上rx_size 与S_RX_SIZE(2048)比较,然后决定怎么接收数据, 如图3,4
           哪种方式都ok?哪种更合适?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2016-1-2 21:42:52 | 显示全部楼层
PHYCFGR (W5500 PHY配置寄存器) [R/W] [0x002E] [0b10111XXX],没看过有人对PHYCFGR进行配置,即使用默认值,那么5~3位的OPMDC为111 全功能,启动自动协商,这是代表几BT全双工还是半双工?

出0入37汤圆

发表于 2016-1-2 23:08:25 | 显示全部楼层
并不是循环两次,实际是一直循环,直找到最近两次相等的。
长度是两个字节,但是实际读取的时候是分别读取高低两个字节,那么读取的时候就不是原子操作,w5500可能会在两次读取之间的时间内改变了长度,这样读取的就有问题了。比较两次读取相等可以确认mcu读取两个字节的长度数据的这个时间内w5500没有修改他

出0入0汤圆

 楼主| 发表于 2016-1-3 09:25:07 | 显示全部楼层
varding 发表于 2016-1-2 23:08
并不是循环两次,实际是一直循环,直找到最近两次相等的。
长度是两个字节,但是实际读取的时候是分别读取 ...

谢谢,对于读取数据方式,你觉得哪种处理更合适,即问题2

出0入0汤圆

 楼主| 发表于 2016-1-4 22:58:51 | 显示全部楼层

没明白哪种方式正确

出0入0汤圆

 楼主| 发表于 2016-1-5 22:55:39 | 显示全部楼层
topdreams 发表于 2016-1-5 12:02
我是直接读出len,然后应用!
理论上都行,实际上,得看看那个熟读更快。 ...

图1是一种处理方式, 图3和4是另一种处理方式,若是图1处理方式没问题, 不懂图3和4为什么要这样处理。

出0入0汤圆

 楼主| 发表于 2016-2-27 23:34:03 | 显示全部楼层
varding 发表于 2016-1-2 23:08
并不是循环两次,实际是一直循环,直找到最近两次相等的。
长度是两个字节,但是实际读取的时候是分别读取 ...

谢谢,我后来在w5500_ds_v107e_160224.pdf中第55页看到了你这样的解释,

出0入0汤圆

 楼主| 发表于 2016-2-27 23:56:58 | 显示全部楼层
topdreams 发表于 2016-1-6 10:15
读两次确认。为了读取数据的可靠,可能是非常大的包。

我觉得,这两个方法都行,一个是计算获得。我觉得 ...

新的理解:
Sn_RXBUF_SIZE是代表接收缓存大小,默认2K,即2048
从Sn_RX_RSR读上来的是 接收缓存中已接收和保存的数据大小,
如果从Sn_RX_RSR读上来的值比Sn_RXBUF_SIZE 还大,即比接收缓存还大,那么在执行读取操作函数时,应该最大只能读取缓存空间大小的数据,应该执行这样的函数recv(SOCK_TCPS,buff,Sn_RXBUF_SIZE);
这个链接内容就是用这种方法 http://blog.csdn.net/wiznet2012/article/details/46313645       

有2点疑问:
1-为什么会出现 如果从Sn_RX_RSR读上来的值比Sn_RXBUF_SIZE 还大,因为手册上明明说着Sn_RX_RSR代表 “接收缓存“中已接收和保存的数据大小
注意已经说了数据是在接收缓存中,比如缓存空间大小2K, 用着空间接收和保存的数据怎么比2K还大?

2-对图3和图4的处理方式 没理解
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 23:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表