W5300 client

안녕하세요 학교에서 실험을 하고 있는 학생입니다.
TCP 통신에서 pc를 serve, W5300 client 으로 설정을 할때는 통신이 되지만
그 반대로 설정하기 위해 Sn_DIPR(0x214), Sn_DPORTR(0x212) 를 설정할때 주소에 데이터 값을 넣으면
데이터 값들이 들어가지 않아 연결을 하지 못하고 있습니다. 0x214, 0x212의 레지스터에 데이터를 넣기 위해서 serve일때와는 달리 따로 설정해야 하는 모드, 레지스터 값이 있나요???

안녕하세요.

먼저, Sn_DIPR/Sn_DPROTR을 먼저 설명드리겠습니다.
이 두 register는 실제 Server와 Client가 연결되었을때 쓰게 됩니다.
Server로 사용할경우에는

  1. Sn_PORTR에 값을 쓰고,
  2. Sn_SSR값이 SOCK_LISTEN로 변경이 되고,
  3. Client와의 연결이 성공했다면, 이때 Sn_DIPR/Sn_DPROTR을 쓰여집니다.

우선 제공하고있는 driver를 검토해보시면 좋을 것같습니다.

감사합니다.
EK :smiley:

위에 내용은 잘 이해했습니다. 감사합니다.
W5300을 server로 작동하고 PC를 client로 작동할때는 연결이 잘 되었습니다.
하지만 그 반대로 PC를 client , W5300을 server로 작동할때는 SYN신호가 가지 않는 것을 확인하였습니다.
단지 Listen 상태에서 connetion상태로만 바꾸었습니다.
또한 Sn_SSR의 상태가 ESTABLISHED가 아닌 CLOSED로 바뀌는 것을 확인하였습니다. 그 이유좀 알려주세요
(AX1을 사용중입니다.)
와이어 사크를 첨부하였습니다.


안녕하세요~

client port를 증가해서 동작시켜보셨나요?
답변부탁드립니다^^

감사합니다.

ekkim :slight_smile:

제가 이해를 잘못한거일수도 있는데요
client port를 증가한다는것이 PORT를 지역변수로 설정시킨다음 socket을 불러올때 PORT++로 하라는거죠??
그렇게 했는데 PORT가 증가되서 들어가지만 Sn_SSR이 ESTABLISHED가 되지가 않네요ㅠㅠ

그런데 주어진 driver에서 캡쳐하신거 보시면 DIPR register에는 Write가 되어있는데 안되는거 아닌가요??
연결이 되면 저절로 저장되는거 아닌가요??