本帖最后由 比神乐 于 2023-1-17 10:27 编辑
我现在捣鼓新定义板子驱动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(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);
Delay(5);//ÑÓʱ5ms
if((j&IR_TIMEOUT) == IR_TIMEOUT)
{
<font color="#ff0000"> return FALSE; </font>
}
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。
请问高手,哪里出现了问题?谢谢!
|