W5500一直PING不通是怎么回事啊???

2019-07-21 01:51发布

连接方式为               STM32F103RCT6--------W5500-----网络变压器-----IP175G--------RJ45经测试,W5500寄存器可以读写,交换机芯片也可以正常使用,但就是PING不通,用的是官网提供的测试代码,只修改了硬件复位引脚,SPI接口一样
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
游刃有余
1楼-- · 2019-07-21 21:02
mack13013 发表于 2017-12-17 17:10
哎,装逼失败了。。。。

检测网关服务器时,返回值一直是0,收不到服务器端的SYN/ACK数据包,不知道是不是服务器端就压根没收到客户端发送的连接请求。
mack13013
2楼-- · 2019-07-22 00:58
 精彩回答 2  元偷偷看……
游刃有余
3楼-- · 2019-07-22 06:09
mack13013 发表于 2017-12-17 18:07
上位机的connect返回值是0?
这是没错误发生啊
MSDN中关于connect的返回说明

32单片机C程序在线调试,初始化W5500端口0为TCP客户端,PC机为TCP服务端,然后5500向PC机发送连接请求
游刃有余
4楼-- · 2019-07-22 11:48
mack13013 发表于 2017-12-17 18:07
上位机的connect返回值是0?
这是没错误发生啊
MSDN中关于connect的返回说明

*名    称:W5500_DetectGateway()       
*功    能:检查网关服务器
*出口参数:1(0xFF)=成功 0(0x00)=失败         
*说    明:无                          
*********************************************/
u8 W5500_DetectGateway(void)
{          
        u8 ip_adde[4];   //==========192.168.1.129
        ip_adde[0]=W5500Info.LocalIP[0];
        ip_adde[1]=W5500Info.LocalIP[1];
        ip_adde[2]=W5500Info.LocalIP[2];
        ip_adde[3]=W5500Info.LocalIP[3]+41;   
        //检查网关及获取网关的物理地址
        W5500_WriteSocketReg4Byte(0,Sn_DIPR,ip_adde);//向目的地址寄存器写入与本机IP不同的IP值
        W5500_WriteSocketReg2Byte(0, Sn_DPORTR,8080); //设置端口0-目的/远程端口
        W5500_WriteSocketReg1Byte(0,Sn_MR,MR_TCP);//设置socket为TCP模式
        W5500_WriteSocketReg1Byte(0,Sn_CR,OPEN);//打开Socket       
        delay_ms(5);//延时5ms           
        if(W5500_ReadSocketReg1Byte(0,Sn_SR) != SOCK_INIT)
        {//如果socket打开失败
                W5500_WriteSocketReg1Byte(0,Sn_CR,CLOSE);//打开不成功,关闭Socket
                return 0;//返回0(0x00)
        }                                                  
        W5500_WriteSocketReg1Byte(0,Sn_CR,CONNECT);//设置Socket为Connect模式         
        do
        {
                u8 j=0;
                j=W5500_ReadSocketReg1Byte(0,Sn_IR); //读取Socket0中断标志寄存器
                if(j!=0)
                {
                        W5500_WriteSocketReg1Byte(0,Sn_IR,j);
                }
                delay_ms(5); //延时5ms
                if((j&IR_TIMEOUT) == IR_TIMEOUT)
                {       
                        return 0;       
                }
                else if(W5500_ReadSocketReg1Byte(0,Sn_DHAR) != 0xff)
                {
                        W5500_WriteSocketReg1Byte(0,Sn_CR,CLOSE); //关闭Socket
                        return 1;                                                       
                }
        }while(1);
}
游刃有余
5楼-- · 2019-07-22 12:34
 精彩回答 2  元偷偷看……
WISIOE2016
6楼-- · 2019-07-22 12:56
游刃有余 发表于 2017-12-18 14:46
谢谢这位大哥这么认真的回答,经多次测试,发现5500到交换机芯片的信号线接地了,哈哈,把那段线割断问题 ...

你好,support@wisioe.com我们有提供技术支持 ,W5500代理商 炜世科技

一周热门 更多>