Data Sheet
© Copyright 2013 WIZnet Co.,Ltd. All rights reserved. 
49
iEthernet 
W5200
ESTABLISHMENT : Check received data 
Confirm the reception of the TCP data. 
First method : 
{ 
if (Sn_IR(RECV) == ‘1’) Sn_IR(RECV) = ‘1’; goto Receiving Process stage; 
/* In this case, if the interrupt of Socket n    is activated, interrupt occurs. Refer to IR, IMR 
Sn_IMR and Sn_IR. */ 
} 
Second Method : 
{ 
      if (Sn_RX_RSR0 != 0x0000) goto Receiving Process stage; 
} 
The First method: set the Sn_IR(RECV) to ‘1’ whenever you receive a DATA packet. If 
the host receives the next DATA  packet without setting the Sn_IR(RECV) as ‘1’  in the 
prior DATA packet, it cannot recognize the Sn_IR(RECV) of the next DATA packet. This is 
due to the prior Sn_IR(RECV) and next Sn_IR(RECV) being overlapped. So this method is 
not  recommended  if  the  host  cannot  perfectly  process  the DATA packets  of  each 
Sn_IR(RECV). 
ESTABLISHMENT : Receiving process 
In  this  process,  it  processes  the  TCP  data  which  was  received  in  the  Internal  RX 
memory. At the TCP mode, the W5200 cannot receive the data if the size of received 
data is larger than the RX memory free size of Socket n . If the prior stated condition 
is  happened, the W5200 holds on to  the connection (pauses), and waits until  the  RX 
memory’s free size is larger than the size of the received data. 
{ 
/* first, get the received size */ 
len = Sn_RX_RSR;        // len is received size 
/* calculate offset address */ 
src_mask = Sn_RX_RD&gSn_RX_MASK;        // src_mask is offset address 
/* calculate start address(physical address) */ 
src_ptr = gSn_RX_BASE + src_mask;        // src_ptr is physical start address 
/* if overflow SOCKET RX memory */ 
If((src_mask + len) > (gSn_RX_MASK + 1)) 
{ 
/* copy upper_size bytes of source_ptr to destination_address */ 
upper_size = (gSn_RX_MASK + 1) – src_mask; 
memcpy(src_ptr, dst_ptr, upper_size); 










