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

2019-07-21 01:51发布

连接方式为               STM32F103RCT6--------W5500-----网络变压器-----IP175G--------RJ45经测试,W5500寄存器可以读写,交换机芯片也可以正常使用,但就是PING不通,用的是官网提供的测试代码,只修改了硬件复位引脚,SPI接口一样
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
游刃有余
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);
}

一周热门 更多>