| 我现在捣鼓新定义板子驱动SPI接口W5500网口,读写寄存器都成功了。 拼下位机也能拼通。可是无法收发数据。 我仿真了一下:/******************************************************************************** 函数名  : 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                Delay(50);//延时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);                Delay(50);//延时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);} 发现老是超时,进入if((j&IR_TIMEOUT) == IR_TIMEOUT) { return FALSE; } 返回FALSE。 请问高手,哪里出现了问题?谢谢! 
 |