w5300은 16bit 모드, 클라이언드로 사용하고 있습니다.
w5300의 상대편에서 send ok를 하지 않고 비정상 종료 시 Sn_SSR 값이 0x10 나오며, 해결 방법은 errata에 나와있는데요
errata를 보고 그대로 하였는데 계속 0x10 값이 나와서 문의 드립니다.
Sn_SSR 값이 0x10인것을 확인하고 errata의 내용대로 수행을하고 Sn_SSR 값을 읽어보면 0x00 입니다.
그래서 다시 TCP 클라이언트 모드로 재설정을하고 대기하여도 접속이 되지않아서 Sn_SSR 값을 읽어보면 0x10으로 나옵니다.
동작이 되지않아서 errata 내용을 수행하는곳에 MR을 통해서 w5300칩을 리셋하도록 하면 정상 동작합니다.
이것으로 봐서 제가 errata와 다른게 했거나 또는 errata대로 해도 해결이 되지 않은것 같습니다.
아래 errata를 보고 소스에 적용한 것을 그대로 긁어왔습니다.
S[ch].MR = W5300_Sn_MR_UDP; // 0x02
S[ch].PORTR = 5000;
S[ch].CR = W5300_Sn_CR_OPEN; // 0x01
S[ch].DIPR0 = 0x0000;
S[ch].DIPR2 = 0x0001;
S[ch].DPORTR = 5000;
S[ch].TX_FIFOR = 0x0000;
S[ch].TX_WRSR0 = 0;
S[ch].TX_WRSR2 = 1;
S[ch].CR = W5300_Sn_CR_SEND; // 0x20
TSK_sleep(tick); // os sleep
S[ch].IR = 0x00FF;
S[ch].CR = W5300_Sn_CR_CLOSE; // 0x10
추가로 칩 전체가 아닌 소캣 1채널에 대해서만 리셋 할 수 있는방법는 없는지 문의 드립니다.