W5100 노이즈로 칩이 죽었을 시 확인 방법

[W5100]
사용 중인 제품 명을 위와 같이 제목에 명기하시면 더 빠른 응답을 받으실 수 있습니다.
본 Template을 삭제 후 문의 내용을 남겨 주세요. :slight_smile:

안녕하세요. W5100의 TCP/IP를 이용한 mcu의 펌웨어와 pc 측 어플리케이션과 통신을 하는 제품을 테스트중에 있습니다.

현재 개발은 완료가 되었는데요, EMI 및 EMC 시험등을 진행하면 W5100 칩이 뻗어버리는 현상이 있어서 이렇게 문의를 남깁니다.

하드웨어적으로는 수정이 불가능한 상태고 펌웨어를 통해 칩이 뻗어버리더라도 보완을 하는쪽으로 정해졌는데, 문제가 몇가지 생겼습니다.

먼저, 환경을 설명해드리면.

  1. MCU를 Server로, PC측 어플을 Client로 사용하고있습니다.
  2. MCU는 소켓 초기화 후 LISTEN 상태를 유지하고있습니다.
  3. PC측 어플 Client에서 접속을 시도하고 확인이되면 서로 접속을하고 소켓의 상태는 ESTABLISH로 유지됩니다.

이와 같은 환경인데,

  • PC와 연결이 된 상태여서 ESTABLISH 상태일 때 노이즈 시험을 통해 칩이 뻗으면 통신이 끊어지고 LISTEN 상태가 되어버립니다.
  • 두번째로, PC와 연결이 되지않은 상태일 때 노이즈 시험으로 칩이 뻗으면 마찬가지로 LISTEN 상태로 유지되고있습니다.
    이와같이 칩이 뻗으면 외부 W5100 reset 핀을 통해 리셋을 걸어주면 일단 칩은 다시 살아납니다.

저는 칩이 뻗으면 소켓이 닫혀서 CLOSE 상태로 가거나 할 줄 알았는데, 아니더군요. 처음 대비책으로 노이즈맞고 칩이 리셋되는거같아, CLOSE 상태로 들어가면 다시 소켓 초기화 등등을 해주는 소스를 넣었는데 CLOSE 상태로 가지않고 그대로 LISTEN 상태에서 죽어버린것을 확인하였습니다.

그래서 칩이 죽었는가 하고 W5100이 가지는 레지스터 정보들 IP부터 MAC … 등등을 다 전후로 찍어봤는데… 칩이 뻗기전과 동일하더군요… IP가 사라졌으면 이를 확인하고 다시 초기화해줬으면 되는데… 정보도 그대로 남아있는데 pc에서 mcu쪽으로 핑테스트를 찍으면 핑이 안나가더군요…

=> 칩에 설정 정보들은 그대로 남아있고 ping테스트 및 통신만 안됩니다. (파이칩에선 물리적 연결이 잘 되있다고 LED도 잘 깜빡이고 있더군요… )

그래서 결론적으로는.
위즈넷 자체 칩이 죽었는지 확인할 수 있는 방법이 있는가? 입니다…
처음에는 그래서 소켓을 한개 더 열어서 UDP로 설정하여 서버쪽으로 더미데이터를 계속 보내다가(정상적으로 서버가 열려있다면 SEND_OK를 인터럽트 레지스터로 반환할테니) 노이즈에 뻗으면 네트워크가 끊어져버릴테니 TIMEOUT이 뜨면 그 때 칩을 초기화시켜줘야겠다 라고 생각을 했는데, UDP 특성상 한번 ARP가 적용되고나면 그 다음에는 랜선이 뽑히든 ~~ 끊기든 무조건 SEND_OK만 떠버리더군요…
그래서 ARP 테이블을 초기화하는 방법을 찾다가, 다른 아이피로 더미데이터를 보내고 다시 돌아오면 ARP 테이블이 한개뿐이라 초기화가 될거라는 글을 봤는데, 이 방법또한 되지가 않더군요…

다른 아이피로 데이터를 보내고 다시 돌아오면 또 그놈은 랜선을 빼버려도 SEND_OK 가 떠버립니다…

아무튼 그래서 지금 해결법이 없어서 곤란한 상황에 놓여있습니다.

서버쪽과 끊겼을 때 확인할 수 있는 방법을 좀 부탁드립니다 ㅜ