搜索
bottom↓
回复: 9

W5500作为客户端直接连接电脑和交换机失败。通过路由器可...

[复制链接]

出0入0汤圆

发表于 2014-9-22 08:31:15 | 显示全部楼层 |阅读模式
/*******************************************************************************
* 函数名  : Detect_Gateway
* 描述    : 检查网关服务器
* 输入    : 无
* 输出    : 无
* 返回值  : 成功返回TRUE(0xFF),失败返回FALSE(0x00)
* 说明    : 无
*******************************************************************************/
unsigned char Detect_Gateway(void)
{
         unsigned char ip_adde[4];
         ip_adde[0]=IP_Addr[0]+1;
         ip_adde[1]=IP_Addr[1]+1;
         ip_adde[2]=IP_Addr[2]+1;
         ip_adde[3]=IP_Addr[3]+1;

         //检查网关及获取网关的物理地址
        Write_W5500_SOCK_4Byte(0,Sn_DIPR,ip_adde);//向目的地址寄存器写入与本机IP不同的IP值
        Write_W5500_SOCK_1Byte(0,Sn_MR,MR_TCP);//设置socket为TCP模式
        Write_W5500_SOCK_1Byte(0,Sn_CR,OPEN);//打开Socket        
         os_dly_wait (100);//Delay(5);//延时5ms         
         
         if(Read_W5500_SOCK_1Byte(0,Sn_SR) != SOCK_INIT)//如果socket打开失败
        {
                 Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
                 return FALSE;//返回FALSE(0x00)
         }

         Write_W5500_SOCK_1Byte(0,Sn_CR,CONNECT);//设置Socket为Connect模式                                                

         do
         {
                 u8 j=0;
                 j=Read_W5500_SOCK_1Byte(0,Sn_IR);//读取Socket0中断标志寄存器
                if(j!=0)
                 Write_W5500_SOCK_1Byte(0,Sn_IR,j);
                 os_dly_wait (10);//Delay(5);//延时5ms
                 if((j&IR_TIMEOUT) == IR_TIMEOUT)
                 {
                         return FALSE;        
                 }
                 else if(Read_W5500_SOCK_1Byte(0,Sn_DHAR) != 0xff)
                 {
                         Write_W5500_SOCK_1Byte(0,Sn_CR,CLOSE);//关闭Socket
                         return TRUE;                                                        
                 }
         }while(1);
}
直接连接电脑的时候死在了这个函数里。Read_W5500_SOCK_1Byte(0,Sn_DHAR) 的返回值一直是ff

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

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

出0入0汤圆

发表于 2014-9-22 08:48:58 | 显示全部楼层
W5500不支持极性翻转,你把网线换成交叉线试试看?

出0入0汤圆

 楼主| 发表于 2014-9-22 12:04:07 | 显示全部楼层
谢谢楼上,问题找到了。用交叉网线就可以了

出0入0汤圆

发表于 2014-10-7 19:26:55 | 显示全部楼层
学习了。

出0入4汤圆

发表于 2014-10-7 19:39:40 | 显示全部楼层
学习了 。。

出0入0汤圆

发表于 2014-12-31 22:13:56 | 显示全部楼层
我是新手,很好奇,上面的程序里,do {  }while(1)始终为真,程序跑进去不就死在里面了么?看不太懂,,,,


出0入0汤圆

发表于 2014-12-31 22:23:10 | 显示全部楼层

学习了 。。。最近在学以太网通信

出0入0汤圆

发表于 2015-1-5 08:29:32 | 显示全部楼层
hover_007 发表于 2014-9-22 12:04
谢谢楼上,问题找到了。用交叉网线就可以了

        你之前用普通网线把模块和电脑直接连接,联不通是么?换了就可以了???我也遇到这个问题,。。。

出0入0汤圆

发表于 2015-1-15 18:51:46 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2015-1-17 10:30:40 | 显示全部楼层
李修成 发表于 2014-12-31 22:13
我是新手,很好奇,上面的程序里,do {  }while(1)始终为真,程序跑进去不就死在里面了么?看不太懂,, ...

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

本版积分规则

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

GMT+8, 2024-8-25 22:16

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

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