WIZnet Developer Forum

[W5500] Command 전송 후 Sn_CR 이 Clear될때까지 최대 시간은 얼마나 걸리나요?

안녕하세요.

데이터시트에는 W5500이 Command를 인식하면 Sn_CR을 자동으로 Clear한다고 되어 있는데
Command 전송 후 자동으로 Clear될 때까지 최대 시간은 얼마나 걸리나요?

CLOSE 명령을 전송 후 Sn_SR이 SOCK_CLOSED로 변경되는 최대 시간은 얼마나 걸리나요?

답변 부탁드립니다.

안녕하세요

command가 clear되는 정확한 시간은
interface 에 따라 다르기 때문에 계산이 어렵습니다.
W5500 core 시간으로만 따지면 1.25us 소요됩니다.
SR 변경시간도 1.25us입니다.

답변 감사합니다.

추가 질문이 있습니다.
ioLibrary의 socket.c 에서 listen 함수에 보면 다음과 같이 되어 있습니다.
while (getSn_SR(sn) != SOCK_LISTEN)
{
close(sn);
return SOCKERR_SOCKCLOSED;
}
listen 명령 후 Sn_SR SOCK_LISTEN으로 변경되는 시간도 1.25us 정도 걸리나요?

CONNECT 명령시 SOCK_INIT에서 SOCK_SYNSENT로 변경되는 시간(W5500 core 시간)은 얼마나 걸리나요?
CLOSE 명령시 SOCK_ESTABLISHED에서 SOCK_FIN_WAIT로 변경되는 시간(W5500 core 시간)은 얼마나 걸리나요?

답변 부탁드립니다.

추가 질문입니다.
Sn_CR과 Sn_SR 변경 시간이 1.25us 밖에 걸리지 않는다면
왜 socket.c에서는 Sn_CR 명령 후 Sn_CR이 Clear 될때까지 무한루프로 기다리나요?
Interface 속도를 감안하더라도 한번만 읽으면 시간은 충분할 것 같은데요?

안녕하세요

Command가 Clear되지않았는데 연속적으로 Command를 설정할경우 칩이 정상적으로 동작하지 않기 때문에 들어있는 코드입니다.
하지만 말씀하신대로 Clear가 바로 되기때문에 지우셔도 괜찮습니다.

시간의 경우 Status마다 다르기 때문에 전부 알려드리기가 어렵습니다.
궁금하신 이유를 알려주실 수 있나요?

이번에 개발하는 제품이 UDP, TCP 서버 (한번에 하나만 허용), TCP Client를 동시에 사용됩니다.
그런데 Connect 함수 같은 경우 Connection 이 이뤄지기 전까지 대기하는데 정상적인 경우는
바로 접속이 되어 상관이 없지만 서버가 죽어 있거나 네트워크 상에 이상이 있을 경우는 이런 대기시간이
문제가 되기 때문에 대기하는 시간을 없애려고 socket.c를 수정하려다 보니 질문드리게 된 것입니다.

그리고 개발하려는 제품 특성상 리셋은 가능하면 되지 않도록 만들어야 하는데 노이즈나 기타 등등의
이유로 인해 W5500이 오동작하거나 CPU의 SPI가 오동작한다면 무한루프에 빠져서 CPU 와치독
리셋하게 되는데 이런 상황을 방지하기 위해 Sn_CR Clear를 기다리는 무한루프에 timeout이 걸리면
W5500과 SPI를 리셋하려고 했습니다.
그래서 timeout을 얼마나 둬야 하는지 궁금해서 질문드린 것입니다.

감사합니다.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.