W5500 tcp send retranssmission error

유첨 파일과 같이 통신에 아무 문제가 없다가, 어느 순간에, Retranssmission 메세지와 함께, 전송 오류가 발생 됩니다.
패킷 상으로 봤을때, 이전에 날렸던 패킷과 현재 날리는 패킷이 합쳐져서 Retranss 되는데요.
이때 PC측에서 이메세지를 못받고, 5초간 응답이 없으므로 저와의 연결을 끊어 버립니다.

어떤 원인이 있는지 궁굼합니다.
응답을 연속으로 두번패킷을 날리는것과 연관이 있을수 있나요??


안녕하세요.

어떤 모듈로 어떤 예제를 사용해서 구동하셨는지 정확하게 설명이 가능하실까요??

그리고 와이어샤크의 전체 파일을 보내주셔야 저희도 분석이 가능하므로 자료 부탁드립니다.

감사합니다.

w5500이며 모듈은 아니고, 저희 회로내에 w5500을 넣었습니다.
loopback test 기반으로 tcp 패킷만 송수신 하는것이고,

기 문제된 send 소스 입니다.

          /*while(  size != sent_size )
	{
		ret = send(USE_SOCKET_NUM, buffer, size, (bool)0);
		
		if(!(getLink()&PHY_LINK_UP)) {
			ret = -1;
		}
		if(getSn_SR(USE_SOCKET_NUM) != SOCK_ESTABLISHED){
			ret = -1;
		}
		if(ret < 0)
		{
			#ifdef USER_DEBUG_USE
			//printf("TCP - Send ERROR!\r\n");
			#endif
			close(USE_SOCKET_NUM); 
			break;
		}
		sent_size += ret;
	}*/

위와 같이 send Test 했을때는, 잘 사용 중이다가 갑자기. IP Number가 192.168.0.101에서 → 192.0.0.101로 변경되서 전송되는 문제도 발생되었습니다.

그런게 위 소스를
sendto(USE_SOCKET_NUM,buffer,size,Chconfig_Type_Def.destip, Chconfig_Type_Def.port);
이걸로 대체 하니까 위와 같은 문제는 나타나지 않습니다.

안녕하세요.

구성하신 장비를 DHCP를 이용하여 IP할당을 받아서 사용하시는 건가요??

IP가 변경되서 전송되는 것은 몇가지 문제가 예상이 되는데요…

  1. IP할당 해주는 장비의 문제.
    → IP할당 장비의 DDNS가 ON되어, IP를 수시로 업데이트하는지 체크.
    → 장비 자체에서 IP 할당이 정상적으로 이루어지는 체크.

  2. 구성하신 하드웨어의 문제.
    → 하드웨어적으로 ESD라던가, 전원단의 불안정한 문제로 인해 발생할 수도 있습니다. 해당 회로도 검토 및 PCB 검토가 필요해보입니다.

  3. 코드의 문제.
    → 만약 위 2가지 문제에서도 문제가 없다면, 문제는 코드밖에 없습니다.
    → 위 두 가지 상황 검토 후에도 위와 같은 상황이 발생한다면 전체적인 코드 검토가 필요할 것으로 생각됩니다.

감사합니다.