W5500을 이용해 loopback test

loopback test를 하고 있는 중입니다.

pc 프로그램 AX1을 사용해서 하고 TCP로 접속을 하였습니다.

처음에 pc에서 send하였을 때는 잘 loopback 되는데 두번째 부터 안되더라구요

그래서 원인을 찾아봤는데 Sn_RX_RSR 이란게 0으로 안되서 계속 w5500에서 보내고 있는것으로

판단되 되고 있어요 그래서 관련된 Sn_RX_RD, Sn_RX_WR를 봤을 때 차이가 나질 않아도 Sn_RX_RSR 이 변경이

되어 있어서 문제가 되고 있습니다. 왜 그런지 문의 드립니다.

Sn_RX_RSR은 SOCKETn RX memory 에 수신되어진 Data 크기 즉 수신크기를 나타냅니다.
Sn_RX_RSR은 Sn_RX_WR과 Sn_RX_RD 값의 차로 Logical하게 자동 계산됩니다.
Sn_RX_WR은 W5500이 자동으로 관리하는 Pointer register이고,
Sn_RX_RD는 User가 관리해해줘야 하는 Pointer regsiter입니다.
User는 현재 Sn_RX_RD 를 시작으로 하여 Sn_RX_WR까지 수신 Data를 원하는 사용자 메모리 영역에 copy를 한 후
Sn_RX_RD = Sn_RX_RD + Copy Data size 로 Update 후 반드시 Sn_CR(RECV) command를 수행하여 Sn_RX_RD update 사실을 W5500에게 알려야 합니다.

Sn_RX_RD를 잘못 관리할 경우 Sn_RX_RSR값은 비정상인 값을 가질 수 있습니다.

해당 처리 코드를 다시 한번 확인하시고, 문제 해결이 되지 않을 경우,
해당 코드를 Post 해주세요.