보드 하나에 W5500 2개를 이용 내부, 외부 통신

안녕하세요.
우선 소스에 time_out 설정을 하였습니다.
MCU Reset은 없어졌는데요. connect 함수 안에 while 문 안으로 들어가 timeout으로 return 됩니다. 그래서 MCU Reset은 없어졌구요 하지만 getSn_Sr 의 상태값은 0x00->0x13 반복됩니다.
w5500에서 리셋 되는것 같습니다.
제가 코딩한 부분 첨부하겠습니다.

wiz_NetInfo gWIZNETINFO = {
	        					.mac	= { 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 },	// Mac address
								.ip		= { 192, 168, 1, 210 },                     // IP address
								.gw		= { 192, 168, 1, 1},						// Gateway
								.sn		= { 255, 255, 255, 0},						// Subnet mask
								.dns	= { 8, 8, 8, 0},							// DNS Server
								.dhcp	= NETINFO_STATIC
	    				  };

wiz_NetTimeout gwiztimeout = { .time_100us = 10000};

void InitUserEthernetDrvA(void)
{


	InitUserSpiDrvA();

	reg_wizchip_cs_cbfunc(SpiDrv_Enable_CSA, SpiDrv_Disable_CSA);
	reg_wizchip_spi_cbfunc(SpiDrv_ReadA, SpiDrv_WriteA);


	uint8_t memConf[2][8] = {{2, 2, 2, 2, 2, 2, 2, 2}, {2, 2, 2, 2, 2, 2, 2, 2}};

	// allocate internal TX/RX Memory
	if(ctlwizchip(CW_INIT_WIZCHIP,(void*)memConf) == -1)
	{
#ifdef DBG_ON
		printf("  Ethernet : MEMORY CONFIG ERR.\r\n");
#endif
		//while(1);
	}

	// Net Configuration
	NetConf();
}


void main (void){
		if(TimeTask.bit.Task_100ms==TRUE)
		{

         EthernetDrv_TcpSvSockOpen(0,5000);
         SendEthernetPacket_Shuttle();

            
			Task_100ms();           // 100ms 체크

		//	Load_EventCnt();        // 로그 데이터 갱신

		//	Check_SelectBtn_IN();   // OLED 입력 버튼

		//	Disp_Info(DispPage_uc); // OLED 갱신
		}

}
int16 EthernetDrv_TcpSvSockOpen(Uint16 sNum, Uint16 sPort )
{

    
    
    uint8_t destip[4] =     {192, 168, 1, 211}; // pc ip 설정 
    //uint16_t destport =     2000;               // pc TOOL PORT 설정
    
    static uint16_t any_port =  5000;
    
	if(ChkPhyLink(sNum) == false)
	{
		socketclose(sNum);

		return -1;
	}

	/*
	TimerDrv_SetTimeOut(ethTimCnter, 5000);

	//while(wizphy_getphylink() == PHY_LINK_OFF)
	while(ChkPhyLink(sNum) == false)
	{
		if(TimerDrv_IsTimeOut(ethTimCnter) == true)
		{
			return -1;
		}
	}
	*/

	if(ChkTcpSockConnect(sNum) == false)
	{

		//NetConf();

		TimerDrv_SetTimeOut(ethTimCnter, 3000);

		//while(1)
		//{
			if(TimerDrv_IsTimeOut(ethTimCnter) == true)
			{
				socketclose(sNum);
#ifdef DBG_ON
				printf("%d : TCP Server Connection TimeOut (sPort %d)\r\n", sNum, sPort);
#endif

				return 0;
			}
            get_data=getSn_SR(sNum);
			switch(getSn_SR(sNum))
			{
				case SOCK_CLOSED:
                    socketclose(sNum);
                    
					if(socket(sNum, Sn_MR_TCP, any_port++,0x00) != sNum)
					{
#ifdef DBG_ON
						printf("%d : TCP Server Start Fail (sPort %d)\r\n", sNum, sPort);
#endif
						return -2;
					}
                    // if(any_port == 0xffff) any_port = 5000;

					//printf("%d : TCP Server Start (sPort %d)\r\n", sNum, sPort);

					setSn_KPALVTR(sNum, 1);	// Keep Alive 5Sec

					break;
				case SOCK_INIT :
                   
					if(connect(sNum,destip,sPort)!= SOCK_OK)//listen(sNum) != SOCK_OK) //listen client 
					{
#ifdef DBG_ON
						printf("%d : TCP Server Listen Fail (sPort %d)\r\n", sNum, sPort);
#endif
						return -3;
					}

#ifdef DBG_ON
					printf("%d : TCP Server Listen (sPort %d)\r\n", sNum, sPort);
#endif

					break;
               case SOCK_CLOSE_WAIT :
                   disconnect(sNum);

					break;
				case SOCK_ESTABLISHED:
					if(getSn_IR(sNum) & Sn_IR_CON)
					{
						setSn_IR(sNum, Sn_IR_CON);

#ifdef DBG_ON
						uint8_t dIp[4];
						uint16_t dPort;

						getSn_DIPR(sNum, dIp);
						dPort = getSn_DPORT(sNum);


						printf("%d : Connected - %d.%d.%d.%d (dPort %d)\r\n",sNum, dIp[0], dIp[1], dIp[2], dIp[3], dPort);
#endif

						return 1;
					}
					break;
			}
		//}
	}

	return 1;
}

서버로는 되는데 클라이언트는 왜 안되는걸까요?
PC IP설정은 192.168.1.211로 설정하였습니다.
허큘레스 TCP 서버로 하고 포트는 5000번 했습니다.

그리고 포럼에 이런 현상이 많은 분들이 있으신데 해결된 답변이 보이지가 않습니다.
아래는 이런 현상이 있어 포럼에 글 올린 주소 입니다,