---
title: "W5300 Server관련 문의"
url: "https://maker.wiznet.io/forum/10287"
markdown_url: "https://maker.wiznet.io/forum/10287/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "yskim"
created: "2014-06-05T10:24:16+09:00"
last_activity: "2017-05-04T08:33:09+09:00"
language: "en"
views: 1142
replies: 2
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# W5300 Server관련 문의

## Question

Asked by yskim on 2014-06-05 in Ethernet Chips.

void Check_tcps(SOCKET s, uint16 port, uint8* buf, uint16 mode)
{
uint32 len;
#ifdef *SIMULATION*
len = recv(s,buf,len); // recv
CommandCheck(len);// for test
return;
#endif

switch(getSn_SSR(s)) // check SOCKET status
{ // ------------

case SOCK_ESTABLISHED: // ESTABLISHED?
if(Net.SendFlag != 1)
{
if(getSn_IR(s) & Sn_IR_CON) // check Sn_IR_CON bit
{
PrintString(“%d : Connect OK\r\n”,s);
setSn_IR(s,Sn_IR_CON); // clear Sn_IR_CON
}

```
	   if((len=getSn_RX_RSR(s)) > 0) // check the size of received data
	   {
		   len = recv(s,buf,len);     // recv
		   Net.Rx_Length = len;
		   Net.ReceivedFlag = 1;
```

==> 여기서 *** CommandCheck(len,Net.Rx_Data);// yskim Add
}
}
else
{
Net.SendFlag = 0;
if(Net.Tx_Length != send(s,Net.Tx_Data,Net.Tx_Length)) // send
{
PrintString(“%d : Send Fail.len=%d\r\n”,s,Net.Tx_Length);
}
}
break;
// ---------------
case SOCK_CLOSE_WAIT: // PASSIVE CLOSED
disconnect(s); // disconnect
PrintString(“SOCK_CLOSE_WAIT\r\n”);
break;
// --------------
case SOCK_CLOSED: // CLOSED
close(s); // close the SOCKET
PrintString(“SOCK_CLOSED\r\n”);
socket(s,Sn_MR_TCP,port,mode); // open the SOCKET
PrintString(“SOCK_OPEN\r\n”);
break;
// ------------------------------
case SOCK_INIT: // The SOCKET opened with TCP mode
listen(s); // listen to any connection request from “TCP CLIENT”
PrintString(“%d : LOOPBACK_TCPS(%d) Started.\r\n”,s,port);
break;
default:
break;
}
}

## ====================== SHAR : 00:08:dc:00:b7:d9 GWR : 192.168.001.001 SUBR : 255.255.255.000 SIPR : 192.168.001.100

SOCK_CLOSED
SOCK_OPEN

Receive from Lan Length fail. *** 인쇄됨
Length 21086adea
LOOPBACK_TCPS(5000) Started.

==============================================
전원이 켜지면 초기화 후에 상기와 같이 인쇄 됩니다.
W5300 16bit Source를 기반으로 DSP에 포팅해서 사용 중입니다.
43장의 Board를 생산하였는데 34장에서는 문제가 발생되지 않고
9장에서 상기와 같은 문제가 발생됩니다.

SOCK_OPEN후에 큰값으로 Receive Data가 있는 것으로 나타납니다.
Board 불량을 생각해서 여러차례 검사와 재납땜으로도 해결이 안되고 있습니다.

프로그램 부분에서 잘못될 여지가 없을까요?[list][/list]

## Replies

### Reply 1 by yskim, 2014-06-10

불량 Board 9장중

Case1
Case1
1장은 무한 루프 반복
void setSn_CR(SOCKET s, uint16 com)
{
IINCHIP_WRITE(Sn_CR(s),com);
while(IINCHIP_READ(Sn_CR(s))); // wait until Sn_CR is cleared. &lt;===여기서 무한 루프를 반복하는
}

## ====================== SHAR : 00:08:dc:00:b7:d9 GWR : 192.168.001.001 SUBR : 255.255.255.000 SIPR : 192.168.001.100

인쇄후에 무한 루프를 반복하고 있음

Case2 – 2장
void Check_tcps(SOCKET s, uint16 port, uint8* buf, uint16 mode)
{
uint32 len;

switch(getSn_SSR(s)) // check SOCKET status
{ // ------------

case SOCK_ESTABLISHED: // ESTABLISHED?
if(Net.SendFlag != 1)
{
if(getSn_IR(s) & Sn_IR_CON) // check Sn_IR_CON bit
{
PrintString(“%d : Connect OK\r\n”,s);
setSn_IR(s,Sn_IR_CON); // clear Sn_IR_CON
}

```
	   if((len=getSn_RX_RSR(s)) > 0) // check the size of received data
	   {
		   len = recv(s,buf,len);     // recv
		   Net.Rx_Length = len;
		   Net.ReceivedFlag = 1;
```

// CommandCheck(len,Net.Rx_Data);// yskim Add
}
}
else
{
Net.SendFlag = 0;
if(Net.Tx_Length != send(s,Net.Tx_Data,Net.Tx_Length)) // send
{
PrintString(“%d : Send Fail.len=%d\r\n”,s,Net.Tx_Length);
}
}
break;
// ---------------
case SOCK_CLOSE_WAIT: // PASSIVE CLOSED
disconnect(s); // disconnect
PrintString(“SOCK_CLOSE_WAIT\r\n”);
break;
// --------------
case SOCK_CLOSED: // CLOSED
close(s); // close the SOCKET
PrintString(“SOCK_CLOSED\r\n”);
socket(s,Sn_MR_TCP,port,mode); // open the SOCKET
PrintString(“SOCK_OPEN\r\n”);
break;
// ------------------------------
case SOCK_INIT: // The SOCKET opened with TCP mode
listen(s); // listen to any connection request from “TCP CLIENT”
PrintString(“%d : LOOPBACK_TCPS(%d) Started.\r\n”,s,port);
break;
default:
break;
}
}

getSn_SSR(s)의 Return 값이 0x14가 나타남 - 다수의 경우

getSn_SSR(s)가 0x14가 나올수 있나요?

아직 전체적인 파악을 못하고 있습니다.

### Reply 2 by yskim, 2014-06-10

W5300 Pin66 /RESET가 정상적으로 Reset되지않아서 발생한 문제들이었습니다.

RESET이 잘되는줄 알았는데 codeing중에 오류가 있었습니다.

답변 감사드립니다.

---

Source: https://maker.wiznet.io/forum/10287
